天嵌 ARM开发社区

 找回密码
 注册
查看: 2541|回复: 0

I.MX6Q学习笔记——新版BSP之根文件系统挂载

[复制链接]
freewing 发表于 2015-5-22 09:35:11 | 显示全部楼层 |阅读模式
  本文由博主girlkoo编写,关于E9与TQIMX6Q开发平台根文件系统挂载的文章。
  经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统。

  DTB整理
  前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下:
  1. /*
  2. * Copyright 2012 Freescale Semiconductor, Inc.
  3. * Copyright 2011 Linaro Ltd.
  4. *
  5. * The code contained herein is licensed under the GNU General Public
  6. * License. You may obtain a copy of the GNU General Public License
  7. * Version 2 or later at the following locations:
  8. *
  9. * http://www.opensource.org/licenses/gpl-license.html
  10. * http://www.gnu.org/copyleft/gpl.html
  11. */  
  12.   
  13.   
  14. /dts-v1/;  
  15.   
  16.   
  17. #include "imx6q.dtsi"  
  18.   
  19.   
  20. / {  
  21. <span style="white-space:pre">    </span>model = "Freescale i.MX6 Quad SABRE Smart Device Board";  
  22. <span style="white-space:pre">    </span>compatible = "fsl,imx6q-sabresd", "fsl,imx6q";  
  23.   
  24.   
  25. <span style="white-space:pre">    </span>memory {  
  26. <span style="white-space:pre">        </span>reg = <0x10000000 0x80000000>;  
  27. <span style="white-space:pre">    </span>};  
  28. };  
  29.   
  30.   
  31. &uart1 {  
  32. <span style="white-space:pre">    </span>pinctrl-names = "default";  
  33. <span style="white-space:pre">    </span>pinctrl-0 = <&pinctrl_uart1_2>;  
  34. <span style="white-space:pre">    </span>status = "okay";  
  35. };  
  36.   
  37.   
  38. &usdhc2 {  
  39. <span style="white-space:pre">    </span>pinctrl-names = "default";  
  40. <span style="white-space:pre">    </span>pinctrl-0 = <&pinctrl_usdhc2_2>;  
  41. <span style="white-space:pre">    </span>cd-gpios = <&gpio1 4 0>;  
  42. <span style="white-space:pre">    </span>wp-gpios = <&gpio1 2 0>;  
  43. <span style="white-space:pre">    </span>no-1-8-v;  
  44. <span style="white-space:pre">    </span>keep-power-in-suspend;  
  45. <span style="white-space:pre">    </span>enable-sdio-wakeup;  
  46. <span style="white-space:pre">    </span>status = "okay";  
  47. };  
  48.   
  49.   
  50. &iomuxc {  
  51. <span style="white-space:pre">    </span>pinctrl-names = "default";  
  52.   
  53.   
  54. <span style="white-space:pre">    </span>uart1 {  
  55. <span style="white-space:pre">        </span>pinctrl_uart1_2: uart1grp-2 {  
  56. <span style="white-space:pre">            </span>fsl,pins = <  
  57. <span style="white-space:pre">                </span>MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1  
  58. <span style="white-space:pre">                </span>MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1  
  59. <span style="white-space:pre">            </span>>;  
  60. <span style="white-space:pre">        </span>};  
  61. <span style="white-space:pre">    </span>};  
  62. };  
复制代码


  同时,需要将imx6qdl.dtsi恢复到前文改动之前的状态,因为代码是使用git管理的,因此,可以使用如下指令恢复:
  1. git checkout imx6qdl.dtsi  
