Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1685741
  • 博文数量: 511
  • 博客积分: 967
  • 博客等级: 准尉
  • 技术积分: 2560
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-06 14:19
文章分类

全部博文(511)

文章存档

2016年(11)

2015年(61)

2014年(257)

2013年(63)

2012年(119)

分类: Android平台

2015-05-30 18:29:03

老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核。

我使用的内核是linux-3.17.2版本,下面开始编译内核。

(1) 解压内核


  1. tar jxf linux-3.17.2.tar.bz2  
(2)配置linux内核,由于am335x在内核中都归为omap2系列,故可以使用如下命令:



  1. make ARCH=arm omap2plus_defconfig  


(3)编译内核:


  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8  
我的linux工具链前缀是arm-linux-gnueabi-,这个需要根据自己的实际的工具链情况进行替换。


(4)编译dtb:


  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- am335x-evm.dtb  
(5)制作启动盘:


将SD格式化为FAT系统,将MLO、u-boot.img拷贝到根目录下。

在根目录下创建boot目录,将编译好的zImage和am335x-evm.dtb拷贝到该目录下。

(6)u-boot命令行启动Linux内核


  1. load mmc 0 0x88000000 /boot/am335x-evm.dtb  
  2. load mmc 0 0x82000000 /boot/zImage  
  3. bootz 0x82000000 - 0x88000000  
至此,Linux内核就能启动了,看到的Log信息如下:



