本文由博主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"
/ {
model = "Freescale i.MX6 Quad SABRE Smart Device Board";
compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
memory {
reg = <0x10000000 0x80000000>;
};
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1_2>;
status = "okay";
};
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2_2>;
cd-gpios = <&gpio1 4 0>;
wp-gpios = <&gpio1 2 0>;
no-1-8-v;
keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";
};
&iomuxc {
pinctrl-names = "default";
uart1 {
pinctrl_uart1_2: uart1grp-2 {
fsl,pins = <
MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
>;
};
};
};
同时,需要将imx6qdl.dtsi恢复到前文改动之前的状态,因为代码是使用git管理的,因此,可以使用如下指令恢复:
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文件系统,指令如下:
sudo mkfs.ext3 /dev/sdb1
或者
sudo mkfs.ext4 /dev/sdb1
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。文中有不妥之处请帮忙指出,有任何疑问可以留言讨论。
相关产品:
TQIMX6Q开发平台:http://www.embedsky.com/index.php?s=/Product/show/id/83.html
文章评论(0条评论)
登录后参与讨论