瑞芯微Parameter File Format解析

2024-09-08 06:58

本文主要是介绍瑞芯微Parameter File Format解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Rockchip android系统平台使用parameter文件来配置一些系统参数

主要包含:串口号:nandflash分区 固件版本,按键信息等;

如下是台电P98HD的parameter参数:

FIRMWARE_VER:4.1.1        // 固件版本

//固件版本,打包 updata.img 时会使用到,升级工具会根据这个识别固件版本。

//Boot loader 会读取这个版本传递给 kernel 使用。
MACHINE_MODEL:rk30sdk   

//机型,打包 updata.img 使用,不同的项目,可以自己修改,用于升级工具显示。
MACHINE_ID:007

//产品开发 ID,可以为字符和数字组合,打包 updata.img 使用,不同的项目使用不同的 ID,
//可以用于识别机器机型。

MANUFACTURER:RK30SDK

//厂商信息,打包 updata.img 使用,可以自己修改,用于升级工具显示。
MAGIC: 0x5041524B

//MAGIC,不能修改
ATAG: 0x60000800

//ATAG,不能修改
MACHINE: 3066

//内核识别用,不能修改。
//RK29xx 识别码:MACHINE: 2929
//RK292x 识别码:MACHINE: 2928

//Rk3188 识别码:MACHINE:3066(不知道为什么不是3188)
CHECK_MASK: 0x80

//保留,不能修改。
KERNEL_IMG: 0x60408000

//内核地址,boot loader 会将内核加载到这个地址,kernel 编译地址改变时,这个值需要相应
修改。

#RECOVER_KEY: 1,1,0,20,0
 //按键信息不过这里没有用

//按键类型为:0 = 普通按键 , 1 = AD 按键
//GPIO 定义:上例中定义的是 GPIO 4 C5
//判断电平:0 = 低电平 ,1=高电平
//AD 定义(通道,下限值,上限值)
//:上例中,1 表示 ADC 通道 1,8 表示下限值为 80,20 表
//示上限值为 200,也就是 AD 值在 80~200 内的按键都认为是 COMBINATION_KEY。
//Combination 按键定义,可以定义多个,用户可以根据实际机型定义按键。
//功能说明:
//1、按住 recovery 按键并接 USB 开机,进 loader rockusb 升级模式。
//2、按住 recovery 按键不接 USB 开机,3S 左右会引导 recovery.img。
//3、按住 combination 按键开机,会引导 recovery.img,进 android 的 recovery 模式,用户
//可以根据菜单选择操作。
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0

init=/init

initrd=0x62000000,0x00800000

//console=ttyFIQ0 androidboot.console=ttyFIQ0,串口定义。
//initrd=0x62000000,0x00800000,第一个参数是 boot.img 加载到 sdram 的位置,第二个参数为
//ramdisk 的大小,目前 ramdisk 大小没有限制。
MTD分区:

mtdparts=rk29xxnand:         //nand flash 分区,因为系统是安装在nandflash里面的

0x00002000@0x00002000(misc),   //misc分区 前面表示大小,后面表示起始地址

0x00008000@0x00004000(kernel), //内核分区

0x00008000@0x0000C000(boot),   //引导区大小

0x00010000@0x00014000(recovery),//恢复区

0x00020000@0x00024000(backup), //备份区

0x00100000@0x00044000(cache),  //缓存区

0x00400000@0x00144000(userdata),//用户数据区

0x00002000@0x00544000(kpanic),  //重要数据保存去(学名叫啥 过后再找找)

0x00100000@0x00546000(system),  //系统文件区

-@0x00646000(user)

//分区定义说明:
//为了兼容性,RK30xx、RK29xx 和 RK292x 都是用 rk29xxnand 做标识。
//单个分区说明:
//例如:0x00002000@0x00008000(boot),@符号之前的数值是分区大小,@符号之后的数
//值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是 sector,1 个 sector
//为 512Bytes.

//上例中,boot 分区起始位置为 0x8000 sectors 位置,大小为 0x2000 sectors(4MB).
//目前 flash 最大的 block 是 4MB(0x2000 sectors),所以每个分区需要 4MB 对齐,也就是每个分区都必须为 4MB 的整数倍大小。
//Backup 及之前的分区为固件区,在 linux 系统里是只读的,在确定大小后,后续升级时不能修改分区大小。
//Backup 之后的分区在 linux 系统里是可读写的。在后续升级时可以调整分区大小,调整分区大小后需要进 android 的 recovery 系统格式化 cache 等分区。
//-----------------------------------------------------------------------------------------------

parameter文件最大不超过64Kb 以上参数由bootloader解析;

当前台电用的是RK3188Loader(L)_V1.20.bin;

 

GPIO 控制信息
例如:
PWR_HLD:0,0,C,7,1 //控制 GPIO0C7 输出高电平
PWR_HLD:0,0,C,7,2 //控制 GPIO0C7 输出低电平
PWR_HLD:0,0,A,0,3 //配置 PWR_HLD 为 GPIO0A0,在 Loader 需要锁定电源时,输出高电平锁定电源
GPIO 控制信息和 PWR_HLD 管脚定义信息复用,因此定义 GPIO 控制信息后,最后一条需要配置真正的 PWR_HLD 引脚,不然 loader 不会锁定电源。代码不会配置 IOMUX,被配置为特殊功能的 IO 是不可以控制的,
这些 IO 有:SD0,SD1,NANDFLASH(不包含 D8~D15),SPI0,UART2 等使用到的 IO。
定义格式和 COMBINATION_KEY 的 GPIO 定义类似,只有最后一个字节(电平判断)不同。
电平判断解释:
1:= 解析 parameter 时,输出高电平
2:= 解析 parameter 时,输出低电平
3:= 在 Loader 需要控制电源时,输出高电平
0:= 在 Loader 需要控制电源时,输出低电平

常见问题:

1、 system 分区修改为 ext3 格式时,parameter 的 mtd 分区怎么定义?
Ext3 为可写文件系统,那么 system 分区需要定义在 backup 分区之后。
2、怎么增加一个 mtd 分区?
在 parameter MTD 分区中按照分区定义格式增加分区,如果在系统中需要可写的,那么要把分区定义在 backup分区之后,只读的,那么分区定义在backup 分区之前。
3、由于系统固件变大,backup 分区起始位置和大小变大后整个系统不正常怎么处理?
Backup 分区之前的区域为只读区域,为保证系统固件可靠性和稳定性,这个区域有做特殊处理,在第一次升级固件后就不可以把分区改大(改小不会有问题),所以在开发阶段定义分区大小时尽量预留足够空间。
出现问题的机器,需要按住 recovery 按键进 loader rockusb 升级模式,等待 10 秒后,用量产工具或者用户工具的修复模式升级固件,也可以用开发工具的擦除 idb 功能低格 flash 后再升级固件。
针对这个问题,目前新发布的 SDK 使用新的解决方案,buckup 分区不再备份 system.img,当system.img 分区变大时,就不会有这个问题。

下例是 2928 的定义:
Recovery 是 32MB,backup 分区是 64MB,data 分区是 2GB(原文是1G,此处应该是2G),system 分区是 512MB。

瑞芯微Parameter <wbr>File <wbr>Format解析
标题

这篇关于瑞芯微Parameter File Format解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147435

相关文章

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s