[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. U-Boot# load mmc 0 ${fdtaddr} /boot/tq335x.dtb  
  2. 34720 bytes read in 9 ms (3.7 MiB/s)  
  3. U-Boot# load mmc 0 ${loadaddr} /boot/zImage  
  4. 4385928 bytes read in 243 ms (17.2 MiB/s)  
  5. U-Boot# bootz ${loadaddr} - ${fdtaddr}  
  6. Kernel image @ 0x82000000 [ 0x000000 - 0x42ec88 ]  
  7. ## Flattened Device Tree blob at 88000000  
  8.    Booting using the fdt blob at 0x88000000  
  9.    Loading Device Tree to 8fff4000, end 8ffff79f ... OK  
  10.   
  11. Starting kernel ...  
  12.   
  13. [    0.000000] Booting Linux on physical CPU 0x0  
  14. [    0.000000] Linux version 3.17.2 (lilianrong@AY140721164813287e77Z) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #1 SMP Mon Nov 10 20:46:04 CST 2014  
  15. [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d  
  16. [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  
  17. [    0.000000] Machine model: TI AM335x EVM  
  18. [    0.000000] cma: Reserved 16 MiB at 9e800000  
  19. [    0.000000] Memory policy: Data cache writeback  
  20. [    0.000000]   HighMem zone: 1048574 pages exceeds freesize 0  
  21. [    0.000000] CPU: All CPU(s) started in SVC mode.  
  22. [    0.000000] AM335X ES2.1 (sgx neon )  
  23. [    0.000000] PERCPU: Embedded 9 pages/cpu @dfa9a000 s14336 r8192 d14336 u36864  
  24. [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129792  
  25. [    0.000000] Kernel command line: console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=9,2048 rootfstype=ubifs rootwait=1  
  26. [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)  
  27. [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)  
  28. [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)  
  29. [    0.000000] Memory: 484792K/523264K available (5668K kernel code, 647K rwdata, 2208K rodata, 406K init, 8210K bss, 38472K reserved, 0K highmem)  
  30. [    0.000000] Virtual kernel memory layout:  
  31. [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)  
  32. [    0.000000]     fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)  
  33. [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)  
  34. [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)  
  35. [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)  
  36. [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)  
  37. [    0.000000]       .text : 0xc0008000 - 0xc07b9478   (7878 kB)  
  38. [    0.000000]       .init : 0xc07ba000 - 0xc081f800   ( 406 kB)  
  39. [    0.000000]       .data : 0xc0820000 - 0xc08c1d08   ( 648 kB)  
  40. [    0.000000]        .bss : 0xc08c1d08 - 0xc10c68e0   (8211 kB)  
  41. [    0.000000] Hierarchical RCU implementation.  
  42. [    0.000000]  RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.  
  43. [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1  
  44. [    0.000000] NR_IRQS:16 nr_irqs:16 16  
  45. [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts  
  46. [    0.000000] Total of 128 interrupts on 1 active controller  
  47. [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz  
  48. [    0.000016] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns  
  49. [    0.000065] OMAP clocksource: timer1 at 24000000 Hz  
  50. [    0.000805] Console: colour dummy device 80x30  
  51. [    0.000857] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar  
  52. [    0.000865] ... MAX_LOCKDEP_SUBCLASSES:  8  
  53. [    0.000873] ... MAX_LOCK_DEPTH:          48  
  54. [    0.000880] ... MAX_LOCKDEP_KEYS:        8191  
  55. [    0.000888] ... CLASSHASH_SIZE:          4096  
  56. [    0.000895] ... MAX_LOCKDEP_ENTRIES:     32768  
  57. [    0.000902] ... MAX_LOCKDEP_CHAINS:      65536  
  58. [    0.000909] ... CHAINHASH_SIZE:          32768  
  59. [    0.000916]  memory used by lock dependency info: 5167 kB  
  60. [    0.000924]  per task-struct memory footprint: 1152 bytes  
  61. [    0.000966] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)  
  62. [    0.079040] pid_max: default: 32768 minimum: 301  
  63. [    0.079436] Security Framework initialized  
  64. [    0.079561] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)  
  65. [    0.079574] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)  
  66. [    0.081771] CPU: Testing write buffer coherency: ok  
  67. [    0.082962] CPU0: thread -1, cpu 0, socket -1, mpidr 0  
  68. [    0.083083] Setting up static identity map for 0x8055f030 - 0x8055f0a0  
  69. [    0.086327] Brought up 1 CPUs  
  70. [    0.086346] SMP: Total of 1 processors activated.  
  71. [    0.086356] CPU: All CPU(s) started in SVC mode.  
  72. [    0.088958] devtmpfs: initialized  
  73. [    0.097809] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3  
  74. [    0.134392] omap_hwmod: tptc0 using broken dt data from edma  
  75. [    0.134758] omap_hwmod: tptc1 using broken dt data from edma  
  76. [    0.135103] omap_hwmod: tptc2 using broken dt data from edma  
  77. [    0.143122] omap_hwmod: debugss: _wait_target_disable failed  
  78. [    0.201002] pinctrl core: initialized pinctrl subsystem  
  79. [    0.203537] regulator-dummy: no parameters  
  80. [    0.233163] NET: Registered protocol family 16  
  81. [    0.241735] DMA: preallocated 256 KiB pool for atomic coherent allocations  
  82. [    0.243918] cpuidle: using governor ladder  
  83. [    0.243946] cpuidle: using governor menu  
  84. [    0.255876] OMAP GPIO hardware version 0.1  
  85. [    0.271254] omap-gpmc 50000000.gpmc: could not find pctldev for node /pinmux@44e10800/nandflash_pins_s0, deferring probe  
  86. [    0.271303] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral  
  87. [    0.275826] No ATAGs?  
  88. [    0.275857] hw-breakpoint: debug architecture 0x4 unsupported.  
  89. [    0.319359] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver  
  90. [    0.320718] vbat: 5000 mV   
  91. [    0.321481] lis3_reg: no parameters  
  92. [    0.324766] SCSI subsystem initialized  
  93. [    0.325577] usbcore: registered new interface driver usbfs  
  94. [    0.325755] usbcore: registered new interface driver hub  
  95. [    0.329802] usbcore: registered new device driver usb  
  96. [    0.330683] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c0_pins, deferring probe  
  97. [    0.330726] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral  
  98. [    0.330784] omap_i2c 4802a000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c1_pins, deferring probe  
  99. [    0.330808] platform 4802a000.i2c: Driver omap_i2c requests probe deferral  
  100. [    0.335082] Switched to clocksource timer1  
  101. [    0.480572] NET: Registered protocol family 2  
  102. [    0.482404] TCP established hash table entries: 4096 (order: 2, 16384 bytes)  
  103. [    0.482587] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)  
  104. [    0.483951] TCP: Hash tables configured (established 4096 bind 4096)  
  105. [    0.484145] TCP: reno registered  
  106. [    0.484169] UDP hash table entries: 256 (order: 2, 20480 bytes)  
  107. [    0.484359] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)  
  108. [    0.485643] NET: Registered protocol family 1  
  109. [    0.487595] RPC: Registered named UNIX socket transport module.  
  110. [    0.487618] RPC: Registered udp transport module.  
  111. [    0.487628] RPC: Registered tcp transport module.  
  112. [    0.487637] RPC: Registered tcp NFSv4.1 backchannel transport module.  
  113. [    0.488910] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available  
  114. [    0.493146] futex hash table entries: 256 (order: 2, 16384 bytes)  
  115. [    0.498771] VFS: Disk quotas dquot_6.5.2  
  116. [    0.498919] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)  
  117. [    0.500956] NFS: Registering the id_resolver key type  
  118. [    0.501307] Key type id_resolver registered  
  119. [    0.501322] Key type id_legacy registered  
  120. [    0.501464] jffs2: version 2.2. (NAND) (SUMMARY)  漏 2001-2006 Red Hat, Inc.  
  121. [    0.501877] msgmni has been set to 978  
  122. [    0.507196] io scheduler noop registered  
  123. [    0.507232] io scheduler deadline registered  
  124. [    0.507301] io scheduler cfq registered (default)  
  125. [    0.509624] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568  
  126. [    0.513086] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled  
  127. [    0.519109] omap_uart 44e09000.serial: no wakeirq for uart0  
  128. [    0.519691] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0  
  129. [    1.212068] console [ttyO0] enabled  
  130. [    1.221114] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20  
  131. [    1.253833] brd: module loaded  
  132. [    1.273197] loop: module loaded  
  133. [    1.279721] mtdoops: mtd device (mtddev=name/number) must be supplied  
  134. [    1.289621] usbcore: registered new interface driver asix  
  135. [    1.295487] usbcore: registered new interface driver ax88179_178a  
  136. [    1.301980] usbcore: registered new interface driver cdc_ether  
  137. [    1.308269] usbcore: registered new interface driver smsc95xx  
  138. [    1.314388] usbcore: registered new interface driver net1080  
  139. [    1.320444] usbcore: registered new interface driver cdc_subset  
  140. [    1.326767] usbcore: registered new interface driver zaurus  
  141. [    1.332806] usbcore: registered new interface driver cdc_ncm  
  142. [    1.340919] usbcore: registered new interface driver cdc_wdm  
  143. [    1.347170] usbcore: registered new interface driver usb-storage  
  144. [    1.353622] usbcore: registered new interface driver usbtest  
  145. [    1.364045] mousedev: PS/2 mouse device common for all mice  
  146. [    1.374760] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0  
  147. [    1.382981] i2c /dev entries driver  
  148. [    1.386769] Driver for 1-wire Dallas network protocol.  
  149. [    1.398911] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec  
  150. [    1.408869] omap_hsmmc 48060000.mmc: unable to get vmmc regulator -517  
  151. [    1.416459] platform 48060000.mmc: Driver omap_hsmmc requests probe deferral  
  152. [    1.424503] ledtrig-cpu: registered to indicate activity on CPUs  
  153. [    1.431429] usbcore: registered new interface driver usbhid  
  154. [    1.437293] usbhid: USB HID core driver  
  155. [    1.442582] oprofile: using arm/armv7  
  156. [    1.447131] TCP: cubic registered  
  157. [    1.450611] Initializing XFRM netlink socket  
  158. [    1.455238] NET: Registered protocol family 17  
  159. [    1.459968] NET: Registered protocol family 15  
  160. [    1.465016] Key type dns_resolver registered  
  161. [    1.469680] omap_voltage_late_init: Voltage driver support not added  
  162. [    1.476366] sr_dev_init: No voltage domain specified for smartreflex0. Cannot initialize  
  163. [    1.484816] sr_dev_init: No voltage domain specified for smartreflex1. Cannot initialize  
  164. [    1.494347] ThumbEE CPU extension supported.  
  165. [    1.498923] Registering SWP/SWPB emulation handler  
  166. [    1.503942] SmartReflex Class3 initialized  
  167. [    1.517159] omap-gpmc 50000000.gpmc: GPMC revision 6.0  
  168. [    1.524094] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xd3  
  169. [    1.530939] nand: Samsung NAND 1GiB 3,3V 8-bit  
  170. [    1.535638] nand: 1024MiB, SLC, page size: 2048, OOB size: 64  
  171. [    1.541640] nand: error: CONFIG_MTD_NAND_OMAP_BCH not enabled  
  172. [    1.547760] omap2-nand: probe of omap2-nand.0 failed with error -22  
  173. [    1.663619] tps65910 0-002d: No interrupt support, no core IRQ  
  174. [    1.680749] vrtc: 1800 mV   
  175. [    1.684124] vrtc: supplied by vbat  
  176. [    1.691498] vio: at 1500 mV   
  177. [    1.694737] vio: supplied by vbat  
  178. [    1.701644] vdd_mpu: 912 <--> 1312 mV at 1325 mV   
  179. [    1.706882] vdd_mpu: supplied by vbat  
  180. [    1.713875] vdd_core: 912 <--> 1150 mV at 1137 mV   
  181. [    1.719187] vdd_core: supplied by vbat  
  182. [    1.725964] vdd3: 5000 mV   
  183. [    1.731302] vdig1: at 1800 mV   
  184. [    1.734706] vdig1: supplied by vbat  
  185. [    1.741264] vdig2: at 1800 mV   
  186. [    1.744671] vdig2: supplied by vbat  
  187. [    1.751054] vpll: at 1800 mV   
  188. [    1.754365] vpll: supplied by vbat  
  189. [    1.760730] vdac: at 1800 mV   
  190. [    1.764036] vdac: supplied by vbat  
  191. [    1.770317] vaux1: at 1800 mV   
  192. [    1.773717] vaux1: supplied by vbat  
  193. [    1.780114] vaux2: at 3300 mV   
  194. [    1.783514] vaux2: supplied by vbat  
  195. [    1.789893] vaux33: at 3300 mV   
  196. [    1.793397] vaux33: supplied by vbat  
  197. [    1.799920] vmmc: 1800 <--> 3300 mV at 3300 mV   
  198. [    1.804999] vmmc: supplied by vbat  
  199. [    1.810938] vbb: at 3000 mV   
  200. [    1.814411] vbb: supplied by vbat  
  201. [    1.819729] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz  
  202. [    1.833220] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz  
  203. [    1.877209] UBI error: ubi_init: cannot open mtd 9, error -19  
  204. [    1.944943] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6  
  205. [    1.951329] davinci_mdio 4a101000.mdio: detected phy mask ffffffde  
  206. [    1.961340] libphy: 4a101000.mdio: probed  
  207. [    1.965645] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver unknown  
  208. [    1.974006] davinci_mdio 4a101000.mdio: phy[5]: device 4a101000.mdio:05, driver unknown  
  209. [    1.983572] cpsw 4a100000.ethernet: Detected MACID = c4:ed:ba:88:b5:e4  
  210. [    1.994560] input: volume_keys@0 as /devices/volume_keys@0/input/input0  
  211. [    2.005474] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)  
  212. [    2.014497] sr_init: No PMIC hook to init smartreflex  
  213. [    2.020120] sr_init: platform driver register failed for SR  
  214. [    2.043081] lis3_reg: disabling  
  215. [    2.049937] UBIFS error (pid 1): ubifs_mount: cannot open "ubi0:rootfs", error -19  
  216. [    2.058011] VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0): error -19  
  217. [    2.066393] Please append a correct "root=" boot option; here are the available partitions:  
  218. [    2.075257] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)  
  219. [    2.083990] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)  
