本帖最后由 bruce_helen 于 2014-6-15 23:53 编辑
使用RioTboard开发板后发现,官方给了两个文件系统:一个安卓,一个Ubuntu。对于想在RioTboard上进行基本的嵌入式开发来说这两个文件系统太大了,他们包含了很多我们不需要的东西。 搞过MCU的都想从头开始搭建嵌入式linux系统,让一切在自己的掌控之中。首先,我们需要一个精简的文件系统,上面包含基本的功能即可。
我们可以编译busybox来构建最基本的文件系统,但这里我们为简单起见,先直接使用飞思卡尔官方工具ltib来生成文件系统,后面有时间再使用busybox自己编译一个。
下面是具体的移植步骤。
第一步
由于我们定位嵌入式开发,暂时不需要LCD显示什么的。因此我们对u-boot的默认启动参数作一下修改,当然你完全可以在u-boot命令行状态下使用setenv来修改参数。
修改<u-boot-src>\include\configs文件夹中的mx6solo_RioTboard.h文件,将宏定义CONFIG_EXTRA_ENV_SETTINGS改为:
#define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"ethprime=FEC0\0" \
"uboot=u-boot.bin\0" \
"kernel=uImage\0" \
"bootargs=console=ttymxc1,115200 nosmp " \
"bootargs_mmc=setenv bootargs ${bootargs} " \
"root=/dev/mmcblk0p1 rootwait\0" \
"bootcmd_mmc=run bootargs_mmc; " \
"mmc dev 3; " \
"mmc read ${loadaddr} 0x800 0x2000; bootm\0" \
"bootcmd=run bootcmd_mmc\0"
这样启动时就不会初始化LCD了。编译u-boot,将u-boot.bin按照RioTboard用户手册的操作说明放到下载工具对应的目录下。
第二步
从飞思卡尔官网下载L3.0.35_4.1.0_130816_source.tar.gz压缩包。这个压缩包里面包含了全套工具和源代码。完成安装后使用ltib –c命令就能生成u-boot,kernel,文件系统,一步到位!
我们使用其中的文件系统,这个文件系统压缩后大小为60MB,比ubuntu 800多MB小太多了,下载能省不少时间。
大家没必要都去编译(非常耗时),这里提供编译好的文件系统,下载地址:
链接: http://pan.baidu.com/s/1i3EBOc1 密码: 7toc
将下载的文件直接放入下载工具Mfgtools对应的目录:Mfgtools-Rel-4.1.0_130816_MX6DL_UPDATER\Profiles\MX6DL Linux Update\OS Firmware\files
第三步
修改mfgtool下载工具的配置文件。首先在ucl2.xml文件中增加下面的LIST "i.MX6SOLO-linux-RIOT-eMMC"- <LIST name="i.MX6SOLO-linux-RIOT-eMMC" desc="Choose eMMC as media">
- <CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot-mx6solo-riot.bin" >Loading U-boot</CMD>
- <CMD state="BootStrap" type="load" file="uImage" address="0x10800000"
- loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Kernel.</CMD>
- <CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot" address="0x10C00000"
- loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Initramfs.</CMD>
- <CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
- <CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
- <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
- <CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk0"> Partitioning...</CMD>
- <CMD state="Updater" type="push" body="send" file="files/u-boot-mx6solo-riot.bin">Sending u-boot.bin</CMD>
- <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=512 seek=2 skip=2 conv=fsync">write u-boot.bin to sd card</CMD>
- <CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1536 count=16">clean up u-boot parameter</CMD>
- <CMD state="Updater" type="push" body="send" file="files/uImage">Sending kernel uImage</CMD>
- <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=1M seek=1 conv=fsync">write kernel image to sd card</CMD>
- <!-- 文件系统烧写 -->
- <CMD state="Updater" type="push" body="$ mkfs.ext3 -j /dev/mmcblk0p1">Formatting rootfs partition</CMD>
- <CMD state="Updater" type="push" body="$ mkdir -p /mnt/mmcblk0p1"/>
- <CMD state="Updater" type="push" body="$ mount -t ext3 /dev/mmcblk0p1 /mnt/mmcblk0p1"/>
- <CMD state="Updater" type="push" body="pipe tar -jxv -C /mnt/mmcblk0p1" file="files/rootfs.tar.bz2">Sending and writting rootfs</CMD>
- <CMD state="Updater" type="push" body="frf">Finishing rootfs write</CMD>
- <CMD state="Updater" type="push" body="$ umount /mnt/mmcblk0p1">Unmounting rootfs partition</CMD>
- <CMD state="Updater" type="push" body="$ echo Update Complete!">Done</CMD>
- </LIST>
复制代码 然后将cfg.ini文件中的 [LIST]修改为
[LIST]
name = i.MX6SOLO-linux-RIOT-eMMC
为了方便,这里将两个配置文件打包:
两个配置文件.7z
(5.82 KB, 下载次数: 20)
|