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


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

    内核的编译

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

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

    总结

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

  • 相关阅读:
    Leetcode 1191 K次串联后的最大子数组之和 Kadane 算法
    剑指Offer 38 字符串的排列
    explain结果每个字段的含义说明
    Timsort算法
    synchorized的锁升级
    进程IPC通信方式7种
    死锁知识点总结
    java中各种锁介绍
    运算符优先级记录
    C++ auto关键字
  • 原文地址:https://www.cnblogs.com/subo_peng/p/4769894.html
Copyright © 2020-2023  润新知