复制代码


  制作启动SD卡
  根文件系统的制作方法本文就不再赘述了,可以参考本博客S5PV210相关的记载。本人将制作好的根文件系统打包上传到网盘,如果您也懒得重新制作根文件系统可以暂时使用鄙人制作的的这个:
  Freescale I.MX6Q BSP移植资料整理
  下面开始制作启动SD卡:
  Step1. 使用fdisk命令对SD卡进行分区
  其实,移植3.0内核版本的BSP时已经使用过fdisk命令,与之前的不同是分区的起始offset改在20M的位置上,具体如下:
  (1) 启动分区指令

  其中sdb请根据自己的实际情况制定,执行之前一定要再三确认好,以免误操作导致文件丢失。
  • sudo fdisk /dev/sdb  
  (2) 切换到sector模式
  按u然后回车,重复操作直至切换到sector模式。
  (3) 删除既有分区
  按d然后回车,重复操作直至删除所有分区。
  (4) 创建新分区
  按n创建新分区。
  (5) 执行分区类型。
  按p选择为主分区。
  (6) 输入起始偏移
  输入"+20M",指定该分区的起始位置是20M的位置上。
  (7) 输入结束偏移
  本文仅使用了一个分区,故直接按回车,表示该分区的结束位置是磁盘的末尾。
  (8) 保存分区信息
  按w然后回车,即可保存分区信息。
  Step2. 格式化分区

  使用mkfs命令格式化新创建的分区,对于移动设备,可以考虑使用ext3或者ext4文件系统,指令如下:
  1. sudo mkfs.ext3 /dev/sdb1  
复制代码


  或者
  1. sudo mkfs.ext4 /dev/sdb1  
