Luckfox Pico Ultra

  • 有两种方法推荐,但都需要重新在SDK中编译或者打包镜像
    方法一:
    比如你在/etc下加了一个系统文件,可以把这个文件复制到/luckfox-pico/project/cfg/Boardconfig IPc/overlay里,可以加个文件夹存放你的备份文件,同时再相应的SDK配置文件中添加然后打包,再重新烧录。

    Code: Select all

    cd /luckfox-pico/project/cfg/Boardconfig IPc/overlay
    ls overlay-buildroot-npc
    WXWorkCapture_17351951396025.png
    WXWorkCapture_17376902044429.png

    方法二:
    可以先参考这个链接viewtopic.php?p=4177,补充具体打包镜像如下:
    在SDK中先要在buildroot里面添加dc3dd工具,因为出厂固件是没有这个工具的。

    Code: Select all

    ./build.sh buildrootconfig  #添加dc3dd 
    ./build.sh                             #重新编译脚本
    将编译镜像烧录到开发板,配置自己的软件。POE或者GPIO供电,将USB切换成host模式。挂载U盘,然后使用dc3dd命令,使用方式和dd命令差不多
    WXWorkCapture_1737689877546.png
    WXWorkCapture_173768988194.png
    WXWorkCapture_17376898843350.png
  • 我开始尝试上面的两种方式进行镜像的生成:
    第一:我将一块配置好的开发板中的/etc文件夹以及/home文件夹复制到对应的文件夹下面,然后开始编译生成的镜像文件,使用工具进行烧录,经过测试发现当前新的开发板中并没有对应的文件。
    所以我得做法是由什么错误的地方吗。
    屏幕截图 2025-02-08 162751.png
    屏幕截图 2025-02-08 163020.png
    第二:直接使用工具进行对应空间的数据提取,然后将提取出来的数据使用工具烧录给新的开发板,但是测试发现开发板无法正常的启动。
    屏幕截图 2025-02-08 163322.png
  • 方法一中需要写入对应的mk文件,如果是Luckfox_Pico_Ultra_W的buildroot系统,则是BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk。再通过./build.sh firmware打包,后进行烧录。
  • 我现在可以成功的将文件备份下来,并且备份下来的文件经过测试是可以执行的。
    我现在创建了一个服务放置在a开发板的系统目录下面,并且经过设置可以成功的将其设置成开机自启动的形式,使用上面的方式可以成功的将服务正常的复制到b开发板下面,但是检查发现其属于的用户是属于pico用户权限下面,需要手动使用下面的命令将其给超级用户权限。并且b的开发板中的服务并没有随着开发板启动而启动。
    sudo chown root:root /lib/systemd/system/shademe_app.service
    而且好像复制出来的文件权限都不是复制之前的权限.
    pico
    屏幕截图 2025-02-09 165239.png
  • 方法一和方法二实测都是可以完整的备份文件权限信息的。
    如果是方法一,需要检查备份目录下的文件是否为root权限。方法二,在ubuntu系统中没有将块设备映射到/dev/block/by-name/rootfs,您可以运行dc3dd命令来复制mmcblk0p7分区的内容到一个镜像文件中。运行:

    Code: Select all

    sudo dc3dd if=/dev/mmcblk0p7 of=/mnt/rootfs_backup.img
  • 我现在使用的是方法一:进行镜像的备份,还有一个功能,就是我想要将使用这条命令(luckfox-config)配置的uart打开,i2c打开,以及rgb关闭这三个功能如何从第一快板子上面复制到另一块板子上面。
  • 你可以直接在< luckfox-pico SDK >/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-ultra.dts设备树文件中配置uart,i2c,以及rgb关闭。例子如下:

    Code: Select all

    &rgb {
    	status = "disabled";
    };
    
    &uart5 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart5m1_xfer>;
    };
    
    &i2c4 {
    	status = "okay";
    	clock-frequency = <400000>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c4m2_xfer>;
    
    	sc3336: sc3336@30 {
    		compatible = "smartsens,sc3336";
    		status = "okay";
    		reg = <0x30>;
    		clocks = <&cru MCLK_REF_MIPI0>;
    		clock-names = "xvclk";
    		reset-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&mipi_refclk_out0>;
    		rockchip,camera-module-index = <0>;
    		rockchip,camera-module-facing = "back";
    		rockchip,camera-module-name = "CMK-OT2119-PC1";
    		rockchip,camera-module-lens-name = "30IRC-F16";
    		port {
    			sc3336_out: endpoint {
    				remote-endpoint = <&csi_dphy_input0>;
    				data-lanes = <1 2>;
    			};
    		};
    	};
    };
  • 直接在对应的文件中添加了下面的代码,主要是为了开启i2c2:
    &i2c2 {
    status = "okay";
    clock-frequency = <400000>;
    pinctrl-names = "default";
    pinctrl-0 = <&i2c2m2_xfer>; // 确保 pinctrl 名称正确

    sc3336: sc3336@30 {
    compatible = "smartsens,sc3336";
    status = "okay";
    reg = <0x30>;
    clocks = <&cru MCLK_REF_MIPI0>;
    clock-names = "xvclk";
    reset-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
    pinctrl-names = "default";
    pinctrl-0 = <&mipi_refclk_out0>;
    rockchip,camera-module-index = <0>;
    rockchip,camera-module-facing = "back";
    rockchip,camera-module-name = "CMK-OT2119-PC1";
    rockchip,camera-module-lens-name = "30IRC-F16";
    port {
    sc3336_out: endpoint {
    remote-endpoint = <&csi_dphy_input0>;
    data-lanes = <1 2>;
    };
    };
    };
    };
    麻烦查看一下是否正确,特别是复位引脚
  • 在对应的rv1106g-luckfox-pico-ultra-w.dts 这个文件中添加下面的两段代码,出现编译问题,无法进行设备编译
    屏幕截图 2025-02-12 113727.png
    屏幕截图 2025-02-12 113538.png
    尝试只保留rgb相关的文件任然出现编译报错问题,无法进行正常的编译文件,是否需要改变其他文件的内容
    屏幕截图 2025-02-12 113933.png