经过前面的移植,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.csdn.net/girlkoo/article/details/44626011

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

  1. I.MX6Q(TQIMX6Q/TQE9)学习笔记——U-Boot移植

    其实Freescale的BSP移植文档已经将u-boot的移植步骤讲述的非常详细了,但为了以后方便查阅,还是按照自己的理解记录在这里. 获取源码 根据前一篇文章搭建好LTIB环境后就可以非常方便的导出 ...

  2. Docker学习笔记--Docker 启动nginx实例挂载目录权限不够(转)

    今天在启动一个docker 运行nginx实例,在挂载目录时,出现访问静态目录时,权限不够 执行的命令是: docker run --name my-nginx -d -p 80:80 --resta ...

  3. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  4. 【转载】linux内核启动android文件系统过程分析

    主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...

  5. XV6学习笔记(1) : 启动与加载

    XV6学习笔记(1) 1. 启动与加载 首先我们先来分析pc的启动.其实这个都是老生常谈了,但是还是很重要的(也不知道面试官考不考这玩意), 1. 启动的第一件事-bios 首先启动的第一件事就是运行 ...

  6. Dubbo -- 系统学习 笔记 -- 快速启动

    Dubbo -- 系统学习 笔记 -- 目录 快速启动 服务提供者 服务消费者 快速启动 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubb ...

  7. ucos实时操作系统学习笔记——内核结构和任务创建

    对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指 ...

  8. linux设备驱动学习笔记--内核调试方法之printk

    1,printk类似于用户态的printf函数,但是比printf函数多了一个日志级别,内核中最常见的日志输出都是通过调用printk来实现的,其打印级别有8种可能的记录字串, 在头文件 <Li ...

  9. Linux内核学习笔记——内核内存管理方式

    一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...

随机推荐

  1. Swift 开源 Linux Ubuntu Install

    Swift 开源了,它现在变成跨平台的了,开源后的 Swift 不止能运行在 MAC 和 iOS 平台,现在也可以运行在 Linux 平台了.swift.org 网站上面提供了在 Linux 上面安装 ...

  2. eclipse启动不起来,eclipse.ini配置问题(支持大内存64bit问题)

    Eclipse 启动不起来异常:JVM terminated. Exit code=-1 Eclipse 启动不起来,出现以下错误: JVM terminated. Exit code=-1-Xms4 ...

  3. MVVMLight-Mensenger 学习笔记

    MVVMLight-Mensenger  最近一直在使用WPF,配合美工很容易能搭配出效果不错的UI来,开发效率也明显加快 自己也是最近才开始使用Mvvmlight,通过view和viewmodel分 ...

  4. Mysql闪回技术之 binlog2sql

    1.下载 https://github.com/danfengcao/binlog2sql http://rpmfind.net Search: python-pip pip 是一个Python包管理 ...

  5. git Staging Deleted files

    Use git rm foo to stage the file for deletion. (This will also delete the file from the file system, ...

  6. 转载:Network In Network学习笔记

    转载原文1:http://blog.csdn.net/hjimce/article/details/50458190 转载原文2:http://blog.csdn.net/mounty_fsc/art ...

  7. ios -bitmap上下文生成图片 生成水印

    - (void)test { // 0. 加载背景图片 UIImage *image = [UIImage imageNamed:@"psb"]; // 1.创建bitmap上下文 ...

  8. Web API 2中的操作结果

    how ASP.NET Web API converts the return value from a controller action into an HTTP response message ...

  9. Win7 +Cuda9.0+cudnn7.0.5 tensorflow-gpu1.5.0 安装实战

    https://blog.csdn.net/gangeqian2/article/details/79358543 https://blog.csdn.net/tomato_sir/article/d ...

  10. [Spring MVC]学习笔记--@RequestMapping支持的返回类型

    下面针对官方文档列出的支持类型进行举例. (本篇例子存于github上, https://github.com/lemonbar/spring-mvc-requestmapping) 可以直接下载, ...