瑞芯微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中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

利用Python和C++解析gltf文件的示例详解

《利用Python和C++解析gltf文件的示例详解》gltf,全称是GLTransmissionFormat,是一种开放的3D文件格式,Python和C++是两个非常强大的工具,下面我们就来看看如何... 目录什么是gltf文件选择语言的原因安装必要的库解析gltf文件的步骤1. 读取gltf文件2. 提

Java中的runnable 和 callable 区别解析

《Java中的runnable和callable区别解析》Runnable接口用于定义不需要返回结果的任务,而Callable接口可以返回结果并抛出异常,通常与Future结合使用,Runnab... 目录1. Runnable接口1.1 Runnable的定义1.2 Runnable的特点1.3 使用Ru

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下