RV1126 调试记录

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
 

你可能感兴趣的:(linux)