- 开发概述
RV1106,由对接人员提供的百度网盘下载,下载下来的SDK,整个开发分为四个阶段:SDK熟悉,SDK使用,硬件适配,软件驱动适配和应用开发,以下将详述每个步骤。
- SDK目录结构
解压SDK后和以往瑞星微SDK比较相似但又有区别,根据以往经验,查看build.sh可以看到其使用方法:
echo "Usage: build.sh [OPTIONS]"
echo "Available options:"
echo "lunch -Select Board Configure" (1.主板选型)
echo "env -build env"
echo "meta -build meta (optional)"
echo "uboot -build uboot" (3.分离编译uboot)
echo "kernel -build kernel" (3.分离编译kernel)
echo "rootfs -build rootfs" (3.分离编译rootfs)
echo "driver -build kernel's drivers"
echo "sysdrv -build uboot, kernel, rootfs"
echo "media -build rockchip media libraries"
echo "app -build app"
echo "recovery -build recovery"
echo "tool -build tool"
echo "updateimg -build update image"
echo "unpackimg -unpack update image"
echo "factory -build factory image"
echo "all -build uboot, kernel, rootfs, recovery image" (4.完全编译,不打包)
echo "allsave -build all & firmware & save" (2.完全编译)
echo ""
echo "clean -clean all" (4.全部清理)
echo "clean uboot -clean uboot"
echo "clean kernel -clean kernel"
echo "clean driver -clean driver"
echo "clean rootfs -clean rootfs"
echo "clean sysdrv -clean uboot/kernel/rootfs"
echo "clean media -clean rockchip media libraries"
echo "clean app -clean app"
echo "clean recovery -clean recovery"
echo ""
echo "firmware -pack all the image we need to boot up system"
echo "ota -pack update_ota.tar"
echo "save -save images, patches, commands used to debug"
echo "check -check the environment of building"
echo "info -see the current board building information"
echo ""
echo "Default option is 'allsave'."
其中,比较重要的如上图黄色区域,其目录如下图:
media: Rockchip Media库目录,多Rockchip媒体编解码、ISP等算法相关源代码
,所有与库相关的源代码存放至此目录,
project:App目录,所有应用相关源代码存放至此目录,此目录使用make管理构建树,因此对于每一个App而言,都需要有一个自己的Makefile文件,并通过包含(include)Makefile.param文件获取参数。App可使用RK_APP_MEDIA_INCLUDE_PATH变量(Rockchip Media库头文件变量)与RK_APP_MEDIA_LIBS_PATH变量(Rockchip Media库库目录变量)来链接Rockchip Media库目录中的库。
sysdrv:系统目录,包含uboot、linux kernel、rootfs的源代码。
tools:编译所需的工具,例如固件打包工具,交叉编译器等。
在选择版型后会链接出一个,如下
- SDK使用方法
安装依赖
sudo apt update
sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync
交叉编译器:
可单独将{SDK_PATH}/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf中置于/opt中修改/etc/profile 并生效(source /etc/profile)即可,如下图:
生效后,使用arm-rockchip830-linux-uclibcgnueabihf-gcc -v 可以看到版本信息如下:
build.sh使用说明,见上。
- 使用 ./build.sh lunch 选择Luckfox_Pico_Pro_Max-IPC
- 使用 ./build.sh allsave 或者./build.sh 编译全部,生成文件的存放目录: output/image
注意事项
在windows下复制源码包时,linux下的可执行文件可能变为非可执行文件,或者软连接失效导致无法编译使用。因此使用时请注意不要在windows下复制源代码包。
- 文件系统适配
- 开启busybox诸多功能,例如telnet ,ftp,中文识别网络等功能,详情见busybox的配置文件:opensource/sysdrv/tools/board/busybox/config_normal ,初步统计如下:
- 静态编译busybox:
- 支持UNICODE字符
- 直接后台界面大小重设RESIZE
- 支持用户操作:addgroup、adduser、chpasswd ,deluser delgroup
- 支持mod操作:DEPMOD、INSMOD、LSMOD、MODPROBE
- 支持fdisk和文件系统操作
- 支持mkfs操作和mount操作
- 支持httpd ftpd tcpsvd udpsvd telnet tftpd
- 支持ip 操作和tracert 、udhcp
- 支持nslookup ping6
2.修改busybox构建的linux系统配置,例如,密码,网咯配置增加dam2160i文件夹供后期应用使用。
- 修改分区数和分区大小,详情见opensource/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-NONE-RV1106_Luckfox_Pico_Pro_Max-IPC.mk,去除oem、userdate等分区,修改rootfs分区大小为250M,剩余1M未使用。
- fw_printenv和MAC设置。
- uboot和 kernel 看门狗开发。
- 硬件适配
硬件驱动根据IO引脚分配表进行逐一测试,包括如下USB、交换机芯片、串口功能、看门狗等,通过修改对应的dts完成。
- 软件驱动适配
主要是适配自定义的引脚和相关驱动,编译成ko,独立动态加载使用。