[AndroidO] [RK3399] -- Rockchip 平台 parameter.txt 文件详解

本文参考于:https://blog.youkuaiyun.com/kris_fei/article/details/80805080

路径:devic/rockchip/rk3399/parameter.txt

概述

Rockchip android 系统平台使用 parameter 文件来配置一些系统参数,比如定义串口号,固件版本,nand flash 分区信息等等。

Parameter 文件是非常重要的系统配置文件,最好在能了解清楚各个配置功能的时候再做修改,避免出现 parameter 文件配置异常造成系统不能正常工作的问题。

Parameter 文件大小有限制,最大不能超过64KB。

由于 Parameter 的参数是由 Bootloader 解析的,所以本文列出来的参数不一定适用于旧版本的 bootloader。

parameter 分析

FIRMWARE_VER: 8.1

    固件版本,打包update.img 用到。升级工具据此识别固件版本。

    Bootloader 会读取这个版本传递给 kernel 使用。

MACHINE_MODEL: RK3399

    机型,打包 update.img 用到,不同的项目,可以自己修改,用于升级工具显示。

MACHINE_ID: 007

    产品 ID ,为数字或者字母组合,打包update.img使用,不同的项目使用不同的ID。可以用于识别机器机型。

MANUFACTURER: RK3399

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

MAGIC: 0x5041524B

    无法修改

ATAG: 0x00200800

    无法修改,内核识别用。

MACHINE: 3399

    内核识别用,不能修改

CHECK_MASK: 0x80

    内核识别用,无法修改。

COMBINATION_KEY:0,4,C,5,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 模式,用户可以根据菜单选择操作。

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 需要锁定电源时,输出高电平锁定电源
最后一位是电平判断,解释:
1:= 解析 parameter 时,输出高电平
2:= 解析 parameter 时,输出低电平
3:= 在 Loader 需要控制电源时,输出高电平
0:= 在 Loader 需要控制电源时,输出低电平

PWR_HLD: 0,0,A,0,1
这里是控制 GPIO0 A0 输出高电平

#KERNEL_IMG: 0x00280000

    内核地址,bootloader 会将内核加载到此地址,如果 kernel 编译地址改变,需要修改此值。

#FDT_NAME: rk-kernel.dtb

 

CMDLINE:

androidboot.baseband=N/A

androidboot.selinux=permissive(关闭) ---- enforcing(打开)

    安全强化Linux是否打开

androidboot.hardware=rk30board

    硬件平台

androidboot.console=ttyFIQ0

    串口定义

init=/init

initrd=0x62000000,0x00800000

    第一个参数是boot.img 加载到 sdram 的位置,第二个参数为 ramdisk 的大小,目前 ramdisk 的大小没有限制。
 

MTD分区:

    RK30xx,RK29xx,RK292x 都是用 rk29xxnand 做标识mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x00008000@0x00010000(kernel),0x00010000@0x00018000(boot),0x00010000@0x00028000(recovery),0x00038000@0x00038000(backup),0x00040000@0x00070000(cache),0x00200000@0x000B0000(system),0x00008000@0x002B0000(metadata),0x00002000@0x002B8000(baseparamer),-@0x002BA000(userdata)
 

@符号前是分区的大小
@符号后是分区的起始地址
括号中是分区的名字
单位都是 sector(512Bytes)
比如 uboot 起始地址为 0x2000 sectors (4MB)的位置,大小为 0x2000 sectors(4M)
另外 flash 最大的 block 是 4M(0x2000 sectors),所以每个分区需要 4MB 对齐,即每个分区必须为 4MB 的整数倍。

