日常记录

RK3568 Linux驱动学习——SDK烧录

17 08月
作者:6912809|分类:资源分享

前言

Rockchip平台提供了多种镜像烧写方式,如在Windows下通过瑞芯微开发工具烧写、通过SD卡方式烧写、通过FactoryTool工具批量烧写(量产烧写工具、支持USB一拖多烧写)以及在Ubuntu下通过Linux_Upgrade_Tool工具烧写等等。总之,烧写镜像的方式有很多种,可以选择合适的烧写方式进行烧写,将镜像文件烧写至开发板。


烧写模式介绍

Rockehip平台硬件设备运行的几种模式如下表所示,只有当设备处于Maskrom以及Loader模式时(必须要通过USB线将开发板的OTG口连接到电脑),才能够烧写镜像,或对板上镜像进行更新操作。


模式 是否支持烧录 描述

Maskrom 支持 Flash在未烧录镜像时,芯片会引导进入Maskrom模式,可以进行初次镜像的烧写;开发调试过程中若遇到无法正常进入Loader模式的情况,也可进入Maskrom模式烧写镜像。

Loader 支持 Loader模式下可以进行镜像烧写、更新升级,可以通过烧写工具单独烧写某一个分区镜像文件,方便调试。

Recovery 不支持 通过引导recovery镜像进入recovery模式,recovery模式主要作用是升级、恢复出厂设置类操作。

Normal Boot 不支持 系统正常启动进入该模式,通过引导rootfs启动,加载rootfs根文件系统,大多数开发都是在这个模式下进行。

进入Maskrom烧写模式的方法:(先连接电源适配器和OTG)


开发板未烧录过镜像,上电之后就会进入到Maskrom模式;

开发板烧录过镜像,按住开发板上的UPDATE按键,然后开发发板上电或复位,系统将会进入到Maskrom模式;

开发板烧录过镜像,按住开发板上的V-按键(音量-)按键,然后开发板上电或复位,系统将会进入到Maskrom模式;

开发板烧录过镜像,在U-Boot命令行下,执行"rbrom"命令进入到Maskrom模式。

进入Loader烧写模式的方法:(先连接电源适配器和OTG)


开发板烧录过镜像,按住V+按键(音量+)按键,然后开发板上电或复位,系统将会进入到Loader模式;

开发板烧录过镜像,在U-Boot命令行下,执行"download"命令进入到Loader模式;

开发板烧录过镜像,在Linux系统下,通过串口或ADB执行命令"reboot loader"重启进入到Loader模式;

开发板烧录过镜像,上电或复位后开发板正常启动进入到系统后,瑞芯微开发工具(也就是RKDevTool工具)会显示"发现一个ADB设备",然后点击"切换"按钮,进入到Loade模式。

以上介绍了开发板如何进入到Maskrom或Loader烧写模式,只有进入Maskrom模式或Loader模式后才可进行烧录。

Windows系统下烧写

首先将之前已经编译好的SDK镜像文件(~/rk3568_linux_sdk/rocdev/镜像)从Ubuntu拷贝到Windows下,可以将这个目录命名为rk3568_images,包括了boot.img、MiniLoaderAll.bin、misc.img、oem.img、parameter.txt(分区表文件,不是镜像)、recovery.img、rootfs.img、uboot.img、userdata.img,如下所示:

连接好开发板后,打开瑞芯微开发工具,然后按住UPDATE并按下RST按键来进入MASKROM模式:

分区表parameter.txt

