1. 说明

首先 我按照  (https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide)制作了一个image, 将SD卡进行分区fat32, raw 和ext3,然后将preloader uboot kernel  rootfile rbf dtb uboot.scr 文件拷贝到不同的分区,然后插到DE10-Nano 开发板进行启动。

如果不再修改这些文件了,那么每次这样去找个linux环境给SD卡分区,然后用命令拷贝这些文件显得很麻烦。那怎么能将这些文件打包成一个.img文件 方便windows的windisk32 一键烧写呢?

答案是使用https://releases.rocketboards.org/2020.07/gsrd/tools/make_sdimage_p3.py 脚本。(以前用https://releases.rocketboards.org/2019.04/gsrd/tools/make_sdimage.py

2. 具体步骤如下:

创建文件夹:

mkdir de10_nano
cd de10_nano
mkdir image
mkdir image/p1
mkdir image/p2
mkdir image/p3 

用cp命令将这些文件拷贝到image文件夹下的这些文件夹内:(请不要将uboot.img拷贝到raw分区了, 要拷贝到fat32分区,原因参考https://www.cnblogs.com/DoreenLiu/p/17911554.html

 

 

 

 然后制作Makefile文件:

all:
    ./make_sdimage_p3.py -f \
        -P p1/*,num=1,format=vfat,size=100M \
        -P p2/*,num=2,format=ext3,size=7300M \
        -P p3/preloader-mkpimage.bin,num=3,format=raw,size=10M,type=A2 \
        -s 7500M \
        -n de10-nano-sdcard.img

Makefile文件和make_sdimage_p3.py都拷贝到image路径下:

 

 然后执行sudo make 即可生成de10-nano-sdcard.img 文件了。

3. 问题解决办法

(1)Permission denied 权限不够

若遇到问题/bin/sh: 1: ./make_sdimage_p3.py:Permission denied

则先修改make_sdimage_p3.py的执行权限:

chmod 777 make_sdimage_p3.py

 

(2)警告:文件“makefile"的修改时间在未来217秒后

我的Makefile文件是在winfows上修改了拷贝过来的。大家可能还注意到了上面提示:make:警告:文件“makefile"的修改时间在未来217秒后

 我尝试用网络上说的sudo find ./* exec touch {} +不能解决问题, 但是等待十几分钟后,再次sudo make 就OK 了。(可能是我的windows时钟和 ubuntu的时钟差异导致的)

 

(3)缺失分隔符

输入make提示Makefile:2: ***缺失分隔符。停止。

 或者输入make提示Makefile:2: ***遗漏分隔符(null)。停止。

 

原因:不同的系统下 Tab键不一致, 比如我的Windows下Tab键占用4个空格,而我的Ubuntu的Tab键占8个空格, 我从Windows系统拷贝Makefile到Ubuntu系统下使用时,就会因为Tab键不一致导致提示Makefile:2: ***缺失分隔符。停止。

 

解决:删除Windows系统下的Tab键的空格, 改成Ubuntu系统下的Tab键解决了问题:

 

(4)验证时串口无任何打印信息

(拷贝image文件的时候耐心等待,有7.9G, 第一次拷贝时文件都没有复制完就开始烧写导致com口无任何打印信息)

 在windows下用win32disk 工具烧写:

验证:

 

 

(5)rbf文件路径 (可能要放到output_files文件夹)

关于rbf文件的路径放置主要看boot.script文件的设置:

 如果是对DE10_NANO_FB工程直接进行make all 生成boot.scr 则要这样放置: