I.MX6Q(TQIMX6Q/TQE9)学习笔记——内核启动与文件系统挂载

时间:2023-03-09 08:22:18
I.MX6Q(TQIMX6Q/TQE9)学习笔记——内核启动与文件系统挂载

经过前面的移植,u-boot已经有能力启动内核了,本文主要来看下如何通过之前移植的u-boot来启动内核。如果按照前面的文章完成了LTIB 的编译,那么,Linux的内核应该就会出现rpm/BUILD/目录下,接下来,我们就开始移植这个3.0.35版本的内核到TQIMX6Q。

内核的编译

为了简化内核编译的过程,可以在内核目录下创建编译脚本,命名为build.sh,内容如下:

  1. #!/bin/sh
  2. export ARCH=arm
  3. export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-
  4. make uImage -j8

为该脚本添加可执行权限:

  1. chmod a+x build.sh

由于本文使用的内核镜像格式是uImage,因此会依赖u-boot编译时生成的工具——mkimage。该工具为u-boot目录的tools子目录 下,可以将mkimage拷贝到/usr/bin或者/usr/local/bin目录下,当然也可以是用环境变量PATH,方法如下:

  1. export PATH=$PATH:~/Projects/imx6/L3.0.35_4.1.0/ltib/rpm/BUILD/u-boot-2009.8/tools

安装路径需要根据自己的实际情况填写。完成以上操作之后就可以编译内核了,执行脚本程序:

  1. ./build.sh

内核的编译时间较长,需耐心等待,也与机器的配置有关。

内核启动尝试

内核编译完成后,uImage会出现在arch/arm/boot/目录下,将该镜像烧写到SD卡:

  1. sudo dd if=arch/arm/boot/uImage of=/dev/sdb bs=512 seek=2048
  2. sync

然后用SD卡启动开发板,按任意键打断u-boot启动,进入命令行,修改u-boot环境变量:

  1. setenv bootargs_base 'setenv bootargs console=ttymxc0,115200'
  2. setenv bootargs_mmc 'setenv bootargs ${bootargs} root=/dev/mmcblk1p1 rootwait rw'
  3. setenv bootcmd_mmc 'run bootargs_base bootargs_mmc; mmc dev 1; mmc read ${loadaddr} 0x800 0x2000; bootm'
  4. setenv bootcmd 'run bootcmd_mmc'
  5. saveenv

以上指令的含义:

  1. 第一条:bootargs_base,维持默认状态,作用是在bootargs中指定串口终端及波特率。
  2. 第二条:bootargs_mmc,是MMC方式启动内核使用的bootargs特有参数。
  3. 第三条:bootcmd_mmc,是MMC方式启动特有的命令组合。
  4. 第四条:bootcmd是内核启动命令。
  5. 第五条:保存env到SD存储介质。

完成之后执行命令:

  1. boot

或者重新上电开发板就可以启动内核了。

内核的修改

通过上面的设置,u-boot已经可以引导内核启动了,但是,内核启动后仅打印了一部分log,猜测是内核中UART的GPIO管脚配置不正确,开
始一段log能打印出来是因为u-boot阶段配置好了UART,而内核中又将这两个引脚配置为其它用途了。首先来解决串口log问题,打开文件
arch/arm/mach-mx6/board-mx6q_sabresd.h并作如下修改:

  1. ... ...
  2. /* UART1 for debug */
  3. // MX6Q_PAD_CSI0_DAT10__UART1_TXD,
  4. MX6Q_PAD_SD3_DAT7__UART1_TXD,
  5. // MX6Q_PAD_CSI0_DAT11__UART1_RXD,
  6. MX6Q_PAD_SD3_DAT6__UART1_RXD,
  7. ... ...

其实,u-boot已经作过相应的修改,修改UART1相关的配置信息,除了以上修改之外,还需要将SD3与串口冲突的两个引脚:

  1. /* USDHC3 */
  2. MX6Q_PAD_SD3_CLK__USDHC3_CLK_50MHZ,
  3. MX6Q_PAD_SD3_CMD__USDHC3_CMD_50MHZ,
  4. MX6Q_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ,
  5. MX6Q_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ,
  6. MX6Q_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ,
  7. MX6Q_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ,
  8. // MX6Q_PAD_SD3_DAT4__USDHC3_DAT4_50MHZ,
  9. // MX6Q_PAD_SD3_DAT5__USDHC3_DAT5_50MHZ,
  10. // MX6Q_PAD_SD3_DAT6__USDHC3_DAT6_50MHZ,
  11. // MX6Q_PAD_SD3_DAT7__USDHC3_DAT7_50MHZ,
  12. MX6Q_PAD_NANDF_D0__GPIO_2_0,      /* SD3_CD */
  13. MX6Q_PAD_NANDF_D1__GPIO_2_1,      /* SD3_WP */

