RV1126 调试记录
################################################################################################
## SDK编译说明以及FAQ
1. 模式
A/B模式:该模式准备两份独立的系统固件,分别存放在 flash 上,系统可以从其中一个 slot 启动,如果当前 slot 启动失败,
可以从另外一个 slot 启动,在Normal模式下直接升级系统,无需进入系统升级模式,只需重启系统即可进入升级过的系统。
Linux A/B 由于有两个引导 slot,所以具有以下优点:
a. 升级无需重启进入升级模式,即机器可以在当前系统上直接进行升级。
b. 防止由于升级失败导致机器变砖,如果升级失败,机器可以回到当前版本。
c. 当前系统如果由于一些误操作被破坏掉,系统会自动切换到另外一个 slot 上。
缺点:Linux A/B 有两个 slot,所以会增加 flash 上系统固件的占用率。
配置和编译:
uboot: defconfig 增加如下配置,如 rv1126 64bit:u-boot/configs/rv1126_defconfig
CONFIG_AVB_LIBAVB=y
CONFIG_AVB_LIBAVB_AB=y
CONFIG_AVB_LIBAVB_ATX=y
CONFIG_AVB_LIBAVB_USER=y
CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_ANDROID_AB=y
Buildroot:
BR2_PACKAGE_RECOVERY=y #开启升级功能
BR2_PACKAGE_RECOVERY_BOOTCONTROL=y #开启引导控制脚本
BR2_PACKAGE_RECOVERY_RETRY=y #引导方式为retry模式,不配置则默认为 successful_boot模式
BR2_PACKAGE_RECOVERY_USE_UPDATEENGINE=y #使用新升级程序
BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN=y #编译新升级程序
BR2_PACKAGE_RECOVERY_NO_UI=y # 关掉UI
Recovery模式:该模式是在设备上多一个Recovery分区,该分区由kernel+resource+ramdisk 组成,主要用于升级操作。
u-boot会根据misc分区(详见misc 分区章节)存放的字段来判断将要引导的系统是Normal 系统还是
Recovery 系统。由于系统的独立性,所以Recovery模式能保证升级的完整性,即升级过程被中断,如异
常掉电,升级仍然能继续执行。
优点:能保证升级的完整性
缺点:升级过程必须重启进入Recovery模式,不能在Normal系统直接升级。
配置和编译:
Buildroot:recovery 配置文件选择如下(make menuconfig)
BR2_PACKAGE_RECOVERY=y #开启升级相关功能
BR2_PACKAGE_RECOVERY_USE_UPDATEENGINE=y #使用新升级程序,不配置则默认使用原有升级流程 BR2_PACKAGE_RECOVERY_RECOVERYBIN=y #开启recovery bin 文件
BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN=y #编译新升级程序
BR2_PACKAGE_RECOVERY_NO_UI=y # 关掉UI
Buildroot:rootfs 配置文件选择如下(make menuconfig)
BR2_PACKAGE_RECOVERY=y #开启升级相关功能
BR2_PACKAGE_RECOVERY_USE_UPDATEENGINE=y #使用新升级程序
BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN=y #编译新升级程序
BR2_PACKAGE_RECOVERY_NO_UI=y # 关掉UI
2. 板级配置选择
执行./build.sh lunch命令,输出选择项,例如:
processing board option: lunch
processing option: lunch
You're building on Linux
Lunch menu...pick a combo:
0. default BoardConfig.mk
1. BoardConfig-38x38-spi-nand-ab.mk
2. BoardConfig-38x38-spi-nand.mk
3. BoardConfig-ab-v13.mk
4. BoardConfig-battery-ipc.mk
5. BoardConfig-dualcam-tb-v13.mk
6. BoardConfig-facial_gate.mk
7. BoardConfig-imx334.mk
8. BoardConfig-ramboot-uvc.mk
9. BoardConfig-robot.mk
10. BoardConfig-sl.mk
11. BoardConfig-slc-nand-v12.mk
12. BoardConfig-spi-nand.mk
13. BoardConfig-spi-nor-tb-v13.mk
14. BoardConfig-spi-nor-v12.mk
15. BoardConfig-tb-v12.mk
16. BoardConfig-tb-v13.mk
17. BoardConfig-uvcc-spi-nand.mk
18. BoardConfig-uvcc.mk
19. BoardConfig-v10-v11.mk
20. BoardConfig-v12.mk
21. BoardConfig.mk
Which would you like? [0]:
rv1126+imx334 选择7回车即可
2. U-boot编译
cd u-boot
make rv1126_defconfig
make menuconfig/make savedefconfig/cp defconfig configs/rv1126_defconfig
cd ..
./build.sh uboot
2. Kernel编译
./build.sh kernel
提示/bin/sh: flex: 未找到命令
解决办法:sudo apt-get install flex
提示找不到
解决办法:虚拟机中移植openssl
/bin/sh: lz4c: 未找到命令
解决办法:sudo apt-get install liblz4-tool
3. Recovery编译(A/B模式可不执行):
提示: you need to install 'unbuffer' (from package expect or expect-dev)
====Build rockchip_rv1126_rv1109_recovery failed!====
ERROR: Running build_recovery failed!
解决办法:sudo apt-get install expect-dev
4. rootfs编译:
提示:>>> nginx-http-flv-live v1.2.8 Downloading提示出错
解决办法:打开浏览器输入https://github.com/winshining/nginx-http-flv-module/archive/v1.2.8/nginx-http-flv-live-v1.2.8.tar.gz下载
下载完成后拷贝到 buildroot/dl/目录,下载的文件名是nginx-http-flv-module-1.2.8.tar.gz改名为nginx-http-flv-live-v1.2.8.tar.gz即可
################################################################################################
## 固件烧录
固件烧录:《Rockchip_RV1126_RV1109_EVB_User_Guide_V1.0_CN.pdf》第四章
1. 安装USB驱动,驱动路径与瑞芯发布的文档不一致,实际路径:SDK/tools/windows/DriverAssitant_v5.0.zip
2. 瑞芯提供的烧录工具:SDK/tools/windows/RKDevTool/RKDevTool_Release/RKDevTool.exe以管理员身份运行
3. Maskrom或者Loader方式烧录固件即可;
4. 按住UPDATE键给设备上电或者在设备上电状态下按住UPDATE键同时按下RESET键重启设备进入Maskrom模式;
5. 按住RECOVERY键给设备上电或者在设备上电状态下按住RECOVERY键同时按下RESET键重启设备进入Loader模式;
################################################################################################
## 以太网调试
1. RTL8201F百兆以太网, 修改内核dts文件
RV1126+IMX334 我们之前有bringup 了,kernel目录打上如下两个补丁,就有参考dts。
git am 0001-RV1109-dts-os02g10-bringup.patch
git am 0002-RV1126-dts-imx334-bringup.patch
参考dts 编译命令如下:
make ARCH=arm rv1126_imx334_defconfig
make ARCH=arm rv1126-imx334.img -j32
参考dts路径:SDK/kernel/arch/arm/boot/dts/rv1126-jovison.dts
cp NetFolader/rv1126-evb-v10.dtsi SDK/kernel/arch/arm/boot/dts/
dts修改:arch/arm/boot/dts/rv1126.dtsi
i2c3: statis="disabled" 修改为status="okay"
2. kernel增加nfs client配置
make ARCH=arm rv1126_imx334_defconfig
make ARCH=arm menuconfig-->FileSystem-> Network FileSystem-> NFS Client
make ARCH=arm savedefconfig
cp defconfig arch/arm/configs/rv1126_imx334_defconfig
3.使能开门狗
rv1126.dts->
wdt: watchdog@ff680000
->status = "disabled"修改为status="okay"
4.i2c-3使能
rv1126.dts->
->i2c3: i2c@ff520000
->status = "disabled"修改为status="okay"
->增加一行:clock-frequency = <100000>;
buildroot步骤解读:
SDK/build.sh rootfs : build_rootfs()->build_buildroot()
->SDK/device/rockchip/common/mk-buildroot.sh SDK/device/rockchip/.BoardConfig.mk
->source SDK/device/rockchip/.BoardConfig.mk
->source buildroot/build/envsetup.sh $RK_CFG_BUILDROOT=rockchip_rv1126_rv1109_ab]
->SDK/buildroot/utils/brmake
recovery编译:
recovery使用的rcS为./buildroot/package/initscripts/init.d/rcS