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

相关文章

Mybatis的mapper文件中#和$的区别示例解析

《Mybatis的mapper文件中#和$的区别示例解析》MyBatis的mapper文件中,#{}和${}是两种参数占位符,核心差异在于参数解析方式、SQL注入风险、适用场景,以下从底层原理、使用场... 目录MyBATis 中 mapper 文件里 #{} 与 ${} 的核心区别一、核心区别对比表二、底

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关

Springboot主配置文件解析

《Springboot主配置文件解析》SpringBoot主配置文件application.yml支持多种核心值类型,包括字符串、数字、布尔值等,文章详细介绍了Profile环境配置和加载位置,本文... 目录Profile环境配置配置文件加载位置Springboot主配置文件 application.ym

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用