瑞芯微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

相关文章

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注