原创 【TQIMX6教程】新版BSP之根文件系统挂载

2015-6-6 14:37 1162 14 14 分类: MCU/ 嵌入式

  本文由博主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条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条