(7)小结


从启动Log上很容易看出,现在内核无法挂在根文件系统,在下一篇文章中,我会制作根文件系统。

本文作者:girlkoo

本文链接:http://blog.csdn.net/girlkoo/article/details/41223733

 

AM335x(TQ335x)学习笔记——挂载Ramdisk

分类: 嵌入式开发 1541人阅读 评论(10)  举报

上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramdisk供u-boot启动内核使用。

(1)制作根文件系统

使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章,该文章链接如下:

S5PV210(TQ210)学习笔记——内核移植与文件系统构建

需要补充的是,文章"S5PV210(TQ210)学习笔记——内核移植与文件系统构建"中记录rootfs文件系统构建时漏掉了一步,没有在etc/sysconfig/目录下创建HOSTNAME文件,可以手动添加HOSTNAME文件,其内容为主机名称,本文使用了tq335x。在rootfs目录可以通过如下指令创建:


  1. echo tq335x > etc/sysconfig/HOSTNAME  
本文在已制作好的rootfs基础上,制作ramdisk。


(2)制作ramdisk

制作ramdisk的方式很多,最方便的是使用指令genext2fs。ubuntu操作系统上可以通过apt-get工具直接安装genext2fs工具:


  1. sudo apt-get install genext2fs  
其它操作系统也有类似的管理工具,这里就不一一列举了,下面使用genext2fs打包rootfs目录。命令如下:



  1. genext2fs -b 4096 -d rootfs/ ramdisk  
