本文章是基于瑞芯微RK3399芯片的yangfan开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD,WIFI,BT,vibrator、sensor、图形显示模块的适配案例总结,以及相关功能的适配。
开发板系统移植采用Board仓和SoC代码分离方案,Board仓保存板载驱动的模块,例如音频,Camera,TP,WIFI等驱动模块的适配代码。
在SoC仓保存与SoC驱动相关模块,例如I2C,ISP,RGA等驱动模块的适配代码。
产品配置和目录规划
产品配置
在产品//vendor/yangfan目录下创建config.json文件,并指定CPU的架构。//vendor/yangfan/rk3399.json配置如下:
{
"product_name": "yangfan",---产品名:yangfan
"device_company": "rockchip",---单板厂商:rockchip
"device_build_path": "device/board/isoftstone/yangfan",---设备构建路径:device/board/isoftstone/yangfan
"target_cpu": "arm",---目标cpu:arm
"type": "standard",---配置系统的级别:standard
"version": "3.0",---版本:3.0
"board": "yangfan",---单板名:yangfan
"enable_ramdisk": true,---启用内存虚拟盘:true
"build_selinux": true,---构建selinux:true
"inherit": [ "productdefine/common/inherit/rich.json", "productdefine/common/inherit/chipset_common.json" ],
"subsystems": [
{
"subsystem": "security",
"components": [
{
"component": "selinux",
"features": []
}
]
},
{
"subsystem": "communication",
"components": [
{
"component": "netmanager_ext",
"features": []
}
]
},
...
}
主要的配置内容包括:
- "product_name": "yangfan",---产品名:yangfan
- "device_company": "rockchip",---单板厂商:rockchip
- "device_build_path": "device/board/isoftstone/yangfan",---设备构建路径:device/board/isoftstone/yangfan
- "target_cpu": "arm",---目标cpu:arm
- "type": "standard",---配置系统的级别:standard
- "version": "3.0",---版本:3.0
- "board": "yangfan",---单板名:yangfan
- "enable_ramdisk": true,---启用内存虚拟盘:true
已定义的子系统可以在//build/subsystem_config.json中找到。当然也可以定制子系统。
建议先拷贝Hi3516DV300开发板的配置文件,删除掉hisilicon_products子系统。该子系统为Hi3516DV300 SOC编译内核,不适合RK3568。
目录规划
参考Board和SoC解耦的设计思路,并把芯片适配目录规划为:
device
├── board --- 单板厂商目录
│ └── isoftstone --- 单板厂商名字:
│ └── yangfan --- 单板名:扬帆,主要放置开发板相关的驱动业务代码
└── soc --- SoC厂商目录
└── rockchip --- SoC厂商名字:rockchip
└── rk3399 --- SoC Series名:rk3399,主要为芯片原厂提供的一些方案,以及闭源库等
产品样例目录规划为:
vendor
└── isoftstone
└── yangfan --- 产品名字:产品、hcs以及demo相关
内核启动
二级启动
二级启动简单来说就是将之前直接挂载system,从system下的init启动,改成先挂载ramdsik,从ramdsik中的init 启动,做些必要的初始化动作,如挂载system,vendor等分区,然后切到system下的init 。
RK3399适配主要是将主线编译出来的ramdisk 打包到boot_linux.img中,主要有以下工作:
- 使能二级启动
在//vendor/yangfan/rk3399.json中使能enable_ramdisk。
{
"product_name": "yangfan",
"device_company": "rockchip",
"device_build_path": "device/board/isoftstone/yangfan",
"target_cpu": "arm",
"type": "standard",
"version": "3.0",
"board": "yangfan",
"enable_ramdisk": true,
"build_selinux": true,
...
}
- 将主线编译出来的ramdsik.img 打包到boot_linux.img
配置:
由于rk 启动uboot 支持从ramdisk 启动,只需要在打

最低0.47元/天 解锁文章
3739

被折叠的 条评论
为什么被折叠?