,0x00038000@0x00038000(backup)
backup 分区前的分区为固件区 uboot、trust、misc、resource、kernel、boot、recovery 。
后续升级时不能修改分区大小
backup 分区后的分区 cache、system、metadata、baseparamer、userdata
是可以读写的,可以调整分区大小。但是修改分区大小后需要进入 recovery 系统格式化 cache
 

 

 

Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev04.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev04.dtb] Error 1 make[2]: *** 正在等待未完成的任务.... Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev06.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev06.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree CHK include/generated/compile.h scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev21.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev21.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev00.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev00.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev07.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev07.dtb] Error 1 Error: arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:384.15-26 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:320: recipe for target 'arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev01.dtb' failed make[2]: *** [arch/arm64/boot/dts/rockchip/rk3399-nanopi4-rev01.dtb] Error 1 scripts/Makefile.build:484: recipe for target 'arch/arm64/boot/dts/rockchip' failed make[1]: *** [arch/arm64/boot/dts/rockchip] Error 2 arch/arm64/Makefile:127: recipe for target 'dtbs' failed make: *** [dtbs] Error 2 make: *** 正在等待未完成的任务....
03-08
<think>嗯,用户遇到了一个编译错误,具体是在编译设备树文件时出现了语法错误。错误信息显示在rk3399-nanopi4-common.dtsi文件的第384行,位置15到26有语法问题。我需要先理解设备树文件的基本结构和常见错误类型。 首先,设备树源文件.dts或.dtsi)使用一种类似C语言的结构,包含节点、属性和值。常见的语法错误可能包括括号不匹配、分号缺失、属性名拼写错误或者节点定义不正确。用户的问题提示是语法错误,所以需要检查该行附近的代码结构。 查看错误信息的具体位置,384行的第15到26个字符可能存在错误。用户可能需要打开这个文件,定位到该行。可能的错误点包括缺少分号、括号未闭合、属性值格式错误,或者使用了不正确的关键字。 另外,多个版本的设备树文件(如rev04、rev06等)都引用了同一个公共文件(common.dtsi),所以问题可能出在这个公共文件中。一旦修复了common.dtsi中的错误,所有依赖它的文件都会正确编译。 建议用户用编辑器打开该文件,检查第384行的上下文,特别注意括号、分号、逗号的使用是否正确。例如,可能某个属性后面漏掉了分号,或者字符串没有正确闭合。也可能在该行附近有错误的节点定义,比如节点名拼写错误或者属性名不正确。 此外,用户可能在修改设备树文件后未正确清理编译缓存,导致错误依旧存在。可以建议执行make clean后再重新编译,确保没有旧的中间文件影响编译结果。 如果用户不熟悉设备树语法,可能需要参考Rockchip的文档或社区支持,确认该行的写法是否符合规范。有时候,不同版本的内核对设备树的语法要求可能不同,检查是否使用了适合当前内核版本的写法。 总结来说,解决问题的步骤应该是定位错误行,检查并修正语法问题,清理编译环境,然后重新编译。如果用户无法自行解决,可能需要提供具体的代码片段以便进一步分析。</think>这个编译错误提示表明在设备树文件 `rk3399-nanopi4-common.dtsi` 的第 **384行第15到26列** 存在语法错误,导致编译过程中无法解析设备树源文件。以下是问题分析和解决步骤: --- ### **问题原因** 1. **设备树语法错误** - 设备树(Device Tree)文件(`.dtsi` 或 `.dts`)的语法类似于 C 语言,但有自己的规则。常见的语法错误包括: - 括号 `{}` 不匹配 - 分号 `;` 缺失 - 属性值格式错误(如字符串未用双引号包裹) - 节点(Node)或属性(Property)名称拼写错误 - 使用了不兼容的保留字符 2. **错误定位** 错误发生在公共文件 `rk3399-nanopi4-common.dtsi` 的第 **384 行**,具体位置为 **15-26 列**。所有依赖此文件的设备树(如 `rev04.dtb`、`rev06.dtb` 等)均会编译失败。 --- ### **解决步骤** #### 1. **定位错误代码** 打开文件 `arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi`,跳转到第 **384 行**,检查该行附近的代码。 例如,可能的错误代码片段如下: ```dts // 示例:假设第 384 行是以下内容 my_node { compatible = "vendor,device"; reg = <0x1000> // 错误:缺少分号 }; ``` #### 2. **常见语法错误排查** - **检查分号 `;`** 每个属性赋值语句必须以分号结尾,例如 `reg = <0x1000>;`。 - **检查括号闭合** 确保所有节点 `{}` 正确闭合,且没有嵌套错误。 - **检查字符串引号** 字符串属性(如 `compatible`)必须用双引号包裹:`"vendor,device"`。 - **检查符号合法性** 避免在属性名或节点名中使用特殊字符(如 `-`、`_` 需符合命名规则)。 #### 3. **修复后重新编译** 修复语法错误后,执行以下命令清理并重新编译: ```bash # 清理旧编译文件(重要!) make clean # 重新编译设备树 make dtbs ``` --- ### **扩展建议** 1. **对比官方代码库** 如果是自定义修改导致的错误,建议对比官方代码库(如 [FriendlyElec 的 Nanopi4 内核源码](https://github.com/friendlyarm/kernel-rockchip)),确认语法是否一致。 2. **使用 dtc 工具验证** 手动检查设备树文件的语法: ```bash dtc -I dts -O dtb -o /dev/null arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi ``` 工具会直接报告语法错误位置。 3. **检查内核版本兼容性** 确保设备树文件与当前编译的内核版本兼容。某些语法可能在新旧内核中存在差异。 --- ### **示例修正** 假设第 384 行的原始错误代码为: ```dts gpio-keys { compatible = "gpio-keys" pinctrl-names = "default"; }; ``` 错误原因是 `compatible` 属性缺少分号,修正后应为: ```dts gpio-keys { compatible = "gpio-keys"; // 补充分号 pinctrl-names = "default"; }; ``` --- 通过以上步骤应能解决设备树语法错误问题。如果仍无法定位,请提供第 **384 行** 的具体代码片段以进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值