然后使用gzip命令压缩ramdisk:


  1. gzip -9 -f ramdisk  
执行完成该命令后可以得到文件ramdisk.gz。


由于u-boot启动内核使用的ramdisk需要有u-boot的image头,故需要使用编译u-boot时生成的工具mkimage将ramdisk.gz制作为ramdisk.img。其中,工具mkimage位于u-boot的tools目录下,制作ramdisk.img的指令如下:


  1. u-boot-2014.10/tools/mkimage -A arm -O linux -T ramdisk -C none -a 0x88080000 -n "ramdisk" -d ramdisk.gz ramdisk.img  
命令中mkimage前的路径根据自己实际执行的路径指定即可。


这样,就完成了u-boot可以使用的ramdisk制作,然后将ramdisk.img拷贝到SD卡的boot目录下即可。

(3)挂载ramdisk

老式的ATAGS方式启动内核时使用ATAG传递bootargs给内核,由于本文使用的dtb方式启动内核,故采取dtb的chosen方式传递bootargs给内核。

Step1: 修改内核配置


  1. make ARCH=arm menuconfig  
进入配置项:


  1. Boot options  --->  
按N键取消配置项:


  1. [ ] Use appended device tree blob to zImage (EXPERIMENTAL)  
官方内核默认启用了该项配置。启用该项配置后内核兼容老式的ATAGS方式内核启动,关闭后则使用新式的dtb方式启动,故此处禁用了此项配置。


