首先TI-SDK提供了SD卡启动制作的工具及说明,通过如下地址可以下载
http://software-dl.ti.com/processor-sdk-linux/esd/AM335X/latest/index_FDS.html
Windows SD Card Creation Guide为Help文件
下载镜像am335x-evm-linux-04.03.00.05.img.zip来使用。
其中需要下载2个工具
1) 7z1805-x64.exe—用来解压img.zip文件的
2) win32diskimager-1.0.0-install.exe—用来写入解压后的文件到分区后的SD中
接着问题来了,我自己制作的是0.3.03版本。MLO和uboot.img已经zImage还有模块文件都如何更新到SD卡?
1.更新uboot
首先想到的就是替换到刚刚制作好的SD卡中。可是第一个分区为FAT32 名称为boot
在window能打开,看到里面是MLO和uboot.img文件。能满足我的需求。替换后,我制作的MLO和uboot.img是可以成功引导Kernel的。
2.更新Kernel
另外一个分区读取不了?
为什么linux通过SD卡启动需要制作了个分区呢?目前还不清楚。可能是uboot里面设置的。
但是我查到另外一个分区是ext4的,那么就是linux用的文件系统。找到方法了。把sd卡连接到ubuntu系统中,能打开第二个分区rootfs,进行文件更新了,能看到里面boot文件夹下有zImage。
3.更新DTB
Dtb的路径我也看到了和kernel一样。
4.更新modules
modules的路径是放哪里呀?
网上搜索了下是在/lib/modules。开发板的lib/modules里面是一个版本号文件夹。把自己编译的lib下的带版本号文件夹都copy到开发板的lib/modules即可。
SD卡启动后可以正常挂在更新后的linux系统。
可以通过'uname -a'来查看版本,文件系统未更新。
通过'lsmod'命令查看加载的模块。能显示则表示成功。加载的模块一定是和kernel版本一致的。
最后成功!
操作过程有些折腾。
1)忘记有文件系统了,把SD卡中lib下面的文件都删除了,只copy自己编译的modules,导致文件系统挂载不了。
2)模块需要带版本号copy还是不需要,做了交叉实验才确认的,比较费时间
关于文件系统如何制作可以参考官网如下网址,不是我目前阶段研究的内容
http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Overview.html#processor-sdk-linux-building-the-sdk
参考网址:
https://blog.csdn.net/baicaiaichibaicai/article/details/68945836