注释掉以上四行。保存后重新编译内核并烧写到SD卡,重新启动开发板会发现内核已经可以正常打印启动Log了。接下来将LTIB编译生成的rootfs烧写到开发板,并使用编译好的内核挂载该文件系统。

挂载文件系统

文件系统的构建方式都差不多,这里就不再自己构建了,直接使用LTIB编译时生成的文件系统。

将SD卡插ubunut上,对该SD卡进行分区:

  1. sudo fdisk /dev/sdb

然后如下操作:

Step1: 通过指令u切换到sectors模式。输入u后回车,fdisk会在sectors模式和cylinders模式间切换,这里切换到sectors模式。

Step2:通过d指令删除原来的分区。重复的输入d并回车,可以删除SD卡原有的分区,知道没有任何分区为止。

Step3:通过n指令新建分区。输入n并回车。

Step4:输入分区编号。这里输入数字1。

Step5:输入分区的起始位置。该位置是sectors为单位的,每个sector的大小为512B,这里偏移8M,给内核留下足够的存储空间,输入16384并回车。

Step6:输入分区的结束为止。直接使用默认值,即到达SD卡的末尾,故直接回车即可。

Step7:保存分区信息。输入指令w并回车。

这样就完成了SD卡的分区,接下来需要将该分区格式化为ext3或者ext4,指令如下:

  1. sudo mkfs.ext3 /dev/sdb1
  2. 或者
  3. sudo mkfs.ext4 /dev/sdb1

最后,将文件系统拷贝到该分区,进入ltib目录下的rootfs文件夹,然后执行如下指令:

  1. sudo mount /dev/sdb1 /mnt
  2. sudo cp -a * /mnt

也可以重新拔插SD卡,将rootfs内的文件拷贝到ubunut挂载的分区。

如果rootfs是压缩包,则可以解压到SD卡分区,比如bzip的压缩包,可以如下处理:

  1. sudo tar jxf rootfs.tar.bz2 -C /mnt
  2. sudo mv /mnt/rootfs/* /mnt


过一般不用这么麻烦,直接用前面的方式拷贝即可。拷贝完成后执行sync指令,然后将SD插到开发板上启动开发板。启动时发现内核并没有成功挂载上
rootfs文件系统,且根本没有识别到SD卡,因此,猜测是SD相关的引脚配置不正确。通过查阅原理图及内核源码文件可知,代码中配置的uSDHC2的
WP和CD引脚与TQIMX6Q的连接方式不一致,因此,需要作如下修改:

Step1:打开arch/arm/mach-mx6/board-mx6q_sabresd.h,作如下修改:

  1. /* USDHC2 */
  2. MX6Q_PAD_SD2_CLK__USDHC2_CLK,
  3. MX6Q_PAD_SD2_CMD__USDHC2_CMD,
  4. MX6Q_PAD_SD2_DAT0__USDHC2_DAT0,
  5. MX6Q_PAD_SD2_DAT1__USDHC2_DAT1,
  6. MX6Q_PAD_SD2_DAT2__USDHC2_DAT2,
  7. MX6Q_PAD_SD2_DAT3__USDHC2_DAT3,
  8. // MX6Q_PAD_NANDF_D4__USDHC2_DAT4,
  9. // MX6Q_PAD_NANDF_D5__USDHC2_DAT5,
  10. // MX6Q_PAD_NANDF_D6__USDHC2_DAT6,
  11. // MX6Q_PAD_NANDF_D7__USDHC2_DAT7,
  12. // MX6Q_PAD_NANDF_D2__GPIO_2_2,  /* SD2_CD */
  13. MX6Q_PAD_GPIO_2__USDHC2_WP,
  14. // MX6Q_PAD_NANDF_D3__GPIO_2_3,  /* SD2_WP */
  15. MX6Q_PAD_GPIO_4__USDHC2_CD,

Step2:打开arch/arm/mach-mx6/board-mx6q_sabresd.c,作如下修改:

  1. #define SABRESD_SD2_CD          IMX_GPIO_NR(1, 4)
  2. #define SABRESD_SD2_WP          IMX_GPIO_NR(1, 2)