按ESC保存配置后退出menuconfig画面,重新编译内核:


  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8  
Step2:添加bootargs到dtb


切换到内核目录arch/arm/boot/dts/,拷贝am335x-evm.dts为tq335x.dts:


  1. cp am335x-evm.dts tq335x.dts  
打开tq335x.dts,在memory项后通过chosen方式添加bootargs,添加内容如下:


  1. memory {  
  2.     device_type = "memory";  
  3.     reg = <0x80000000 0x10000000>; /* 256 MB */  
  4. };  
  5.   
  6. chosen {  
  7.     bootargs = "console=ttyO0,115200n8 root=/dev/ram0";  
  8. };  
  9.   
  10. ...  
其中chosen节点是新添加的,memory节点是原有的。


接下来重新编译dtb:


  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- tq335x.dtb  
将新编译得到的tq335x.dtb拷贝到SD的boot目录下。至此,准备工作就完成了,下面我们使用新制作的ramdisk.img和tq335x.dtb启动内核。


Step3:使用新制作的ramdisk.img和tq335x.dtb启动内核

将SD插到开发板上,给开发板上电(开发板切换到SD卡启动模式),可以通过按任意键打断内核启动进入u-boot命令模式(由于之前没有配置u-boot的bootcmd环境变量,而默认的u-boot环境无法启动内核,故,开发板上电后不按键的话也会进入u-boot的命令行模式)。

首先是加载内核到DRAM:


  1. load mmc 0 ${loadaddr} /boot/zImage  
其中,${loadaddr}在u-boot的环境变量中默认指定为0x82000000,这里可以直接打数字。


然后是加载dtb到DRAM:

  1. load mmc 0 ${fdtaddr} /boot/tq335x.dtb  
${fdtaddr}的默认值是0x88000000。


接下来加载ramdisk到DRAM:

  1. load mmc 0 ${rdaddr} /boot/ramdisk.img  
${rdaddr}的默认值是0x88080000
最后就是将ramdisk和dtb的加载地址作为参数启动内核:


  1. bootz ${loadaddr} ${rdaddr} ${fdtaddr}  
至此,Linux内核已经能够正常启动并进入终端模式了。

