[RK356x] [Firefly-Linux] 一节课间时间教你单独更新Kernel到Ubuntu系统的boot分区

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[RK356x] [Firefly-Linux] 一节课间时间教你单独更新Kernel到Ubuntu系统的boot分区相关的知识,希望对你有一定的参考价值。

我们定制自己的Ubuntu固件或者调试过程中往往需要修改Kernel,给Kernel进行功能裁剪或者添加,在修改并编译Kernel后,如果我们打包成整个Ubuntu固件再进行烧写,则太过于浪费时间了,这是因为一个Ubuntu固件的大小动不动就是以GB为单位,那么能不能只单独更新Kernelboot分区呢?答案是肯定的!

在前一篇文章《[RK356x] [Firefly-Linux] 一节课间时间带你了解Ubuntu固件各个分区》中,我带领大家了解到Ubuntu固件各个分区,以下是Linux_SDKrockdev目录下的各个分区固件,其中烧写到内核分区的文件是boot.img!从软链接就可以看出boot.img指向的是kernel目录下的boot.img

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_20211019$ ls -l rockdev/boot.img
lrwxrwxrwx 1 neutionwei neutionwei       18 Jan 20 09:07 boot.img -> ../kernel/boot.img

文章目录

1、准备工具

工欲善其事,必先利其器,为了尽可能避免发生奇怪的错误,我在这里列举一下大家需要用到的工具:

  • PC机:Windows 10系统
  • RK驱动助手:DriverAssitant(瑞芯微驱动助手),版本 >= 5.1.1
  • androidTool烧写工具:RKDevTool,版本 >= 2.81
  • 良好的Type-C 数据线

RK驱动助手AndroidTool烧写工具可以到Firefly官方进行下载,链接如下:

https://www.t-firefly.com/doc/download/107.html

大家点击以下图片中指向的地方进行下载:

2、环境搭建

环境搭建主要就是安装RK驱动助手

  1. 右键点击以管理员身份DriverAssitant
  2. 点击驱动安装(注意:如果大家以前安装过该驱动,要首先点击驱动卸载,待卸载完毕后再点击安装!)

3、只单独更新某个分区的固件

首先板卡要进入升级模式,进入升级模式后,打开RKDevTool工具,下方打印着“发现一个LOADER设备”,此时我们点击读取分区表


Ubuntu系统有些分区在原始的RKDevTool工具的配置文件中不一定存在,不存在的分区会报错,这些不用理会,点击OK即可:

在读取分区表后,RKDevTool工具中存在的分区同时会同步到分区的起始地址,此时我们找到相应的分区加载自己的固件即可:


打上前面的,点击运行即可:

单独更新其他分区的固件也是同理的!

4、RKDevTool保存Ubuntu系统分区配置文件

我们看到默认的RKDevTool有些分区在Ubuntu系统是存在的,有些却没有,为了方便后面的调试,保存Ubuntu系统分区的配置文件!

我们首先对RKDevTool相应分区出单击再右键删除Ubuntu系统不存在的分区,同时增添一些RKDevTool不存在的Ubuntu系统分区,然后点击读取分区表更新分区地址(注意:rootfsuserdata分区不需要添加):

在空白处右键导出配置文件,并保存为rk356x-ubuntu-config.cfg


在下次打开RKDevTool工具的时候可以重新加载这个配置文件,同样右键导入rk356x-ubuntu-config.cfg配置文件:


可以看到RKDevTool工具的分区与我们之前修改的一致!

5、为何不添加rootfsuserdata分区?

(1)Firefly发布的Linux_SDK在打包固件的时候,对于rootfs分区的大小,会根据rootfs的实际文件大小进行动态变化,换句话说,parameter-ubuntu.txt文件中的0x00c00000@0x00038000(rootfs),-@0x00c38000(userdata:grow)内容的rootfs分区大小指定与userdata分区起始地址会动态发生修改!(参考:《[RK356x] [Firefly-Linux] 一节课间时间带你了解Ubuntu固件各个分区》)如果直接烧写rootfs过大将会造成文件系统覆盖到userdata分区。

(2)userdata分区一般与recovery分区进行出厂设置有联系。

(3)rootfs分区占了Ubuntu系统固件的绝大部分,两者烧写所花时间差别不大,完全没必要只单独更新根文件系统。

以上是关于[RK356x] [Firefly-Linux] 一节课间时间教你单独更新Kernel到Ubuntu系统的boot分区的主要内容,如果未能解决你的问题,请参考以下文章

[RK356x] [Firefly-Linux] 一节课间时间带你了解Ubuntu固件各个分区

[RK356x] [Firefly-Linux] 一节课间时间带你了解Linux_SDK

[RK356x] [Firefly-Linux] 10min带你获取了解与编译Kernel源代码

[RK356x] [Firefly-Linux] 一节课间时间教你单独更新Kernel到Ubuntu系统的boot分区

[RK356x] [Firefly-Linux] 10min带你获取了解与编译U-Boot源代码

RK356x U-Boot研究所(引导篇)1.1 BootLoader引导过程浅析