复制代码


  Step3. 拷贝根文件系统

  由于本人之前制作好的根文件系统是个压缩包,故直接解压到该分区即可。
  1. sudo mount /dev/sdb1 /mnt  
  2. sudo tar jxf rootfs.tar.bz2 -C /mnt  
  3. sudo mv /mnt/rootfs/* /mnt  
  4. sudo rm /mnt/rootfs  
  5. sudo umount /mnt  
复制代码


  至此,就完成了根文件系统的制作。

  配置uboot环境变量
  1. setenv bootargs 'noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw init=/linuxrc'  
  2. setenv bootcmd 'mmc dev 0; mmc read 0x11ffffc0 0x800 0x3000; mmc read 0x18000000 0x5000 0x800; bootm 0x11ffffc0 - 0x18000000'  
  3. saveenv  
复制代码


  之后重启开发板即可。

  效果展示

  启动Log如下:
  1. U-Boot 2013.04-04987-g98fdbdc-dirty (May 03 2015 - 11:46:24)  
  2.   
  3. CPU:   Freescale i.MX6Q rev1.2 at 792 MHz  
  4. CPU:   Temperature 27 C, calibration data: 0x54e4bb69  
  5. Reset cause: POR  
  6. Board: MX6Q/SDL-SabreSD  
  7. I2C:   ready  
  8. DRAM:  1 GiB  
  9. MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2  
  10. No panel detected: default to Hannstar-XGA  
  11. Display: Hannstar-XGA (1024x768)  
  12. In:    serial  
  13. Out:   serial  
  14. Err:   serial  
  15. mmc0 is current device  
  16. Net:   Phy not found  
  17. PHY reset timed out  
  18. FEC [PRIME]  
  19. Warning: failed to set MAC address  
  20.   
  21. Normal Boot  
  22. Hit any key to stop autoboot:  0   
  23. mmc0 is current device  
  24.   
  25. MMC read: dev # 0, block # 2048, count 12288 ... 12288 blocks read: OK  
  26.   
  27. MMC read: dev # 0, block # 20480, count 2048 ... 2048 blocks read: OK  
  28. ## Booting kernel from Legacy Image at 11ffffc0 ...  
  29.    Image Name:   Linux-3.10.17-80739-g33597e3-dir  
  30.    Image Type:   ARM Linux Kernel Image (uncompressed)  
  31.    Data Size:    5289224 Bytes = 5 MiB  
  32.    Load Address: 12000000  
  33.    Entry Point:  12000000  
  34.    Verifying Checksum ... OK  
  35. ## Flattened Device Tree blob at 18000000  
  36.    Booting using the fdt blob at 0x18000000  
  37.    XIP Kernel Image ... OK  
  38. OK  
  39.    Using Device Tree in place at 18000000, end 1800befb  
  40.   
  41. Starting kernel ...  
  42.   
  43. Booting Linux on physical CPU 0x0  
  44. Linux version 3.10.17-80739-g33597e3-dirty (lilianrong@lenovo) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #1 SMP PREEMPT Sun May 3 11:31:37 CST 2015  
  45. CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d  
  46. CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  
  47. Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Freescale i.MX6 Quad SABRE Smart Device Board  
  48. cma: CMA: reserved 320 MiB at 3c000000  
  49. Memory policy: ECC disabled, Data cache writealloc  
  50. PERCPU: Embedded 8 pages/cpu @814f8000 s8896 r8192 d15680 u32768  
  51. Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096  
  52. Kernel command line: noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw rootfstype=ext4 init=/linuxrc  
  53. PID hash table entries: 4096 (order: 2, 16384 bytes)  
  54. Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)  
  55. Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)  
  56. Memory: 1024MB = 1024MB total  
  57. Memory: 697800k/697800k available, 350776k reserved, 0K highmem  
  58. Virtual kernel memory layout:  
  59.     vector  : 0xffff0000 - 0xffff1000   (   4 kB)  
  60.     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)  
  61.     vmalloc : 0xc0800000 - 0xff000000   (1000 MB)  
  62.     lowmem  : 0x80000000 - 0xc0000000   (1024 MB)  
  63.     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)  
  64.     modules : 0x7f000000 - 0x7fe00000   (  14 MB)  
  65.       .text : 0x80008000 - 0x80be704c   (12157 kB)  
  66.       .init : 0x80be8000 - 0x80c2a2c0   ( 265 kB)  
  67.       .data : 0x80c2c000 - 0x80c7c260   ( 321 kB)  
  68.        .bss : 0x80c7c260 - 0x80ce5434   ( 421 kB)  
  69. SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1  
  70. Preemptible hierarchical RCU implementation.  
  71. NR_IRQS:16 nr_irqs:16 16  
  72. L310 cache controller enabled  
  73. l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32070000, Cache size: 1048576 B  
  74. sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms  
  75. CPU identified as i.MX6Q, silicon rev 1.2  
  76. Console: colour dummy device 80x30  
  77. Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)  
  78. pid_max: default: 32768 minimum: 301  
  79. Mount-cache hash table entries: 512  
  80. CPU: Testing write buffer coherency: ok  
  81. CPU0: thread -1, cpu 0, socket 0, mpidr 80000000  
  82. Setting up static identity map for 0x80610608 - 0x80610660  
  83. CPU1: Booted secondary processor  
  84. CPU1: thread -1, cpu 1, socket 0, mpidr 80000001  
  85. CPU2: Booted secondary processor  
  86. CPU2: thread -1, cpu 2, socket 0, mpidr 80000002  
  87. CPU3: Booted secondary processor  
  88. CPU3: thread -1, cpu 3, socket 0, mpidr 80000003  
  89. Brought up 4 CPUs  
  90. SMP: Total of 4 processors activated (6324.22 BogoMIPS).  
  91. CPU: All CPU(s) started in SVC mode.  
  92. devtmpfs: initialized  
  93. pinctrl core: initialized pinctrl subsystem  
  94. regulator-dummy: no parameters  
  95. NET: Registered protocol family 16  
  96. DMA: preallocated 256 KiB pool for atomic coherent allocations  
  97. Use WDOG1 as reset source  
  98. syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered  
  99. vdd1p1: 800 <--> 1375 mV at 1125 mV   
  100. vdd3p0: 2800 <--> 3150 mV at 3000 mV   
  101. vdd2p5: 2000 <--> 2750 mV at 2425 mV   
  102. cpu: 725 <--> 1450 mV at 1150 mV   
  103. vddpu: 725 <--> 1450 mV   
  104. vddsoc: 725 <--> 1450 mV at 1200 mV   
  105. syscon 20e0000.iomuxc-gpr: regmap [mem 0x020e0000-0x020e0037] registered  
  106. syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered  
  107. hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.  
  108. hw-breakpoint: maximum watchpoint size is 4 bytes.  
  109. imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver  
  110. bio: create slab <bio-0> at 0  
  111. mxs-dma 110000.dma-apbh: initialized  
  112. i2c-core: driver [max17135] using legacy suspend method  
  113. i2c-core: driver [max17135] using legacy resume method  
  114. SCSI subsystem initialized  
  115. usbcore: registered new interface driver usbfs  
  116. usbcore: registered new interface driver hub  
  117. usbcore: registered new device driver usb  
  118. Linux video capture interface: v2.00  
  119. pps_core: LinuxPPS API ver. 1 registered  
  120. pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>  
  121. PTP clock support registered  
  122. imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)  
  123. imx-ipuv3 2800000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)  
  124. MIPI CSI2 driver module loaded  
  125. Advanced Linux Sound Architecture Driver Initialized.  
  126. cfg80211: Calling CRDA to update world regulatory domain  
  127. Switching to clocksource mxc_timer1  
  128. NET: Registered protocol family 2  
  129. TCP established hash table entries: 8192 (order: 4, 65536 bytes)  
  130. TCP bind hash table entries: 8192 (order: 4, 65536 bytes)  
  131. TCP: Hash tables configured (established 8192 bind 8192)  
  132. TCP: reno registered  
  133. UDP hash table entries: 512 (order: 2, 16384 bytes)  
  134. UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)  
  135. NET: Registered protocol family 1  
  136. RPC: Registered named UNIX socket transport module.  
  137. RPC: Registered udp transport module.  
  138. RPC: Registered tcp transport module.  
  139. RPC: Registered tcp NFSv4.1 backchannel transport module.  
  140. hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available  
  141. pureg-dummy: no parameters  
  142. imx6_busfreq busfreq.15: DDR medium rate not supported.  
  143. Bus freq driver module loaded  
  144. VFS: Disk quotas dquot_6.5.2  
  145. Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)  
  146. NFS: Registering the id_resolver key type  
  147. Key type id_resolver registered  
  148. Key type id_legacy registered  
  149. jffs2: version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.  
  150. fuse init (API version 7.22)  
  151. msgmni has been set to 2002  
  152. io scheduler noop registered  
  153. io scheduler deadline registered  
  154. io scheduler cfq registered (default)  
  155. imx-weim 21b8000.weim: WEIM driver registered.  
  156. MIPI DSI driver module loaded  
  157. imx-sdma 20ec000.sdma: no iram assigned, using external mem  
  158. imx-sdma 20ec000.sdma: loaded firmware 1.1  
  159. imx-sdma 20ec000.sdma: initialized  
  160. Serial: IMX driver  
  161. 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX  
  162. console [ttymxc0] enabled  
  163. serial: Freescale lpuart driver  
  164. [drm] Initialized drm 1.1.0 20060810  
  165. [drm] Initialized vivante 1.0.0 20120216 on minor 0  
  166. brd: module loaded  
  167. loop: module loaded  
  168. CAN device driver interface  
  169. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver  
  170. usbcore: registered new interface driver usb-storage  
  171. mousedev: PS/2 mouse device common for all mice  
  172. i2c-core: driver [isl29023] using legacy suspend method  
  173. i2c-core: driver [isl29023] using legacy resume method  
  174. snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0  
  175. i2c /dev entries driver  
  176. i2c-core: driver [mag3110] using legacy suspend method  
  177. i2c-core: driver [mag3110] using legacy resume method  
  178. imx2-wdt 20bc000.wdog: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=0)  
  179. cpuidle: using governor ladder  
  180. cpuidle: using governor menu  
  181. sdhci: Secure Digital Host Controller Interface driver  
  182. sdhci: Copyright(c) Pierre Ossman  
  183. sdhci-pltfm: SDHCI platform and OF driver helper  
  184. mmc0: no vqmmc regulator found  
  185. mmc0: no vmmc regulator found  
  186. mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA  
  187. mmc0: host does not support reading read-only switch. assuming write-enable.  
  188. mmc0: new high speed SDHC card at address e624  
  189. mmcblk0: mmc0:e624 SS08G 7.40 GiB   
  190. mmcblk0: p1  
  191. Galcore version 4.6.9.9754  
  192. mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed  
  193. mxc_asrc 2034000.asrc: mxc_asrc registered  
  194. mxc_vpu 2040000.vpu: VPU initialized  
  195. caam 2100000.caam: device ID = 0x0a16010000000000 (Era -524)  
  196. caam 2100000.caam: job rings = 2, qi = 0  
  197. caam 2100000.caam: authenc-hmac-md5-cbc-aes-caam  
  198. caam 2100000.caam: authencesn-hmac-md5-cbc-aes-caam  
  199. caam 2100000.caam: authenc-hmac-sha1-cbc-aes-caam  
  200. caam 2100000.caam: authencesn-hmac-sha1-cbc-aes-caam  
  201. caam 2100000.caam: authenc-hmac-sha224-cbc-aes-caam  
  202. caam 2100000.caam: authencesn-hmac-sha224-cbc-aes-caam  
  203. caam 2100000.caam: authenc-hmac-sha256-cbc-aes-caam  
  204. caam 2100000.caam: authencesn-hmac-sha256-cbc-aes-caam  
  205. caam 2100000.caam: authenc-hmac-md5-cbc-des3_ede-caam  
  206. caam 2100000.caam: authencesn-hmac-md5-cbc-des3_ede-caam  
  207. caam 2100000.caam: authenc-hmac-sha1-cbc-des3_ede-caam  
  208. caam 2100000.caam: authencesn-hmac-sha1-cbc-des3_ede-caam  
  209. caam 2100000.caam: authenc-hmac-sha224-cbc-des3_ede-caam  
  210. caam 2100000.caam: authencesn-hmac-sha224-cbc-des3_ede-caam  
  211. caam 2100000.caam: authenc-hmac-sha256-cbc-des3_ede-caam  
  212. caam 2100000.caam: authencesn-hmac-sha256-cbc-des3_ede-caam  
  213. caam 2100000.caam: authenc-hmac-md5-cbc-des-caam  
  214. caam 2100000.caam: authencesn-hmac-md5-cbc-des-caam  
  215. caam 2100000.caam: authenc-hmac-sha1-cbc-des-caam  
  216. caam 2100000.caam: authencesn-hmac-sha1-cbc-des-caam  
  217. caam 2100000.caam: authenc-hmac-sha224-cbc-des-caam  
  218. caam 2100000.caam: authencesn-hmac-sha224-cbc-des-caam  
  219. caam 2100000.caam: authenc-hmac-sha256-cbc-des-caam  
  220. caam 2100000.caam: authencesn-hmac-sha256-cbc-des-caam  
  221. caam 2100000.caam: ecb-des-caam  
  222. caam 2100000.caam: ecb-arc4-caam  
  223. caam 2100000.caam: ecb-aes-caam  
  224. caam 2100000.caam: ctr-aes-caam  
  225. caam 2100000.caam: cbc-aes-caam  
  226. caam 2100000.caam: ecb-des3-caam  
  227. caam 2100000.caam: cbc-3des-caam  
  228. caam 2100000.caam: cbc-des-caam  
  229. caam 2100000.caam: fsl,sec-v4.0 algorithms registered in /proc/crypto  
  230. platform 2101000.jr0: registering rng-caam  
  231. platform caam_sm: caam_sm_test: 8-byte key test match OK  
  232. platform caam_sm: caam_sm_test: 16-byte key test match OK  
  233. platform caam_sm: caam_sm_test: 32-byte key test match OK  
  234. platform caam_secvio.16: security violation service handlers armed  
  235. usbcore: registered new interface driver usbhid  
  236. usbhid: USB HID core driver  
  237. i2c-core: driver [cs42888] using legacy suspend method  
  238. i2c-core: driver [cs42888] using legacy resume method  
  239. TCP: cubic registered  
  240. NET: Registered protocol family 10  
  241. sit: IPv6 over IPv4 tunneling driver  
  242. NET: Registered protocol family 17  
  243. can: controller area network core (rev 20120528 abi 9)  
  244. NET: Registered protocol family 29  
  245. can: raw protocol (rev 20120528)  
  246. can: broadcast manager protocol (rev 20120528 t)  
  247. can: netlink gateway (rev 20130117) max_hops=1  
  248. 8021q: 802.1Q VLAN Support v1.8  
  249. Key type dns_resolver registered  
  250. VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4  
  251. snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:01:12 UTC (72)  
  252. ALSA device list:  
  253.   No soundcards found.  
  254. EXT4-fs (mmcblk0p1): recovery complete  
  255. EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)  
  256. VFS: Mounted root (ext4 filesystem) on device 179:1.  
  257. devtmpfs: mounted  
  258. Freeing unused kernel memory: 264K (80be8000 - 80c2a000)  
  259. ----------mount all..........  
  260. ----------Starting mdev......  
  261.   
  262. Please press Enter to activate this console.   
  263. @tqimx6q #  
复制代码



  总结

  本次移植不是很顺利,让DTS折腾了一下午,最终决定使用现在这种方式移植,不过这种方式可以更深入的学习DTS。文中有不妥之处请帮忙指出,有任何疑问可以留言讨论。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-17 21:16 , Processed in 1.031244 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表