启动Log如下:

  1. Hit any key to stop autoboot:  0   
  2. U-Boot# load mmc 0 ${fdtaddr} /boot/tq335x.dtb  
  3. 34781 bytes read in 9 ms (3.7 MiB/s)  
  4. U-Boot# load mmc 0 ${loadaddr} /boot/zImage  
  5. 4377824 bytes read in 242 ms (17.3 MiB/s)  
  6. U-Boot# load mmc 0 ${rdaddr} /boot/ramdisk.img  
  7. 1120934 bytes read in 68 ms (15.7 MiB/s)  
  8. U-Boot# bootz ${loadaddr} ${rdaddr} ${fdtaddr}  
  9. Kernel image @ 0x82000000 [ 0x000000 - 0x42cce0 ]  
  10. ## Loading init Ramdisk from Legacy Image at 88080000 ...  
  11.    Image Name:   ramdisk  
  12.    Created:      2014-11-18  15:47:41 UTC  
  13.    Image Type:   ARM Linux RAMDisk Image (uncompressed)  
  14.    Data Size:    1120870 Bytes = 1.1 MiB  
  15.    Load Address: 88080000  
  16.    Entry Point:  88080000  
  17.    Verifying Checksum ... OK  
  18. ## Flattened Device Tree blob at 88000000  
  19.    Booting using the fdt blob at 0x88000000  
  20.    Loading Ramdisk to 8feee000, end 8ffffa66 ... OK  
  21.    Loading Device Tree to 8fee2000, end 8feed7dc ... OK  
  22.   
  23.   
  24. Starting kernel ...  
  25.   
  26.   
  27. [    0.000000] Booting Linux on physical CPU 0x0  
  28. [    0.000000] Linux version 3.17.2 (lilianrong@AY140721164813287e77Z) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #1 SMP Tue Nov 18 22:49:31 CST 2014  
  29. [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d  
  30. [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  
  31. [    0.000000] Machine model: TI AM335x EVM  
  32. [    0.000000] cma: Reserved 16 MiB at 9e800000  
  33. [    0.000000] Memory policy: Data cache writeback  
  34. [    0.000000]   HighMem zone: 1048574 pages exceeds freesize 0  
  35. [    0.000000] CPU: All CPU(s) started in SVC mode.  
  36. [    0.000000] AM335X ES2.1 (sgx neon )  
  37. [    0.000000] PERCPU: Embedded 9 pages/cpu @dfa9a000 s14336 r8192 d14336 u36864  
  38. [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129792  
  39. [    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/ram0  
  40. [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)  
  41. [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)  
  42. [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)  
  43. [    0.000000] Memory: 483692K/523264K available (5668K kernel code, 647K rwdata, 2208K rodata, 406K init, 8210K bss, 39572K reserved, 0K highmem)  
  44. [    0.000000] Virtual kernel memory layout:  
  45. [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)  
  46. [    0.000000]     fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)  
  47. [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)  
  48. [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)  
  49. [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)  
  50. [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)  
  51. [    0.000000]       .text : 0xc0008000 - 0xc07b9478   (7878 kB)  
  52. [    0.000000]       .init : 0xc07ba000 - 0xc081f800   ( 406 kB)  
  53. [    0.000000]       .data : 0xc0820000 - 0xc08c1d08   ( 648 kB)  
  54. [    0.000000]        .bss : 0xc08c1d08 - 0xc10c68e0   (8211 kB)  
  55. [    0.000000] Hierarchical RCU implementation.  
  56. [    0.000000]  RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.  
  57. [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1  
  58. [    0.000000] NR_IRQS:16 nr_irqs:16 16  
  59. [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts  
  60. [    0.000000] Total of 128 interrupts on 1 active controller  
  61. [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz  
  62. [    0.000013] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns  
  63. [    0.000061] OMAP clocksource: timer1 at 24000000 Hz  
  64. [    0.000795] Console: colour dummy device 80x30  
  65. [    0.000847] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar  
  66. [    0.000856] ... MAX_LOCKDEP_SUBCLASSES:  8  
  67. [    0.000863] ... MAX_LOCK_DEPTH:          48  
  68. [    0.000870] ... MAX_LOCKDEP_KEYS:        8191  
  69. [    0.000878] ... CLASSHASH_SIZE:          4096  
  70. [    0.000885] ... MAX_LOCKDEP_ENTRIES:     32768  
  71. [    0.000892] ... MAX_LOCKDEP_CHAINS:      65536  
  72. [    0.000900] ... CHAINHASH_SIZE:          32768  
  73. [    0.000907]  memory used by lock dependency info: 5167 kB  
  74. [    0.000915]  per task-struct memory footprint: 1152 bytes  
  75. [    0.000956] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)  
  76. [    0.079037] pid_max: default: 32768 minimum: 301  
  77. [    0.079438] Security Framework initialized  
  78. [    0.079564] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)  
  79. [    0.079576] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)  
  80. [    0.081769] CPU: Testing write buffer coherency: ok  
  81. [    0.082962] CPU0: thread -1, cpu 0, socket -1, mpidr 0  
  82. [    0.083084] Setting up static identity map for 0x8055f030 - 0x8055f0a0  
  83. [    0.086327] Brought up 1 CPUs  
  84. [    0.086347] SMP: Total of 1 processors activated.  
  85. [    0.086357] CPU: All CPU(s) started in SVC mode.  
  86. [    0.088983] devtmpfs: initialized  
  87. [    0.097743] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3  
  88. [    0.132789] omap_hwmod: tptc0 using broken dt data from edma  
  89. [    0.133139] omap_hwmod: tptc1 using broken dt data from edma  
  90. [    0.133467] omap_hwmod: tptc2 using broken dt data from edma  
  91. [    0.141252] omap_hwmod: debugss: _wait_target_disable failed  
  92. [    0.198964] pinctrl core: initialized pinctrl subsystem  
  93. [    0.201633] regulator-dummy: no parameters  
  94. [    0.231057] NET: Registered protocol family 16  
  95. [    0.239540] DMA: preallocated 256 KiB pool for atomic coherent allocations  
  96. [    0.241725] cpuidle: using governor ladder  
  97. [    0.241754] cpuidle: using governor menu  
  98. [    0.253658] OMAP GPIO hardware version 0.1  
  99. [    0.268591] omap-gpmc 50000000.gpmc: could not find pctldev for node /pinmux@44e10800/nandflash_pins_s0, deferring probe  
  100. [    0.268635] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral  
  101. [    0.273243] No ATAGs?  
  102. [    0.273274] hw-breakpoint: debug architecture 0x4 unsupported.  
  103. [    0.316650] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver  
  104. [    0.318001] vbat: 5000 mV   
  105. [    0.318774] lis3_reg: no parameters  
  106. [    0.322209] SCSI subsystem initialized  
  107. [    0.323028] usbcore: registered new interface driver usbfs  
  108. [    0.323207] usbcore: registered new interface driver hub  
  109. [    0.327009] usbcore: registered new device driver usb  
  110. [    0.327877] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c0_pins, deferring probe  
  111. [    0.327917] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral  
  112. [    0.327972] omap_i2c 4802a000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c1_pins, deferring probe  
  113. [    0.327995] platform 4802a000.i2c: Driver omap_i2c requests probe deferral  
  114. [    0.332363] Switched to clocksource timer1  
  115. [    0.477595] NET: Registered protocol family 2  
  116. [    0.479415] TCP established hash table entries: 4096 (order: 2, 16384 bytes)  
  117. [    0.479601] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)  
  118. [    0.480965] TCP: Hash tables configured (established 4096 bind 4096)  
  119. [    0.481157] TCP: reno registered  
  120. [    0.481186] UDP hash table entries: 256 (order: 2, 20480 bytes)  
  121. [    0.481375] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)  
  122. [    0.482657] NET: Registered protocol family 1  
  123. [    0.484656] RPC: Registered named UNIX socket transport module.  
  124. [    0.484680] RPC: Registered udp transport module.  
  125. [    0.484690] RPC: Registered tcp transport module.  
  126. [    0.484699] RPC: Registered tcp NFSv4.1 backchannel transport module.  
  127. [    0.485566] Trying to unpack rootfs image as initramfs...  
  128. [    0.487045] rootfs image is not initramfs (no cpio magic); looks like an initrd  
  129. [    0.497016] Freeing initrd memory: 1092K (cfeee000 - cffff000)  
  130. [    0.497514] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available  
  131. [    0.501968] futex hash table entries: 256 (order: 2, 16384 bytes)  
  132. [    0.507634] VFS: Disk quotas dquot_6.5.2  
  133. [    0.507781] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)  
  134. [    0.510254] NFS: Registering the id_resolver key type  
  135. [    0.510637] Key type id_resolver registered  
  136. [    0.510653] Key type id_legacy registered  
  137. [    0.510794] jffs2: version 2.2. (NAND) (SUMMARY)  漏 2001-2006 Red Hat, Inc.  
  138. [    0.511229] msgmni has been set to 978  
  139. [    0.516624] io scheduler noop registered  
  140. [    0.516656] io scheduler deadline registered  
  141. [    0.516726] io scheduler cfq registered (default)  
  142. [    0.519057] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568  
  143. [    0.522800] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled  
  144. [    0.528945] omap_uart 44e09000.serial: no wakeirq for uart0  
  145. [    0.529540] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0  
  146. [    1.236732] console [ttyO0] enabled  
  147. [    1.245368] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20  
  148. [    1.277842] brd: module loaded  
  149. [    1.297230] loop: module loaded  
  150. [    1.303764] mtdoops: mtd device (mtddev=name/number) must be supplied  
  151. [    1.313662] usbcore: registered new interface driver asix  
  152. [    1.319456] usbcore: registered new interface driver ax88179_178a  
  153. [    1.326006] usbcore: registered new interface driver cdc_ether  
  154. [    1.332305] usbcore: registered new interface driver smsc95xx  
  155. [    1.338427] usbcore: registered new interface driver net1080  
  156. [    1.344489] usbcore: registered new interface driver cdc_subset  
  157. [    1.350791] usbcore: registered new interface driver zaurus  
  158. [    1.356854] usbcore: registered new interface driver cdc_ncm  
  159. [    1.364965] usbcore: registered new interface driver cdc_wdm  
  160. [    1.371056] usbcore: registered new interface driver usb-storage  
  161. [    1.377647] usbcore: registered new interface driver usbtest  
  162. [    1.388450] mousedev: PS/2 mouse device common for all mice  
  163. [    1.399599] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0  
  164. [    1.407152] 44e3e000.rtc: already running  
  165. [    1.411995] i2c /dev entries driver  
  166. [    1.415787] Driver for 1-wire Dallas network protocol.  
  167. [    1.428670] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec  
  168. [    1.438626] omap_hsmmc 48060000.mmc: unable to get vmmc regulator -517  
  169. [    1.446110] platform 48060000.mmc: Driver omap_hsmmc requests probe deferral  
  170. [    1.454198] ledtrig-cpu: registered to indicate activity on CPUs  
  171. [    1.461042] usbcore: registered new interface driver usbhid  
  172. [    1.466922] usbhid: USB HID core driver  
  173. [    1.472270] oprofile: using arm/armv7  
  174. [    1.476763] TCP: cubic registered  
  175. [    1.480243] Initializing XFRM netlink socket  
  176. [    1.484880] NET: Registered protocol family 17  
  177. [    1.489611] NET: Registered protocol family 15  
  178. [    1.494616] Key type dns_resolver registered  
  179. [    1.499266] omap_voltage_late_init: Voltage driver support not added  
  180. [    1.505960] sr_dev_init: No voltage domain specified for smartreflex0. Cannot initialize  
  181. [    1.514433] sr_dev_init: No voltage domain specified for smartreflex1. Cannot initialize  
  182. [    1.523926] ThumbEE CPU extension supported.  
  183. [    1.528444] Registering SWP/SWPB emulation handler  
  184. [    1.533522] SmartReflex Class3 initialized  
  185. [    1.547402] omap-gpmc 50000000.gpmc: GPMC revision 6.0  
  186. [    1.554563] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xd3  
  187. [    1.561211] nand: Samsung NAND 1GiB 3,3V 8-bit  
  188. [    1.565966] nand: 1024MiB, SLC, page size: 2048, OOB size: 64  
  189. [    1.571968] nand: error: CONFIG_MTD_NAND_OMAP_BCH not enabled  
  190. [    1.578104] omap2-nand: probe of omap2-nand.0 failed with error -22  
  191. [    1.691744] tps65910 0-002d: No interrupt support, no core IRQ  
  192. [    1.709178] vrtc: 1800 mV   
  193. [    1.712892] vrtc: supplied by vbat  
  194. [    1.719981] vio: at 1500 mV   
  195. [    1.723353] vio: supplied by vbat  
  196. [    1.730169] vdd_mpu: 912 <--> 1312 mV at 1325 mV   
  197. [    1.735377] vdd_mpu: supplied by vbat  
  198. [    1.742659] vdd_core: 912 <--> 1150 mV at 1137 mV   
  199. [    1.747889] vdd_core: supplied by vbat  
  200. [    1.754583] vdd3: 5000 mV   
  201. [    1.760090] vdig1: at 1800 mV   
  202. [    1.763611] vdig1: supplied by vbat  
  203. [    1.769998] vdig2: at 1800 mV   
  204. [    1.773480] vdig2: supplied by vbat  
  205. [    1.779839] vpll: at 1800 mV   
  206. [    1.783256] vpll: supplied by vbat  
  207. [    1.789576] vdac: at 1800 mV   
  208. [    1.792977] vdac: supplied by vbat  
  209. [    1.799236] vaux1: at 1800 mV   
  210. [    1.802749] vaux1: supplied by vbat  
  211. [    1.809109] vaux2: at 3300 mV   
  212. [    1.812606] vaux2: supplied by vbat  
  213. [    1.818973] vaux33: at 3300 mV   
  214. [    1.822579] vaux33: supplied by vbat  
  215. [    1.829010] vmmc: 1800 <--> 3300 mV at 3300 mV   
  216. [    1.834051] vmmc: supplied by vbat  
  217. [    1.840026] vbb: at 3000 mV   
  218. [    1.843609] vbb: supplied by vbat  
  219. [    1.848858] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz  
  220. [    1.862630] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz  
  221. [    1.972271] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6  
  222. [    1.978680] davinci_mdio 4a101000.mdio: detected phy mask ffffffde  
  223. [    1.988850] libphy: 4a101000.mdio: probed  
  224. [    1.993152] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver unknown  
  225. [    2.001513] davinci_mdio 4a101000.mdio: phy[5]: device 4a101000.mdio:05, driver unknown  
  226. [    2.011094] cpsw 4a100000.ethernet: Detected MACID = c4:ed:ba:88:b5:e4  
  227. [    2.022260] input: volume_keys@0 as /devices/volume_keys@0/input/input0  
  228. [    2.032966] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)  
  229. [    2.041988] sr_init: No PMIC hook to init smartreflex  
  230. [    2.047636] sr_init: platform driver register failed for SR  
  231. [    2.071187] lis3_reg: disabling  
  232. [    2.078305] RAMDISK: gzip image found at block 0  
  233. [    2.088654] mmc0: host does not support reading read-only switch. assuming write-enable.  
  234. [    2.114634] mmc0: new high speed SDHC card at address aaaa  
  235. [    2.124023] mmcblk0: mmc0:aaaa SL16G 14.8 GiB   
  236. [    2.145511]  mmcblk0:  
  237. [    2.264995] VFS: Mounted root (ext2 filesystem) readonly on device 1:0.  
  238. [    2.273502] devtmpfs: mounted  
  239. [    2.277355] Freeing unused kernel memory: 404K (c07ba000 - c081f000)  
  240. ----------mount all..........  
  241. ----------Starting mdev......  
  242.   
  243.   
  244. Please press Enter to activate this console.   
  245. @tq335x #ls  
  246. HOSTNAME    dev         lib         mnt         sbin        usr  
  247. bin         etc         linuxrc     proc        sys         var  
  248. boot        home        lost+found  root        tmp  
(4)小结


到目前为止,已经能够成功启动内核了,接下来我们会在新内核的基础上添加tq335x板载驱动。


本文作者:girlkoo

本文链接:http://blog.csdn.net/girlkoo/article/details/41258583



本文在该文章制作好的rootfs基础上,制作ramdisk。

阅读(3516) | 评论(0) | 转发(0) |
0

上一篇:关于 mkimage

下一篇:制作根文件系统ramdisk

给主人留下些什么吧!~~