本文由博主girlkoo编写,关于E9与TQIMX6Q开发平台根文件系统挂载的文章。 经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统。本 DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下: - /*
- * Copyright 2012 Freescale Semiconductor, Inc.
- * Copyright 2011 Linaro Ltd.
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
- /dts-v1/;
-
-
- #include "imx6q.dtsi"
-
-
- / {
- <span style="white-space:pre"> model = "Freescale i.MX6 Quad SABRE Smart Device Board";
- <span style="white-space:pre"> compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
-
-
- <span style="white-space:pre"> memory {
- <span style="white-space:pre"> reg = <0x10000000 0x80000000>;
- <span style="white-space:pre"> };
- };
-
-
- &uart1 {
- <span style="white-space:pre"> pinctrl-names = "default";
- <span style="white-space:pre"> pinctrl-0 = <&pinctrl_uart1_2>;
- <span style="white-space:pre"> status = "okay";
- };
-
-
- &usdhc2 {
- <span style="white-space:pre"> pinctrl-names = "default";
- <span style="white-space:pre"> pinctrl-0 = <&pinctrl_usdhc2_2>;
- <span style="white-space:pre"> cd-gpios = <&gpio1 4 0>;
- <span style="white-space:pre"> wp-gpios = <&gpio1 2 0>;
- <span style="white-space:pre"> no-1-8-v;
- <span style="white-space:pre"> keep-power-in-suspend;
- <span style="white-space:pre"> enable-sdio-wakeup;
- <span style="white-space:pre"> status = "okay";
- };
-
-
- &iomuxc {
- <span style="white-space:pre"> pinctrl-names = "default";
-
-
- <span style="white-space:pre"> uart1 {
- <span style="white-space:pre"> pinctrl_uart1_2: uart1grp-2 {
- <span style="white-space:pre"> fsl,pins = <
- <span style="white-space:pre"> MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
- <span style="white-space:pre"> MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
- <span style="white-space:pre"> >;
- <span style="white-space:pre"> };
- <span style="white-space:pre"> };
- };
同时,需要将imx6qdl.dtsi恢复到前文改动之前的状态,因为代码是使用git管理的,因此,可以使用如下指令恢复: - git checkout imx6qdl.dtsi
制作启动SD卡 根文件系统的制作方法本文就不再赘述了,可以参考本博客S5PV210相关的记载。本人将制作好的根文件系统打包上传到网盘,如果您也懒得重新制作根文件系统可以暂时使用鄙人制作的的这个: 下面开始制作启动SD卡: Step1. 使用fdisk命令对SD卡进行分区 其实,移植3.0内核版本的BSP时已经使用过fdisk命令,与之前的不同是分区的起始offset改在20M的位置上,具体如下: (1) 启动分区指令 其中sdb请根据自己的实际情况制定,执行之前一定要再三确认好,以免误操作导致文件丢失。 (2) 切换到sector模式 按u然后回车,重复操作直至切换到sector模式。 (3) 删除既有分区 按d然后回车,重复操作直至删除所有分区。 (4) 创建新分区 按n创建新分区。 (5) 执行分区类型。 按p选择为主分区。 (6) 输入起始偏移 输入"+20M",指定该分区的起始位置是20M的位置上。 (7) 输入结束偏移 本文仅使用了一个分区,故直接按回车,表示该分区的结束位置是磁盘的末尾。 (8) 保存分区信息 按w然后回车,即可保存分区信息。 Step2. 格式化分区 使用mkfs命令格式化新创建的分区,对于移动设备,可以考虑使用ext3或者ext4文件系统,指令如下: 或者 Step3. 拷贝根文件系统 由于本人之前制作好的根文件系统是个压缩包,故直接解压到该分区即可。 - sudo mount /dev/sdb1 /mnt
- sudo tar jxf rootfs.tar.bz2 -C /mnt
- sudo mv /mnt/rootfs/* /mnt
- sudo rm /mnt/rootfs
- sudo umount /mnt
至此,就完成了根文件系统的制作。 配置uboot环境变量 - setenv bootargs 'noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw init=/linuxrc'
- setenv bootcmd 'mmc dev 0; mmc read 0x11ffffc0 0x800 0x3000; mmc read 0x18000000 0x5000 0x800; bootm 0x11ffffc0 - 0x18000000'
- saveenv
之后重启开发板即可。 总结 本次移植不是很顺利,让DTS折腾了一下午,最终决定使用现在这种方式移植,不过这种方式可以更深入的学习DTS。文中有不妥之处请帮忙指出,有任何疑问可以留言讨论。 相关产品: |