看一下RK平台分区表文件parameter.txt,该文件是一个txt文件。parameter.txt文件描述了开发板的分区表信息,每个分区的名字、分区的起始地址以及分区的大小等信息,来看下它的内容:

 FIRMWARE_VER: 1.0<br>
 MACHINE_MODEL: RK3568<br>
 MACHINE_ID: 007<br>
 MANUFACTURER: RK3568<br>
 MAGIC: 0x5041524B<br>
 ATAG: 0x00200800<br>
 MACHINE: 0xffffffff<br>
 CHECK_MASK: 0x80<br>
 PWR_HLD: 0,0,A,0,1<br>
 TYPE: GPT<br>
 CMDLINE: <br>mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00020000@0x00028000(recovery),0x00010000@0x00048000(backup),0x00c00000@0x00058000(rootfs),0x00040000@0x00c58000(oem),-@0x00c98000(userdata:grow)<br>
 uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

parameter.txt文件中除了分区表信息之外,还包含其它标识,如FIRMWARE_VER、MACHINE_MODEL、MACHINE_ID、MAGIC 等,不做展开。主要来看一下mtdparts标识所定义的分区信息,如下:


rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00020000@0x00028000(recovery),0x00010000@0x00048000(backup),0x00c00000@0x00058000(rootfs),0x00040000@0x00c58000(oem),-@0x00c98000(userdata:grow)

rk29xxnand是一个标识,为了兼容性,rockchip平台都是用rk29xxnand做标识。


诸如0x00002000@0x00004000(uboot)、0x00002000@0x00006000(misc)等信息用于定义分区,@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字;所有数值的单位都是sector(扇区),1个sector为512字节。所以由此可知,uboot分区的起始位置为0x4000 sectors位置,大小为0x2000 sectors(4MB);misc分区的起始位置为0x6000 sectors位置,大小也是0x2000 sectors。


为了性能,每个分区起始地址需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。


最后一个分区需要指定grow参数,表示将剩余存储空间全部分配给该分区。

每个分区作用如下:

各分区作用介绍
各分区作用介绍

配置

通过上小节分析可知,parameter.txt文件中一共定义了8个分区,提供了每个分区的名字起始地址以及分区大小,接下来需要手动配置瑞芯微开发工具,配置完之后如下图所示:

image.png

这里需要注意几个点:

  1. 瑞芯微开发工具中地址数值的单位也是sectors(扇区,-一个扇区等于512字节);

  2. 第一项对应的是MiniLoaderAll.bin镜像,它的烧录地址不用配置,直接使用0x0即可。因为MiniLoaderAll.bin镜像有专门的烧录地址,无需用户配置,而且它的名字一般都是Loader(或小写loader),不要去改动它;

  3. 上图中第二项对应的是分区表parameter.txt,同样它的地址也不下用配置,直接使用0x0即可,因为parameter.txt文件不会烧录到Flash中,但会读取该文件定义的分区、去初始化Flash物理分区;同样,它的名字为parameter(或者大写Parameter),不要去改动它,因为底层需要通过这个"parameter"名字来识别分区表文件。

  4. 除了MiniLoaderAllbin和parameter.txt稍微特殊一点之外,其它镜像直接根据parameter.txt分区表定义的起始地址进行配置即可,名字尽量使用parameter.txt文件中所定义的分区名。

image.png


将配置信息导出、保存到config.cfg文件中,方便下次导入该配置信息。

烧录

如下图所示:

image.png

执行过程中,右侧空白处会输出log信息,如下图:

image.png

也可以只烧录特定镜像,只勾选对应的这一项即可。

启动系统

烧录完成后会自动重启开发板,进入Linux buildroot系统,串口终端(波特率15M)会输出信息:

image.png

烧录update.img

我没有烧录这个的时候,就会在上图卡住。

进入开发工具:

image.png

选择了对应的update.img之后,点击“升级”就会进入烧录。

之后就能够正常开机了。

Ubuntu的方法就是命令行模式了 本文暂时不写,有需要的话网上教程也很多。

打赏
浏览7 评论0
返回
目录
返回
首页

除特别注明外,本站所有文章均为七原创,转载请注明出处来自https://www.qxhut.cn/?id=49

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

路由器获取是大内网IP地址?有的人是获取到公网动态IP地址?又有人是静态公网IP地址?到底都是什么意思?

发表评论