移植Python3到TQ2440(一)
平台
概述
正文
一、工具链
登录这个网址:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
我们这里使用的是最新的Linux解压版:arm-2014.05-29,由于TQ2440用的arm9属于armv4t架构,所以在编译运行于TQ2440上的程序的时候需要给工具链传递参数-march=armv4t,为了简单起见,我们可以用下面的办法:
( pengdl@ubuntu | ~/Study/cross_compile/arm-2014.05/bin | Remote:True )
$ls -l
total
lrwxrwxrwx pengdl pengdl Apr : arm-linux-addr2line -> arm-none-linux-gnueabi-addr2line*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-ar -> arm-none-linux-gnueabi-ar*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-as -> arm-none-linux-gnueabi-as*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-c++ -> arm-none-linux-gnueabi-c++*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-c++filt -> arm-none-linux-gnueabi-c++filt*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-cpp -> arm-none-linux-gnueabi-cpp*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-cs -> arm-none-linux-gnueabi-cs*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-cs-daemon -> arm-none-linux-gnueabi-cs-daemon*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-elfedit -> arm-none-linux-gnueabi-elfedit*
-rwxrwxr-x pengdl pengdl Apr : arm-linux-g++*
-rwxrwxr-x pengdl pengdl Apr : arm-linux-gcc*
-rwxrwxr-x pengdl pengdl Apr : arm-linux-gcc-4.8.*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gcc-ar -> arm-none-linux-gnueabi-gcc-ar*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gcc-nm -> arm-none-linux-gnueabi-gcc-nm*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gcc-ranlib -> arm-none-linux-gnueabi-gcc-ranlib*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gcov -> arm-none-linux-gnueabi-gcov*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gdb -> arm-none-linux-gnueabi-gdb*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-gprof -> arm-none-linux-gnueabi-gprof*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-ld -> arm-none-linux-gnueabi-ld*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-nm -> arm-none-linux-gnueabi-nm*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-objcopy -> arm-none-linux-gnueabi-objcopy*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-objdump -> arm-none-linux-gnueabi-objdump*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-ranlib -> arm-none-linux-gnueabi-ranlib*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-readelf -> arm-none-linux-gnueabi-readelf*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-size -> arm-none-linux-gnueabi-size*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-strings -> arm-none-linux-gnueabi-strings*
lrwxrwxrwx pengdl pengdl Apr : arm-linux-strip -> arm-none-linux-gnueabi-strip*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-addr2line*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-ar*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-as*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-c++*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-c++filt*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-cpp*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-cs*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-cs-daemon*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-elfedit*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-g++*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcc*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcc-4.8.*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcc-ar*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcc-nm*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcc-ranlib*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gcov*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gdb*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-gprof*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-ld*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-nm*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-objcopy*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-objdump*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-ranlib*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-readelf*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-size*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-strings*
-rwxr-xr-x pengdl pengdl May arm-none-linux-gnueabi-strip*
$cat arm-linux-gcc
#!/bin/bash
arm-none-linux-gnueabi-gcc -march=armv4t $* $cat arm-linux-g++
#!/bin/bash
arm-none-linux-gnueabi-g++ -march=armv4t $* $cat arm-linux-gcc-4.8.
#!/bin/bash
arm-none-linux-gnueabi-gcc-4.8. -march=armv4t $*
此外, 还需要注意的是, 将来在制作用于TQ2440的根文件系统的时候拷贝的工具链的lib库的位置:
arm-2014.05/arm-none-linux-gnueabi/libc/armv4t/lib
而不是:
arm-2014.05/arm-none-linux-gnueabi/libc/lib
这个用于高于armv4t架构的平台,如exynos4412用的是armv7架构。
二、Bootloader
使用的uboot可以到https://github.com/pengdonglin137/u-boot下载,可以参考:
将来的分区稍有变化:
| 1MB SPL | 1MB UBOOT | 1MB PARAMS | 5MB KERNEL | 1MB DTB | 247MB ROOTFS |
由于将来采用NFS挂载根文件系统启动的方式,下面是bootargs以及bootcmd:
bootargs:
noinitrd root=/dev/nfs rw nfsroot=192.168.1.101:/nfsroot/rootfs ethmac=1C:6F::::7E ip=192.168.1.6:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200n
这里板子的IP是192.168.1.6,HOST的IP是192.168.1.101, 当然由于采用了设备树的方式, 所以也可以不在uboot里设置bootargs,而是放到设备树的chosen节点当中。
nand read 0x300080000x3000000x500000; nand read 0x320000000x8000000x100000; bootm 0x30008000-0x32000000
这里会了加快启动速度, 提前把uImage和dtb文件少些到的nandflash中, 关于在tq2440上面支持dtb,请参考 讓TQ2440也用上設備樹(1)
三、kernel
可以到https://github.com/pengdonglin137/linux-4.9下载,tq2440_dt分支, 使用方法参考 讓TQ2440也用上設備樹(1)
烧写kernel和dtb到nand中:
烧写kernel:
mw.b 0x30008000 0xff 0x500000
tftp 0x30008000 uImage
nand erase 0x300000 0x500000
nand write 0x30008000 0x300000 0x500000 烧写dtb:
mw.b 0x30008000 0xff 0x100000
tftp 0x30008000 dtb
nand erase 0x800000 0x100000
nand write 0x30008000 0x800000 0x100000
四、Python
参考
SQlite
#!/bin/bash ../sqlite-autoconf-/configure --host=arm-none-linux-gnueabi \
--prefix=`pwd` \
CFLAGS="-march=armv4t" \
CPPFLAGS="-march=armv4t" \
LDFLAGS="-march=armv4t" make -j4
make install
Readline
#!/bin/bash ../readline-7.0/configure --host=arm-none-linux-gnueabi \
--prefix=`pwd` \
CFLAGS="-march=armv4t" \
CPPFLAGS="-march=armv4t" \
LDFlAGS="-march=armv4t" make -j4
make install
Termcap
#!/bin/bash ../termcap-1.3./configure --host=arm-none-linux-gnueabi \
--prefix=`pwd`
修改Makefile:
CC = arm-none-linux-gnueabi-gcc
AR = arm-none-linux-gnueabi-ar
RANLIB = arm-none-linux-gnueabi-ranlib
... ...
CFLAGS = -g -march=armv4t
然后 make && make install
Python3
#!/bin/bash ../Python-3.6./configure \
--host=arm-linux \
--build=armv4 \
--prefix=`pwd` \
--enable-ipv6 \
--enable-shared \
ac_cv_file__dev_ptmx="yes" \
ac_cv_file__dev_ptc="no" \
LDFLAGS="-L/home/pengdl/Study/tq2440/Python/SQlite/tq2440/lib \
-L/home/pengdl/Study/tq2440/Python/Readline/tq2440/lib \
-L/home/pengdl/Study/tq2440/Python/Termcap/tq2440" \
CPPFLAGS="-I/home/pengdl/Study/tq2440/Python/SQlite/tq2440/include \
-I/home/pengdl/Study/tq2440/Python/Readline/tq2440/include"
别忘了修改Modules/Setup文件,然后执行 make && make install即可。
五、根文件系统

#!/bin/bash sudo rm -rf rootfs
sudo rm -rf tmpfs
sudo rm -rf ramdisk* sudo mkdir rootfs
sudo cp ../busybox-1.24./_install/* rootfs/ -raf sudo mkdir -p rootfs/proc/
sudo mkdir -p rootfs/sys/
sudo mkdir -p rootfs/tmp/
sudo mkdir -p rootfs/root/
sudo mkdir -p rootfs/var/
sudo mkdir -p rootfs/mnt/ sudo cp etc rootfs/ -arf
sudo mkdir -p rootfs/lib sudo cp -arf /home/pengdl/Study/cross_compile/arm-2014.05/arm-none-linux-gnueabi/libc/armv4t/lib/*.so* rootfs/lib #Python3
sudo mkdir -p rootfs/usr
pushd rootfs/usr
sudo cp -raf /home/pengdl/Study/tq2440/Python/Python3/tq2440/lib .
sudo cp -raf /home/pengdl/Study/tq2440/Python/Python3/tq2440/include .
sudo cp -raf /home/pengdl/Study/tq2440/Python/Python3/tq2440/bin .
sudo cp -raf /home/pengdl/Study/tq2440/Python/Python3/tq2440/share .
sudo arm-none-linux-gnueabi-strip lib/python*
popd #sqlite3
sudo cp -raf /home/pengdl/Study/tq2440/Python/SQlite/tq2440/bin/* rootfs/bin
sudo cp -raf /home/pengdl/Study/tq2440/Python/SQlite/tq2440/include/* rootfs/include
sudo cp -raf /home/pengdl/Study/tq2440/Python/SQlite/tq2440/lib/* rootfs/lib
sudo cp -raf /home/pengdl/Study/tq2440/Python/SQlite/tq2440/share/* rootfs/usr/share
sudo arm-linux-strip rootfs/bin/sqlite3 #readline
sudo cp -raf /home/pengdl/Study/tq2440/Python/Readline/tq2440/include/* rootfs/include
sudo cp -raf /home/pengdl/Study/tq2440/Python/Readline/tq2440/lib/* rootfs/lib sudo rm -f rootfs/lib/libwv* rootfs/lib/libuniconf*
sudo rm -f rootfs/lib/*.a
sudo rm -f rootfs/lib/*.la
sudo arm-none-linux-gnueabi-strip rootfs/lib/* sudo mkdir -p rootfs/dev/
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/null c 1 3 sudo rm /nfsroot/rootfs_bak -rf
sudo mv /nfsroot/rootfs /nfsroot/rootfs_bak
sudo cp ./rootfs /nfsroot/ -raf
其中的etc目录可以到这里下载:http://files.cnblogs.com/files/pengdonglin137/etc.zip
六、测试
启动log
U-Boot 2015.04-g5095150 (Dec - ::)
CPUID:
FCLK: MHz
HCLK: MHz
PCLK: MHz
I2C: ready
DRAM: MiB
WARNING: Caches not enabled
Flash: Bytes
NAND: MiB
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot:
NAND read: device offset 0x300000, size 0x500000
bytes read: OK
NAND read: device offset 0x800000, size 0x100000
bytes read: OK
## Booting kernel from Legacy Image at ...
Image Name: Linux-4.9.+
Created: -- :: UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: Bytes = 3.3 MiB
Load Address:
Entry Point:
Verifying Checksum ... OK
## Flattened Device Tree blob at
Booting using the fdt blob at 0x32000000
Loading Kernel Image ... OK
Loading Device Tree to 33aa6000, end 33aaa62c ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.9.+ (pengdl@ubuntu) (gcc version 4.8. (prerelease) (Sourcery CodeBench Lite 2014.05-) ) # Wed Apr :: PDT
[ 0.000000] CPU: ARM920T [] revision (ARMv4T), cr=c000717f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt:Machine model: TQ2440
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] DT missing boot CPU MPIDR[:], fall back to default cpu_logical_map
[ 0.000000] Built zonelists in Zone order, mobility grouping on. Total pages:
[ 0.000000] Kernel command line: noinitrd root=/dev/nfs rw nfsroot=192.168.1.101:/nfsroot/rootfs ethmac=1C:6F::::7E ip=192.168.1.6:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200n
[ 0.000000] PID hash table entries: (order: -, bytes)
[ 0.000000] Dentry cache hash table entries: (order: , bytes)
[ 0.000000] Inode-cache hash table entries: (order: , bytes)
[ 0.000000] Memory: 57900K/65536K available (4729K kernel code, 234K rwdata, 1376K rodata, 204K init, 262K bss, 7636K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 ( kB)
[ 0.000000] vmalloc : 0xc4800000 - 0xff800000 ( MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( MB)
[ 0.000000] .text : 0xc0008000 - 0xc04a67f0 ( kB)
[ 0.000000] .init : 0xc0627000 - 0xc065a000 ( kB)
[ 0.000000] .data : 0xc065a000 - 0xc0694840 ( kB)
[ 0.000000] .bss : 0xc0694840 - 0xc06d60a8 ( kB)
[ 0.000000] SLUB: HWalign=, Order=-, MinObjects=, CPUs=, Nodes=
[ 0.000000] NR_IRQS:
[ 0.000000] irq: clearing pending status
[ 0.000000] _get_rate: could not find clock xti
[ 0.000131] sched_clock: bits at 1000kHz, resolution 1000ns, wraps every 32767500ns
[ 0.000254] clocksource: samsung_clocksource_timer: mask: 0xffff max_cycles: 0xffff, max_idle_ns: ns
[ 0.001154] Console: colour dummy device 80x30
[ 0.001358] Calibrating delay loop... 199.47 BogoMIPS (lpj=)
[ 0.035124] pid_max: default: minimum:
[ 0.035715] Mount-cache hash table entries: (order: , bytes)
[ 0.035803] Mountpoint-cache hash table entries: (order: , bytes)
[ 0.039125] CPU: Testing write buffer coherency: ok
[ 0.041720] Setting up static identity map for 0x30008200 - 0x30008258
[ 0.067396] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: ns
[ 0.068020] pinctrl core: initialized pinctrl subsystem
[ 0.071279] NET: Registered protocol family
[ 0.074528] DMA: preallocated KiB pool for atomic coherent allocations
[ 0.096698] cpuidle: using governor ladder
[ 0.097401] No ATAGs?
[ 0.357763] SCSI subsystem initialized
[ 0.359225] usbcore: registered new interface driver usbfs
[ 0.359894] usbcore: registered new interface driver hub
[ 0.360865] usbcore: registered new device driver usb
[ 0.364272] Advanced Linux Sound Architecture Driver Initialized.
[ 0.395750] clocksource: Switched to clocksource samsung_clocksource_timer
[ 0.462505] NET: Registered protocol family
[ 0.466700] TCP established hash table entries: (order: , bytes)
[ 0.466838] TCP bind hash table entries: (order: , bytes)
[ 0.466899] TCP: Hash tables configured (established bind )
[ 0.467514] UDP hash table entries: (order: , bytes)
[ 0.467638] UDP-Lite hash table entries: (order: , bytes)
[ 0.468746] NET: Registered protocol family
[ 0.547937] RPC: Registered named UNIX socket transport module.
[ 0.548047] RPC: Registered udp transport module.
[ 0.548062] RPC: Registered tcp transport module.
[ 0.548076] RPC: Registered tcp NFSv4. backchannel transport module.
[ 0.556526] futex hash table entries: (order: -, bytes)
[ 0.565590] workingset: timestamp_bits= max_order= bucket_order=
[ 0.699034] NFS: Registering the id_resolver key type
[ 0.699281] Key type id_resolver registered
[ 0.699297] Key type id_legacy registered
[ 0.699372] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 0.699649] jffs2: version 2.2. (NAND) © - Red Hat, Inc.
[ 0.709262] romfs: ROMFS MTD (C) Red Hat, Inc.
[ 0.730545] io scheduler noop registered
[ 0.730657] io scheduler deadline registered
[ 0.732323] io scheduler cfq registered (default)
[ 0.947381] .serial: ttySAC0 at MMIO 0x50000000 (irq = , base_baud = ) is a S3C2440
[ 1.387359] random: fast init done
[ 1.611283] console [ttySAC0] enabled
[ 1.767633] brd: module loaded
[ 1.772241] s3c24xx-nand 4e000000.nand: Tacls=, 10ns Twrph0= 30ns, Twrph1= 10ns
[ 1.774282] s3c24xx-nand 4e000000.nand: NAND ECC disabled
[ 1.780114] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xda
[ 1.786112] nand: Samsung NAND 256MiB ,3V -bit
[ 1.790528] nand: MiB, SLC, erase size: KiB, page size: , OOB size:
[ 1.798195] nand: NAND_ECC_NONE selected by board driver. This is not recommended!
[ 1.805811] Scanning device for bad blocks
[ 1.835095] Bad eraseblock at 0x000002d80000
[ 1.835485] Bad eraseblock at 0x000002e20000
[ 1.848196] Bad eraseblock at 0x0000045c0000
[ 1.884281] Bad eraseblock at 0x00000a160000
[ 1.909046] Bad eraseblock at 0x00000e000000
[ 1.909215] Bad eraseblock at 0x00000e020000
[ 1.925484] Creating MTD partitions on "tq2440-0":
[ 1.925650] 0x000000000000-0x000000100000 : "SPL"
[ 1.934143] ftl_cs: FTL header not found.
[ 1.941575] 0x000000100000-0x000000200000 : "U-BOOT"
[ 1.949569] ftl_cs: FTL header not found.
[ 1.954926] 0x000000200000-0x000000300000 : "PARAMS"
[ 1.963831] ftl_cs: FTL header not found.
[ 1.969370] 0x000000300000-0x000000600000 : "KERNEL"
[ 1.978445] ftl_cs: FTL header not found.
[ 1.984058] 0x000000600000-0x000000700000 : "DTB"
[ 1.993049] ftl_cs: FTL header not found.
[ 1.998630] 0x000000700000-0x000010000000 : "ROOTFS"
[ 2.010883] ftl_cs: FTL header not found.
[ 2.023036] eth0: dm9000e at c4932000,c4934004 IRQ MAC: ::de:ad:be:ef (platform data)
[ 2.026768] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 2.032382] ohci-s3c2410: OHCI S3C2410 driver
[ 2.039610] s3c2410-ohci .usb_ohci: OHCI Host Controller
[ 2.042708] s3c2410-ohci .usb_ohci: new USB bus registered, assigned bus number
[ 2.051552] s3c2410-ohci .usb_ohci: irq , io mem 0x49000000
[ 2.124944] hub -:1.0: USB hub found
[ 2.127292] hub -:1.0: ports detected
[ 2.133433] usbcore: registered new interface driver usb-storage
[ 2.136449] mousedev: PS/ mouse device common for all mice
[ 2.141909] s3c-rtc .rtc: rtc disabled, re-enabling
[ 2.145961] rtc rtc0: alarm rollover not handled
[ 2.149532] rtc rtc0: invalid alarm value: -- ::
[ 2.156227] s3c-rtc .rtc: rtc core: registered s3c as rtc0
[ 2.162236] i2c /dev entries driver
[ 2.168574] s3c2410-wdt .watchdog: watchdog inactive, reset disabled, irq disabled
[ 2.175323] sdhci: Secure Digital Host Controller Interface driver
[ 2.178802] sdhci: Copyright(c) Pierre Ossman
[ 2.185919] hidraw: raw HID events driver (C) Jiri Kosina
[ 2.197719] usbcore: registered new interface driver usbhid
[ 2.197849] usbhid: USB HID core driver
[ 2.206738] NET: Registered protocol family
[ 2.207505] Key type dns_resolver registered
[ 2.272831] s3c-rtc .rtc: setting system clock to -- :: UTC ()
[ 2.305173] dm9000 .ethernet eth0: link down
[ 4.410138] dm9000 .ethernet eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[ 4.412435] IP-Config: Complete:
[ 4.415784] device=eth0, hwaddr=::de:ad:be:ef, ipaddr=192.168.1.6, mask=255.255.255.0, gw=192.168.1.1
[ 4.425577] host=192.168.1.6, domain=, nis-domain=(none)
[ 4.431373] bootserver=192.168.1.101, rootserver=192.168.1.101, rootpath=
[ 4.439728] ALSA device list:
[ 4.441430] No soundcards found.
[ 4.489327] VFS: Mounted root (nfs filesystem) on device :.
[ 4.491287] Freeing unused kernel memory: 204K (c0627000 - c065a000)
[ 4.496048] This architecture does not have kernel memory protection.
Please press Enter to activate this console.
[root@tq2440 ]#
[root@tq2440 ]#
[root@tq2440 ]# ls
bin etc lib mnt root sys usr
dev include linuxrc proc sbin tmp var
测试1
[root@tq2440 ]# python3
Python 3.6. (default, Apr , ::)
[GCC 4.8. (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World")
Hello World
>>> import sqlite3
>>>
测试2
[root@tq2440 ]# python3 /usr/lib/python3./test/test___all__.py
__phello__.foo
_bootlocale
_collections_abc
_compat_pickle
_compression
_dummy_thread
_markupbase
_osx_support
... ...
.
----------------------------------------------------------------------
Ran test in .391s
OK
移植Python3到TQ2440(一)的更多相关文章
- 移植Python3到TQ2440(二)
接着前一篇博文. 在上一篇博文中我们用NFS挂载根文件系统的方式启动了系统,接下来我们把移植了Python3的根文件系统固化到NandFlash中,但是由于linux-4.9目前不支持Yaffs2文件 ...
- 移植Python2到TQ2440
环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移 ...
- python2程序移植python3的一些注意事项
1 queue: python2: import Queue python3: import queue 2 queue size: python2: cache = Queue.Queue(maxs ...
- arm linux 移植 python3.6
背景: 人生苦短,我用Python. 说明: 编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出host的解释器.(有点像Go语言) Python : ...
- 让TQ2440也用上设备树(2)
作者 作者:彭東林 郵箱:pengdonglin137@163.com QQ:405728433 软件版本 Linux-4.10.17 概述 在之前的博客里介绍了TQ2440上移植设备树的方法,其实, ...
- 基于设备树的TQ2440的中断(1)
作者 姓名:彭东林 E-mail:pengdonglin137@163.com QQ:405728433 平台 板子:TQ2440 内核:Linux-4.9 u-boot: 2015.04 工具链: ...
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...
- linux驱动之一语点破天机
<const 关键字> 在嵌入式系开发中,const关键字就是“只读”的意思 <为什么要ARM需要进行C语言环境的初始化> 在汇编情况下,指令的跳转,保护现场需要保存的数据 ...
- u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)
本次移植跟以往的不同之处是采用了spl来引导u-boot,参考了博客http://blog.csdn.net/fulinus/article/details/42738641 下载链接:http:// ...
随机推荐
- C#并行计算 Parallel.Foreach&Parallel.For
Parallel.For(int fromInclude, int toExclude, Action<int> body) 栗子: Parallel.For(0, 10, (i) =&g ...
- SQL Server修改默认端口号1433
方法1: 1) SqlServer服务使用两个端口:TCP-1433.UDP-1434. 其中1433用于供SqlServer对外提供服务,1434用于向请求者返回SqlServer使用了那个TCP/ ...
- Linux DRM KMS 驱动简介【转】
转自:https://blog.csdn.net/yangkuanqaz85988/article/details/48689521 Whoops,上次写完<Linux DRM Graphic ...
- springboot配置mybatis的mapper路径
1.在src/main/resources/目录下新建mybatis文件夹,将xxx.xml文件放入该文件夹内 2.在application.yml文件中配置: mybatis: configurat ...
- 大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)
在大数据时代,数据挖掘是最关键的工作.大数据的挖掘是从海量.不完全的.有噪声的.模糊的.随机的大型数据库中发现隐含在其中有价值的.潜在有用的信息和知识的过程,也是一种决策支持过程.其主要基于人工智能, ...
- dubbo启动报错failed to bind nettyserver on
dubbo报错 今天启动项目的时候,关掉了custom服务, <dubbo:consumer check="false"/> 并且关掉了spring的elastic-j ...
- .NetCore使用FluentValidation实现友好验证提示
Nuget包导入FluentValidation.AspNetCore 官方的用法是在services中添加如下来操作 services.AddMvc().AddFluentValidation(co ...
- hdu 2545 求当前结点到根节点的距离
求当前结点到根节点的距离 Sample Input 2 1 //n m 1 2 1 2 //询问 5 2 1 2 1 3 3 4 3 5 4 2 //询问 4 5 0 0 Sample Output ...
- mysql 5.7 百度云网盘下载
mysql 百度云下载 链接: https://pan.baidu.com/s/1fPSEcgtDN7aU2oQ_sL08Ww 提取码: 关注公众号[GitHubCN]回复2539获取
- 【LOJ】#2265. 「CTSC2017」最长上升子序列
题解 点了一个新技能叫杨表(事实上集训的时候听过,但是一直不会 这道题就是让我们找到k个不上升子序列,要求长度加和最大 我们用杨表去维护,但是由于杨表的行数可能是n的,复杂度会炸 我们只维护前\(\s ...