平台

硬件:TQ2440  64MB内存 256MB NandFlash
bootloader:U-Boot 2015.04
kernel:linux-4.9
Python: Python-3.6.0
工具链:arm-none-linux-gnueabi-gcc  4.8.3
 

概述

现在树莓派很火,在树莓派上面用户可以通过Python来控制板子上面的GPIO资源, 然后我想TQ2440也应该做到这一点。 将来根文件系统会通过NFS的方式挂载到开发板上面。
 

正文

一、工具链

登录这个网址: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*
即在原来的工具链上面做一些软连接,对arm-linux-gcc/g++/gcc-4.8.3做一些特殊处理:
 $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节点当中。

bootcmd:
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

参考

由于上面两篇博文采用的是qemu模拟的cortex-a9平台,属于armv7架构,而我们的tq2440是armv4架构,所以需要做一些修改。
  • 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(一)的更多相关文章

  1. 移植Python3到TQ2440(二)

    接着前一篇博文. 在上一篇博文中我们用NFS挂载根文件系统的方式启动了系统,接下来我们把移植了Python3的根文件系统固化到NandFlash中,但是由于linux-4.9目前不支持Yaffs2文件 ...

  2. 移植Python2到TQ2440

    环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移 ...

  3. python2程序移植python3的一些注意事项

    1 queue: python2: import Queue python3: import queue 2 queue size: python2: cache = Queue.Queue(maxs ...

  4. arm linux 移植 python3.6

    背景: 人生苦短,我用Python. 说明: 编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出host的解释器.(有点像Go语言) Python : ...

  5. 让TQ2440也用上设备树(2)

    作者 作者:彭東林 郵箱:pengdonglin137@163.com QQ:405728433 软件版本 Linux-4.10.17 概述 在之前的博客里介绍了TQ2440上移植设备树的方法,其实, ...

  6. 基于设备树的TQ2440的中断(1)

    作者 姓名:彭东林 E-mail:pengdonglin137@163.com QQ:405728433 平台 板子:TQ2440 内核:Linux-4.9 u-boot: 2015.04 工具链: ...

  7. OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...

  8. linux驱动之一语点破天机

    <const 关键字> 在嵌入式系开发中,const关键字就是“只读”的意思   <为什么要ARM需要进行C语言环境的初始化> 在汇编情况下,指令的跳转,保护现场需要保存的数据 ...

  9. u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)

    本次移植跟以往的不同之处是采用了spl来引导u-boot,参考了博客http://blog.csdn.net/fulinus/article/details/42738641 下载链接:http:// ...

随机推荐

  1. shell-拷贝指定目录外其他全部目录

    shopt -s extglob if [ ! -d "desdir" ]; then mkdir desdir fi cp -r Oozie/!(.svn*) desdir/

  2. 360加固保的dex脱壳方法

    完全测试了看雪论坛的方法,发现并没有脱壳,依然无法反编译 http://bbs.pediy.com/thread-213377.htm 使用上面方法的结果是会得到16个dex文件,只有一个是与程序相关 ...

  3. c语言字符串函数大全(转)

    函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio. ...

  4. SqlServer代理作业

    最近一直在学习SqlServer 作业方面的知识,总结一下. 一:作业存在的库. msdb  use msdb Msdb数据库是代理服务数据库,为其报警.任务调度和记录操作员的操作提供存储空间. 二: ...

  5. **CI中自动类加载的用法总结

    总结: 哪一个类中用到某一个类,就在构造函数中加载这个类,比如m_attach,C_Feed类中有用到,那么就在构造函数中加载 控制器: class C_Feed extends CI_Control ...

  6. Serilog 记录日志

    Serilog 记录日志 Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里, ...

  7. vue后台管理框架

    vue后台管理框架 系列教程<一步步带你做vue后台管理框架>第一课 github地址:vue-framework-wz 线上体验地址:立即体验 在如今的科技公司中有很多前端的需求都是要写 ...

  8. WebStorm failing to start with 'idea.system.path' error

    WebStorm failing to start with 'idea.system.path' error Ask Question up vote 2 down vote favorite   ...

  9. 模拟app端上传图片

    使用插件模块管理模式: jsp页面: <sys:fileUpload fieldName="picList" contentId="true" value ...

  10. SpringAOP实战应用

    Springboot中使用AOP特性非常简单,使用@AspectJ注解,然后再配置中开启AspectJ即可.在日常的应用,有时可以将日志记录和异常处理在一个拦截器中统一处理,但有时在项目中无法通过一个 ...