即将SD2_CD的引脚号修改为GPIO1_4和GPIO1_2。

按照以上步骤修改内核后重新编译并烧写到SD卡,然后使用SD卡启动开发板。

效果展示

按照上面的步骤修改后内核就可以正常启动了,下面是启动Log:

  1. U-Boot 2009.08-dirty ( 3月 23 2015 - 23:14:02)
  2. CPU: Freescale i.MX6 family TO1.2 at 792 MHz
  3. Thermal sensor with ratio = 174
  4. Temperature:   23 C, calibration data 0x54e4bb69
  5. mx6q pll1: 792MHz
  6. mx6q pll2: 528MHz
  7. mx6q pll3: 480MHz
  8. mx6q pll8: 50MHz
  9. ipg clock     : 66000000Hz
  10. ipg per clock : 66000000Hz
  11. uart clock    : 80000000Hz
  12. cspi clock    : 60000000Hz
  13. ahb clock     : 132000000Hz
  14. axi clock   : 264000000Hz
  15. emi_slow clock: 132000000Hz
  16. ddr clock     : 528000000Hz
  17. usdhc1 clock  : 198000000Hz
  18. usdhc2 clock  : 198000000Hz
  19. usdhc3 clock  : 198000000Hz
  20. usdhc4 clock  : 198000000Hz
  21. nfc clock     : 24000000Hz
  22. Board: i.MX6Q-SABRESD: unknown-board Board: 0x63012 [POR ]
  23. Boot Device: SD
  24. I2C:   ready
  25. DRAM:   1 GB
  26. MMC:   FSL_USDHC: 0,FSL_USDHC: 1,FSL_USDHC: 2,FSL_USDHC: 3
  27. In:    serial
  28. Out:   serial
  29. Err:   serial
  30. Net:   got MAC address from IIM: 00:00:00:00:00:00
  31. FEC0 [PRIME]
  32. Hit any key to stop autoboot:  0
  33. mmc1 is current device
  34. MMC read: dev # 1, block # 2048, count 8192 ... 8192 blocks read: OK
  35. ## Booting kernel from Legacy Image at 10800000 ...
  36. Image Name:   Linux-3.0.35-2666-gbdde708-g3344
  37. Image Type:   ARM Linux Kernel Image (uncompressed)
  38. Data Size:    3866004 Bytes =  3.7 MB
  39. Load Address: 10008000
  40. Entry Point:  10008000
  41. Verifying Checksum ... OK
  42. Loading Kernel Image ... OK
  43. OK
  44. Starting kernel ...
  45. Uncompressing Linux... done, booting the kernel.
  46. Linux version 3.0.35-2666-gbdde708-g334422e-dirty (lilianrong@ubuntu) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) ) #5 SMP PREEMPT Wed Mar 25 19:29:24 CST 2015
  47. CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
  48. CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
  49. Machine: Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board
  50. Ignoring unrecognised tag 0x54410008
  51. Memory policy: ECC disabled, Data cache writealloc
  52. CPU identified as i.MX6Q, silicon rev 1.2
  53. PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768
  54. Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 194560
  55. Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk1p1 rootwait rw
  56. PID hash table entries: 4096 (order: 2, 16384 bytes)
  57. Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
  58. Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
  59. Memory: 512MB 256MB = 768MB total
  60. Memory: 765764k/765764k available, 282812k reserved, 0K highmem
  61. Virtual kernel memory layout:
  62. vector  : 0xffff0000 - 0xffff1000   (   4 kB)
  63. fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
  64. DMA     : 0xf4600000 - 0xffe00000   ( 184 MB)
  65. vmalloc : 0xc0800000 - 0xf2000000   ( 792 MB)
  66. lowmem  : 0x80000000 - 0xc0000000   (1024 MB)
  67. pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
  68. modules : 0x7f000000 - 0x7fe00000   (  14 MB)
  69. .init : 0x80008000 - 0x8003c000   ( 208 kB)
  70. .text : 0x8003c000 - 0x80a8f8f4   (10575 kB)
  71. .data : 0x80a90000 - 0x80af3e00   ( 400 kB)
  72. .bss : 0x80af3e24 - 0x80b41d4c   ( 312 kB)
  73. SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
  74. Preemptible hierarchical RCU implementation.
  75. NR_IRQS:624
  76. MXC GPIO hardware
  77. sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
  78. arm_max_freq=1GHz
  79. MXC_Early serial console at MMIO 0x2020000 (options '115200')
  80. bootconsole [ttymxc0] enabled
  81. Console: colour dummy device 80x30
  82. Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)
  83. pid_max: default: 32768 minimum: 301
  84. Mount-cache hash table entries: 512
  85. CPU: Testing write buffer coherency: ok
  86. hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
  87. CPU1: Booted secondary processor
  88. CPU2: Booted secondary processor
  89. CPU3: Booted secondary processor
  90. Brought up 4 CPUs
  91. SMP: Total of 4 processors activated (6324.22 BogoMIPS).
  92. print_constraints: dummy:
  93. NET: Registered protocol family 16
  94. print_constraints: vddpu: 725 <--> 1300 mV at 700 mV fast normal
  95. print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal
  96. print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal
  97. print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal
  98. print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal
  99. print_constraints: vdd3p0: 2625 <--> 3400 mV at 3000 mV fast normal
  100. hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
  101. hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
  102. hw-breakpoint: maximum watchpoint size is 4 bytes.
  103. L310 cache controller enabled
  104. l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B
  105. bio: create slab <bio-0> at 0
  106. mxs-dma mxs-dma-apbh: initialized
  107. print_constraints: SPKVDD: 4200 mV
  108. print_constraints: vmmc: 3300 mV
  109. SCSI subsystem initialized
  110. spi_imx imx6q-ecspi.0: probed
  111. usbcore: registered new interface driver usbfs
  112. usbcore: registered new interface driver hub
  113. usbcore: registered new device driver usb
  114. Freescale USB OTG Driver loaded, $Revision: 1.55 $
  115. mc_pfuze 1-0008: recv failed!:-5,80
  116. mc_pfuze: probe of 1-0008 failed with error -1
  117. imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
  118. imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
  119. mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
  120. mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
  121. MIPI CSI2 driver module loaded
  122. Advanced Linux Sound Architecture Driver Version 1.0.24.
  123. Bluetooth: Core ver 2.16
  124. NET: Registered protocol family 31
  125. Bluetooth: HCI device and connection manager initialized
  126. Bluetooth: HCI socket layer initialized
  127. Bluetooth: L2CAP socket layer initialized
  128. Bluetooth: SCO socket layer initialized
  129. cfg80211: Calling CRDA to update world regulatory domain
  130. max17135 2-0048: PMIC MAX17135 for eInk display
  131. i2c-core: driver [max17135] using legacy suspend method
  132. i2c-core: driver [max17135] using legacy resume method
  133. Switching to clocksource mxc_timer1
  134. NET: Registered protocol family 2
  135. IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
  136. TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
  137. TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
  138. TCP: Hash tables configured (established 131072 bind 65536)
  139. TCP reno registered
  140. UDP hash table entries: 512 (order: 2, 16384 bytes)
  141. UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
  142. NET: Registered protocol family 1
  143. RPC: Registered named UNIX socket transport module.
  144. RPC: Registered udp transport module.
  145. RPC: Registered tcp transport module.
  146. RPC: Registered tcp NFSv4.1 backchannel transport module.
  147. PMU: registered new PMU device of type 0
  148. Static Power Management for Freescale i.MX6
  149. wait mode is enabled for i.MX6
  150. cpaddr = c0880000 suspend_iram_base=c091c000
  151. PM driver module loaded
  152. IMX usb wakeup probe
  153. add wake up source irq 75
  154. IMX usb wakeup probe
  155. cpu regulator mode:ldo_enable
  156. i.MXC CPU frequency driver
  157. JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
  158. msgmni has been set to 1495
  159. alg: No test for stdrng (krng)
  160. io scheduler noop registered
  161. io scheduler deadline registered
  162. io scheduler cfq registered (default)
  163. mxc_mipi_dsi mxc_mipi_dsi: i.MX MIPI DSI driver probed
  164. MIPI DSI driver module loaded
  165. mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver ldb
  166. _regulator_get: get() with no identifier
  167. imx-ipuv3 imx-ipuv3.1: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
  168. Console: switching to colour frame buffer device 128x48
  169. mxc_sdc_fb mxc_sdc_fb.1: register mxc display driver ldb
  170. mxc_sdc_fb mxc_sdc_fb.2: register mxc display driver lcd
  171. mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb
  172. mxc_sdc_fb mxc_sdc_fb.3: ipu1-di0 already in use
  173. mxc_sdc_fb: probe of mxc_sdc_fb.3 failed with error -16
  174. imx-sdma imx-sdma: loaded firmware 1.1
  175. imx-sdma imx-sdma: initialized
  176. Serial: IMX driver
  177. imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX
  178. imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
  179. console [ttymxc0] enabled, bootconsole disabled
  180. console [ttymxc0] enabled, bootconsole disabled
  181. loop: module loaded
  182. No sata disk.
  183. m25p80 spi0.0: unrecognized JEDEC id ffffff
  184. GPMI NAND driver registered. (IMX)
  185. vcan: Virtual CAN interface driver
  186. CAN device driver interface
  187. flexcan netdevice driver
  188. FEC Ethernet Driver
  189. fec_enet_mii_bus: probed
  190. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
  191. fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
  192. fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
  193. fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000
  194. fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
  195. hub 1-0:1.0: USB hub found
  196. hub 1-0:1.0: 1 port detected
  197. add wake up source irq 72
  198. fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
  199. fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
  200. fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200
  201. fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
  202. hub 2-0:1.0: USB hub found
  203. hub 2-0:1.0: 1 port detected
  204. Initializing USB Mass Storage driver...
  205. usbcore: registered new interface driver usb-storage
  206. USB Mass Storage support registered.
  207. ARC USBOTG Device Controller driver (1 August 2005)
  208. mousedev: PS/2 mouse device common for all mice
  209. input: gpio-keys as /devices/platform/gpio-keys/input/input0
  210. input: max11801_ts as /devices/platform/imx-i2c.1/i2c-1/1-0048/input/input1
  211. egalax_ts 1-0004: egalax_ts: failed to read firmware version
  212. egalax_ts: probe of 1-0004 failed with error -5
  213. egalax_ts 2-0004: egalax_ts: failed to read firmware version
  214. egalax_ts: probe of 2-0004 failed with error -5
  215. elan - Read Hello Packet Failed
  216. elan-touch: probe of 2-0010 failed with error -22
  217. i2c-core: driver [isl29023] using legacy suspend method
  218. i2c-core: driver [isl29023] using legacy resume method
  219. snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0
  220. i2c /dev entries driver
  221. Linux video capture interface: v2.00
  222. mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16
  223. mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17
  224. mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video18
  225. mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video19
  226. mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video20
  227. mag3110 2-000e: check mag3110 chip ID
  228. mag3110 2-000e: read chip ID 0xfffffffb is not equal to 0xc4!
  229. mag3110: probe of 2-000e failed with error -22
  230. i2c-core: driver [mag3110] using legacy suspend method
  231. i2c-core: driver [mag3110] using legacy resume method
  232. mma8451 0-001c: read chip ID 0x1 is not equal to 0x1a or 0x2a!
  233. mma8451: probe of 0-001c failed with error -22
  234. imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1)
  235. Bluetooth: Virtual HCI driver ver 1.3
  236. Bluetooth: HCI UART driver ver 2.2
  237. Bluetooth: HCIATH3K protocol initialized
  238. Bluetooth: Generic Bluetooth USB driver ver 0.6
  239. usbcore: registered new interface driver btusb
  240. sdhci: Secure Digital Host Controller Interface driver
  241. sdhci: Copyright(c) Pierre Ossman
  242. mmc0: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA
  243. sdhci sdhci-esdhc-imx.1: no card-detect pin available!
  244. mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using DMA
  245. mmc2: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA
  246. mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
  247. VPU initialized
  248. mxc_asrc registered
  249. Galcore version 4.6.9.6622
  250. Thermal calibration data is 0x54e4bb69
  251. Thermal sensor with ratio = 174
  252. Anatop Thermal registered as thermal_zone0
  253. anatop_thermal_probe: default cooling device is cpufreq!
  254. leds-gpio: probe of leds-gpio failed with error -16
  255. usbcore: registered new interface driver usbhid
  256. usbhid: USB HID core driver
  257. usbcore: registered new interface driver snd-usb-audio
  258. mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
  259. Cirrus Logic CS42888 ALSA SoC Codec Driver
  260. i2c-core: driver [cs42888] using legacy suspend method
  261. i2c-core: driver [cs42888] using legacy resume method
  262. imx-hdmi-soc-dai imx-hdmi-soc-dai.0: Failed: Load HDMI-video first.
  263. wm8962 0-001a: Failed to get supply 'DCVDD': -19
  264. wm8962 0-001a: Failed to request supplies: -19
  265. wm8962 0-001a: asoc: failed to probe CODEC wm8962.0-001a: -19
  266. asoc: failed to instantiate card wm8962-audio: -19
  267. mmc0: new high speed DDR MMC card at address 0001
  268. mmcblk0: mmc0:0001 008G92 7.28 GiB
  269. mmcblk0boot0: mmc0:0001 008G92 partition 1 4.00 MiB
  270. mmcblk0boot1: mmc0:0001 008G92 partition 2 4.00 MiB
  271. mmcblk0: p1 p2 p3 < p5 p6 p7 p8 > p4
  272. imx_3stack asoc driver
  273. mmcblk0boot1: unknown partition table
  274. Initialize HDMI-audio failed. Load HDMI-video first!
  275. ALSA device list:
  276. No soundcards found.
  277. NET: Registered protocol family 26
  278. TCP cubic registered
  279. NET: Registered protocol family 17
  280. can: controller area network core (rev 20090105 abi 8)
  281. NET: Registered protocol family 29
  282. can: raw protocol (rev 20090105)
  283. can: broadcast manager protocol (rev 20090105 t)
  284. Bluetooth: RFCOMM TTY layer initialized
  285. Bluetooth: RFCOMM socket layer initialized
  286. Bluetooth: RFCOMM ver 1.11
  287. Bluetooth: BNEP (Ethernet Emulation) ver 1.3
  288. Bluetooth: BNEP filters: protocol multicast
  289. Bluetooth: HIDP (Human Interface Emulation) ver 1.2
  290. lib80211: common routines for IEEE802.11 drivers
  291. VFP support v0.3:
  292. implementor 41 architecture 3 part 30 variant 9 rev 4
  293. mmcblk0boot0: unknown partition table
  294. Bus freq driver module loaded
  295. Bus freq driver Enabled
  296. mxc_dvfs_core_probe
  297. DVFS driver module loaded
  298. regulator_init_complete: SPKVDD: incomplete constraints, leaving on
  299. snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:46:38 UTC (2798)
  300. Waiting for root device /dev/mmcblk1p1...
  301. mmc1: new high speed SDHC card at address e624
  302. mmcblk1: mmc1:e624 SS08G 7.40 GiB
  303. mmcblk1: p1
  304. EXT3-fs: barriers not enabled
  305. kjournald starting.  Commit interval 5 seconds
  306. EXT3-fs (mmcblk1p1): using internal journal
  307. EXT3-fs (mmcblk1p1): recovery complete
  308. EXT3-fs (mmcblk1p1): mounted filesystem with writeback data mode
  309. VFS: Mounted root (ext3 filesystem) on device 179:25.
  310. Freeing init memory: 208K
  311. starting pid 1401, tty '': '/etc/rc.d/rcS'
  312. Mounting /proc and /sys
  313. Starting the hotplug events dispatcher udevd
  314. udevd (1410): /proc/1410/oom_adj is deprecated, please use /proc/1410/oom_score_adj instead.
  315. Synthesizing initial hotplug events
  316. Setting the hostname to freescale
  317. Mounting filesystems
  318. cp: write error: No space left on device
  319. cp: write error: No space left on device
  320. cp: write error: No space left on device
  321. cp: write error: No space left on device
  322. cp: write error: No space left on device
  323. cp: write error: No space left on device
  324. mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
  325. starting pid 3114, tty '': '/etc/rc.d/rc_gpu.S'
  326. starting pid 3120, tty '': '/etc/rc.d/rc_mxc.S'
  327. arm-none-linux-gnueabi-gcc (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20) 4.6.2 20110630 (prerelease)
  328. root filesystem built on Sun, 15 Mar 2015 14:27:16 +0800
  329. Freescale Semiconductor, Inc.
  330. freescale login: root
  331. login[3122]: root login on 'ttymxc0'
  332. root@freescale ~$
  333. root@freescale ~$ cd /
  334. root@freescale /$ ls
  335. bin         etc         lost+found  proc        share       unit_tests
  336. boot        home        mnt         root        sys         usr
  337. dev         lib         opt         sbin        tmp         var
  338. root@freescale /$

总结

基于Freescale官方维护的内核进行移植有非常详细的文档可以参考,而且还可以参考天嵌移植的代码,学习起来比较轻松,业余时间搞搞还是很不错的。以上有什么问题可以留言讨论。
http://blog.****.net/girlkoo/article/details/44626011