1. 平台: rk3399 am40 4g+32g
2. 内核:firefly的内核(整体镜像)
3. 交叉编译工具 :暂时不编译
4. 宿主机:ubuntu18.04
5. 需要的素材和资料:boot-am40-20231113.img(自编译)
准备的情况:
1.am40开发板
2.ttl的usb转串口,波特率是1500000.
3.12V电源输入
4. 两个公头的usb 的线(能插电脑的普通的usb接口)
5. RKDevTool_Release_v2.81(版本可以不同)+DriverAssitant_v4.5.zip
img文件(从网站上下载)
FIREFLY-RK3399_Ubuntu20.04-r240_v2.5.1d_230330.7z
一、下载firefly固件(rk3399)
1.1 找到firefly的官网
Firefly | 让科技更简单,让生活更智能
下载firefly-rk3399的固件
下载后解压出img文件
二、准备刷机
2.1. 电源连接好,准备上电;
2.2. ttl的串口需要连接。(镜像烧录之后,默认波特率是1500000,需注意哈),电脑中把串口软件打开,方便查看调试信息(所需软件在qq群文件中);
2.3. 公头usb连接开发板和电脑;
2.4. 开发板开关拨到ADB模式;
2.5. 上电的时候按住那个板子上的白色按钮(RKDevTool软件会提示loader模式);
2.6. 电脑安装驱动DriverAssitant(只要安装一次就够了);
2.7. 电脑打开RKDevTool_Release软件,点击“升级固件” 那一页;
2.8.点击“固件”按钮,弹出的对话框,选中firefly的img 文件。
FIREFLY-RK3399_Ubuntu20.04-r240_v2.5.1d_230330.img
时间不同,可能版本有些差异,但是不影响烧录。
三、烧录运行
3.1 启动时进入maskrom模式
按住白色的按钮不松,一直等到出现maskrom(或者loader)的设备,再松开。
3.2 直接点击升级按钮
3.3 这个镜像启动不了。
启动到一定的时候,系统就卡死了,串口没有任何打印信息了。但是不用担心,就是要这个效果。
四、解决这个启动问题
4.1 解决一下recovery的问题
其中misc分区它有一个特定的数据结构,决定系统启动时进入的状态,比如revocery模式,loader模式,normal模式等。
刚刚烧完镜像,misc数据记录会让系统进入recovery模式,用于格式化数据分区,恢复出厂设置等。
但是recovery 其实也是启动不成功的,所以没必要进了,直接改为进入正常系统模式。
4.1.1 解决办法
修改misc的数据,其实我就是找一个文件把misc分区的内容覆盖掉,然后系统启动的时候,还是会读取misc分区的内容,但是很明显不符合它特定的数据结构,校验和也会失败,这个时候,它就会使用默认的正常模式启动。
4.1.2 对misc分区烧入uboot.img(仅仅是因为这个文件大小正好合适)
与下面4.2的boot.img一起烧入也是可以的。
只要烧入uboot即可(选择群文件中的uboot.img下载)
烧入之后,它就不会进入revocery,但是仍然是启动的时候卡死。
这个地方为None或者Normal 都是正常启动进入系统。
提示recovery表示进入recovery模式。
4.2 烧入新的boot.img
这个boot.img 是我自己制作的,能启动,但是部分功能还不完善。
只要烧入boot.img 就行。
(也可以把群文件中的uboot-115200中的文件一起烧入,烧入完之后,串口的波特率应该改为115200).
下载位置qq群文件
烧入之后,自动重启就会启动正常了。
串口的打印信息如果消失了,请注意调整波特率为115200.
五、几点说明
5.1 其实就是熟悉一下烧录的流程,整个img镜像的烧录,还有部分img的烧录方法。
5.2 boot.img 是linux5.10的内核编译而成,而且是使用的系统自带的dts文件修改的,源码在后面的文章中跟大家分享。
5.3 uboot和kernel的波特率都调整为了115200,如果串口看不到打印信息的时候,尝试修改波特率试试(只有两种:115200或者1500000).
5.4 内核的波特率由dtb文件决定,uboot的波特率由代码中设置。
5.5 其他问题,可以私聊我了(下载文件的群 Q Q:113下150载393)。