这次试用的RT1052处理器被称为跨界处理器,因为其不仅有MCU的价格而且具有MPU的高性能。今天要使用的ucLinux操作系统也是一个跨界的产物。 在嵌入式系统里由于资源有限,所以MCU一般都是踝机运行,一方面其占用的资源较少;另一方面MCU的也的确仅仅运行单一处理事务,不需要复杂的综合处理;在高级应用里开源的操作系统就当属linux了,可是此linux偏偏需要一个MMU的东西——内存管理单元,在MMU的管理下,linux可以正常运行处理复杂逻辑与多种应用,声音与图像齐具。现在问题就来了,RT1052这类的MCU是没有MMU的,于是ucLinux就出现了。 ucLinux的启动是需要较复杂与庞大的BSP支持的,飞凌公司已经在官方为我们编译好了,所以我们只需要下载并运行之。 与其它linux系统一下,我们可以使用串口来打印出来系统启动的系统,我这次使用了xshell软件记录了启动信息,如下:
- U-Boot 2017.09-rc1-g597daa3 (Aug 06 2018 - 14:56:38 +0800)
- CPU: i.MX RT105x at 528MHz
- Model: NXP i.RT1050 EVK
- DRAM: 32 MiB
- MMC: FSL_SDHC: 0
- SF: Detected w25q128bv with page size 256 Bytes, erase size 64 KiB, total 16 MiB
- *** Warning - bad CRC, using default environment
- Video: 480x272x24
- In: serial@40184000
- Out: serial@40184000
- Err: serial@40184000
- Net: eth0: ethernet@402D8000
- Hit any key to stop autoboot: 0
- SF: Detected w25q128bv with page size 256 Bytes, erase size 64 KiB, total 16 MiB
- device 0 offset 0x80000, size 0x400000
- SF: 4194304 bytes @ 0x80000 Read: OK
- device 0 offset 0x70000, size 0x10000
- SF: 65536 bytes @ 0x70000 Read: OK
- ## Booting kernel from Legacy Image at 80007fc0 ...
- Image Name: Linux-4.5.0-g50baef1-dirty
- Image Type: ARM Linux Kernel Image (uncompressed)
- Data Size: 3032352 Bytes = 2.9 MiB
- Load Address: 80008000
- Entry Point: 80008001
- Verifying Checksum ... OK
- ## Flattened Device Tree blob at 81000000
- Booting using the fdt blob at 0x81000000
- XIP Kernel Image ... OK
- Loading Device Tree to 81e67000, end 81e6cbb2 ... OK
- Starting kernel ...
- Booting Linux on physical CPU 0x0
- Linux version 4.5.0-g50baef1-dirty (bluesky@developer-RH2485-V2) (gcc version 4.7.4 20130508 (prerelease) (20170818-165657- build on build.emcraft by build) ) #76 Mon Aug 6 15:12:10 CST 2018
- CPU: ARMv7-M [411fc271] revision 1 (ARMv7M), cr=00000000
- CPU: WBA data cache, WBA instruction cache
- Machine model: NXP IMXRT1050 board
- Built 1 zonelists in Zone order, mobility grouping off. Total pages: 8128
- Kernel command line: rootfstype=jffs2 root=/dev/mtdblock4 rw
- PID hash table entries: 128 (order: -3, 512 bytes)
- Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
- Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
- Memory: 28324K/32768K available (2343K kernel code, 113K rwdata, 432K rodata, 72K init, 94K bss, 4444K reserved, 0K cma-reserved)
- Virtual kernel memory layout:
- vector : 0x00000000 - 0x00001000 ( 4 kB)
- fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
- vmalloc : 0x00000000 - 0xffffffff (4095 MB)
- lowmem : 0x80000000 - 0x82000000 ( 32 MB)
- .text : 0x80008000 - 0x802bdde8 (2776 kB)
- .init : 0x802be000 - 0x802d0000 ( 72 kB)
- .data : 0x802d0000 - 0x802ec520 ( 114 kB)
- .bss : 0x802ec520 - 0x80303f7c ( 95 kB)
- NR_IRQS:16 nr_irqs:16 16
- sched_clock: 32 bits at 75MHz, resolution 13ns, wraps every 28633115129ns
- clocksource: vf-pit: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 25483472618 ns
- Calibrating delay loop... 1196.85 BogoMIPS (lpj=5984256)
- pid_max: default: 4096 minimum: 301
- Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
- Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
- devtmpfs: initialized
- clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
- pinctrl core: initialized pinctrl subsystem
- NET: Registered protocol family 16
- imxrt105x-pinctrl 40a8000.iomuxc_snvs: initialized IMX pinctrl driver
- imxrt105x-pinctrl 401f8000.iomuxc: initialized IMX pinctrl driver
- SCSI subsystem initialized
- usbcore: registered new interface driver usbfs
- usbcore: registered new interface driver hub
- usbcore: registered new device driver usb
- pps_core: LinuxPPS API ver. 1 registered
- pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
- PTP clock support registered
- clocksource: Switched to clocksource vf-pit
- NET: Registered protocol family 2
- TCP established hash table entries: 1024 (order: 0, 4096 bytes)
- TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
- TCP: Hash tables configured (established 1024 bind 1024)
- UDP hash table entries: 256 (order: 0, 4096 bytes)
- UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
- NET: Registered protocol family 1
- RPC: Registered named UNIX socket transport module.
- RPC: Registered udp transport module.
- RPC: Registered tcp transport module.
- RPC: Registered tcp NFSv4.1 backchannel transport module.
- futex hash table entries: 16 (order: -5, 192 bytes)
- jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
- fuse init (API version 7.24)
- Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
- io scheduler noop registered
- io scheduler cfq registered (default)
- mxsfb 402b8000.lcdif: initialized
- 40184000.serial: ttyLP0 at MMIO 0x40184000 (irq = 44, base_baud = 375000) is a FSL_LPUART
- Serial: Console lpuart rounded baud ratefrom 187500 to 115200
- console [ttyLP0] enabled
- 40188000.serial: ttyLP1 at MMIO 0x40188000 (irq = 45, base_baud = 375000) is a FSL_LPUART
- Serial: VF610 driver
- fsl-flexspi 402a8000.flexspi: w25q128 (16384 Kbytes)
- 5 ofpart partitions found on MTD device 402a8000.flexspi
- Creating 5 MTD partitions on "402a8000.flexspi":
- 0x000000000000-0x000000050000 : "uboot"
- 0x000000050000-0x000000070000 : "uboot_env"
- 0x000000070000-0x000000080000 : "dtb"
- 0x000000080000-0x000000480000 : "kernel"
- 0x000000480000-0x000001000000 : "rootfs"
- libphy: fec_enet_mii_bus: probed
- PPP generic driver version 2.4.2
- PPP BSD Compression module registered
- PPP Deflate Compression module registered
- ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
- ehci-mxc: Freescale On-Chip EHCI Host driver
- usbcore: registered new interface driver cdc_acm
- cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
- usbcore: registered new interface driver uas
- usbcore: registered new interface driver usb-storage
- ci_hdrc ci_hdrc.0: doesn't support gadget
- ci_hdrc ci_hdrc.0: EHCI Host Controller
- ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
- ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
- hub 1-0:1.0: USB hub found
- hub 1-0:1.0: 1 port detected
- ci_hdrc ci_hdrc.1: EHCI Host Controller
- ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2
- ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
- hub 2-0:1.0: USB hub found
- hub 2-0:1.0: 1 port detected
- i2c /dev entries driver
- input: TSC2007 Touchscreen as /devices/platform/soc/soc:aips-bus@40000000/403f0000.lpci2c/i2c-0/0-0048/input/input0
- rtc-rx8010 0-0032: rtc core: registered rx8010 as rtc0
- i2c i2c-0: LPI2C adapter registered
- sdhci: Secure Digital Host Controller Interface driver
- sdhci: Copyright(c) Pierre Ossman
- sdhci-pltfm: SDHCI platform and OF driver helper
- sdhci-esdhc-imx 402c0000.esdhc: could not get default state
- /soc/aips-bus@40000000/esdhc@402c0000: voltage-ranges unspecified
- mmc0: SDHCI controller on 402c0000.esdhc [402c0000.esdhc] using DMA
- usbcore: registered new interface driver usbhid
- usbhid: USB HID core driver
- NET: Registered protocol family 17
- input: gpio-keys as /devices/platform/gpio-keys/input/input1
- rtc-rx8010 0-0032: setting system clock to 2018-10-22 22:41:44 UTC (1540248104)
- VFS: Mounted root (jffs2 filesystem) on device 31:4.
- devtmpfs: mounted
- Freeing unused kernel memory: 72K (802be000 - 802d0000)
- init started: BusyBox v1.24.2 (2018-08-06 15:10:58 CST)
复制代码
从启动信息我们可以看到,首先调用了uboot,然后启动Kernel。从启动信息也看到,此次使用的kernel也是emcraft提供的。不得不感叹一下emcraft对于ucLinux的支持力度之大。 之后我又试用了一些命令,此版本的ucLinux所支持的指令还是非常多的,此后的试用将基于ucLinux而开展,好有期待~~
|