本文介绍一下RV1103 SDK的部署,以及初步修改,并编译出一个能在设备上运行的基础版本的固件。
SDK介绍
RK公版的SDK解压之后内容如下。RV1103和RV1106是公用一套SDK的。这套SDK和RV1109/RV1126系列不能共用。
其中
1、.repo
整个工程的版本管理工具
2、docs
开发文档
3、media
多媒体开发工具。里面包含了v4l2视频输入库, mpp编解码库,alsa音频库等音视频组件库。
4、project
里面的内容如下
其中app目录是一些更上层的应用示例,比如ipc的应用demo。
cfg目录是板级编译配置。目前支持的配置如下
scripts目录里面是编译脚本和一些打包配置,比如打包内核镜像+设备树的its文件。
这个cfg目录+scripts目录在常规的RK SDK里面一般是放在device目录里面。
5、sysdrv
目录里面内容如下
cfg目录是编译配置
drv_ko存放部分不开源的驱动,以及WiFi驱动的源码。
source是uboot和kernel源码
tools目录用于构建rootfs。其中board是板端的软件组件包源码,比如busybox和adb等。pc是pc端的工具源码,比如mtd-tools编译出来的mtd工具可用于打包nand分区镜像。
这个tools目录类似于其它RK SDK的buildroot
6、tools
包含Windows和Linux下面的固件制作工具以及烧录工具。此外交叉编译工具在linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf下
这个SDK跟之前RK其它系列的Linux SDK不一样,它的目录更少,而且没有那么多种rootfs的支持。此外,libc库更改为uclibc而不是其它系列使用的glibc。
新建编译配置
首先进入project/cfg/BoardConfig_IPC目录,注意到里面并没有RV1103 SPI NAND的配置,因此要新建一个。可以在SPI NOR的基础上修改。这个开发板名叫PICO,因此可以执行如下操作
然后打开这个文件,进行如下修改
uboot里面的defconfig,默认都是rv1106的defconfig,这个defconfig是从SPI NAND启动的
分区表配置,修改为这样,适配W25N01 128MB的
文件系统类型
如果是读写分区,spi nand一般用ubifs,spi nor用jffs2。只读分区都用squashfs。建议rootfs改为只读,以提升系统可靠性
另外最后还要加上如下内容,指定SPI NAND的块大小和页大小
设备树需要新建一个支持SPI NAND的。打开sysdrv/source/kernel/arch/arm/boot/dts,找到rv1103g-evb-v10.dts,直接基于这个进行修改。执行
然后将默认的spi nor改成spi nand。在复制过来的这个dts末尾增加
然后修改mk文件种的这个DTS为新建的
其余的暂时不修改,尝试执行构建。在SDK根目录下执行
./build.sh lunch
找到新建的这个方案,输入对应的序号,这里是3
然后执行
./build.sh
进行完整构建
如果没有出现错误,会生成固件,放在output/image下
这个update.img就是打包后的固件
将构建后的固件烧录到设备上。重新上电,可以看到内核的编译信息
注意到编译的时间已经更新。说明烧录进去的固件已经能正常运行。到这里,SDK部署就完成了。后续可以在此配置上面进行相关功能的开发。
构建中出现的问题
1、media部分编译报错
此问题第一次执行构建时必现,再次执行构建消失。初步看是media有很多个模块组成,模块之间有依赖关系,不能并行编译
解决方案为media部分强制改为单线程编译
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !