1-公司板子实践记录

 

 

编译uboot

  • cd Hi3519DV500_SDK_V1.0.1.1/open_source
  • tar xf u-boot-2022.07.tar.bz2 ->  cd u-boot-2022.07 -> patch -p1 < ../u-boot-2022.07.patch -> make ARCH=arm CROSS_COMPILE=aarch64-v01c01-linux-gnu- hi3519dv500_defconfig (仅用于 spi nor/nand flash) // 如果已经全部编译过了,就不用执行这一行了
  • make ARCH=arm CROSS_COMPILE=aarch64-v01c01-linux-gnu- menuconfig
  • make ARCH=arm CROSS_COMPILE=aarch64-v01c01-linux-gnu- -j 20
  • make -C ../../gzip/ -> cp ../../gzip/bin/gzip arch/arm/cpu/armv8/hi3519dv500/hw_compressed/ -rf -> chmod +x arch/arm/cpu/armv8/hi3519dv500/hw_compressed/gzip // 这是加了一个 gzip , 不需要的话,这一行也不用执行
  • make ARCH=arm CROSS_COMPILE=aarch64-v01c01-linux-gnu- u-boot-z.bin  // open_source/uboot/u-boot-2022.07下生成的u-boot-hi3519dv500.bin 即为非安全镜像的子镜像
  • cd components/gsl  # 是smp/a55_linux/source/bsp 目录下的
    make clean
    make
    cd -
    cp components/gsl/pub/gsl.bin ./tools/pc/image_tool/input
    cp ../../../../open_source/u-boot/u-boot-2022.07/u-boot-hi3519dv500.bin ./tools/pc/image_tool/input/u-boot-original.bin
    cp tools/pc/boot_tools/reg_info.bin ./tools/pc/image_tool/input
    cd ./tools/pc/image_tool
    python oem/oem_quick_build.py # tools/pc/image_tool/image/oem/下生成的boot_image.bin即为“非安全启动”使用的Boot Image。

 

 

自定义

  • rootfs 改为 64M :
    • sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp/tools/pc/uboot_env/env_text/hi3519dv500/nand_env.txt 修改内容:
      • bootargs=mem=132928K console=ttyAMA0,115200 clk_ignore_unused root=ubi0:ubifs rootfstype=ubifs rw ubi.mtd=4 mtdparts=nand:512K(boot),512K(env),512K(bl31),13M(kernel),64M(rootfs)
    • sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp/tools/pc/uboot_env$ make ENVTXT=env_text/hi3519dv500/nand_env.txt
      • 会生成 env.bin 和 burn_table.xml 替换掉原本的
    • sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp/tools/pc/ubi_sh$ ./mkubiimg.sh 3519dv500-2 2k 128k ../../../pub/rootfs_glibc_arm64 64M ../../../pub/bin/pc
  • 打开 usb : sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/interdrv/sysconfig/pin_mux.h
    • #define USB_EN  1
    • make clean -> make  // sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/temp/source/interdrv/sysconfig/sys_config.ko 加载到板端
  • 默认设置是千兆网口,改成百兆网口:参考 外围设备驱动 操作指南.pdf -> 1.6 百兆网口适配
    • sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/u-boot/u-boot-2022.07/include/configs/hi3519dv500.h
      • #define CONFIG_GMAC_PHY0_ADDR     1
        #define CONFIG_GMAC_PHY0_INTERFACE_MODE	1 /* rgmii 2, rmii 1, mii 0 */
    • sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/linux/linux-5.10.y/arch/arm64/boot/dts/vendor/hi3519dv500-demb.dts
      • &mdio {
        	ethphy: ethernet-phy@1 {
        		reg = <1>;
        	};
        };
        
        &gmac {
        	phy-handle = <&ethphy>;
        	phy-mode = "rmii";
        };
    • sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/linux/linux-5.10.y/arch/arm64/boot/dts/vendor/hi3516dv500-demb.dts
      • &mdio {
        	ethphy: ethernet-phy@1 {
        		reg = <1>;
        	};
        };
        
        &gmac {
        	phy-handle = <&ethphy>;
        	phy-mode = "rmii";
        };
  • uboot 添加新的 flash (海康)
    • sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/u-boot/u-boot-2022.07/drivers/mtd/nand/raw/fmc100/fmc_spi_nand_ids.c
      • fmc_spi_nand_ids.c 新增内容
         #1.在 static struct spi_nand_info fmc_spi_nand_flash_table[] 里面新增:
        #if 1  //添加海康SPI NAND FLASH
            /* HSESFHCSW1G 1.8V 1G-BIT  */ //hgpark
            {
                .name      = "HSESFHCSW1G",
                .id        = {0xc9, 0x21},
                .id_len    = 2,
                .chipsize  = _128M,
                .erasesize = _128K,
                .pagesize  = _2K,
                .oobsize   = 64,
                .badblock_pos = BBP_FIRST_PAGE,
                .read      = {
                    &read_std(1, INFINITE, 24),
                    &read_fast(1, INFINITE, 88),
                    &read_dual(1, INFINITE, 88),
                    &read_dual_addr(1, INFINITE, 88),
                    &read_quad(1, INFINITE, 88),
                    &read_quad_addr(2, INFINITE, 88),
                    0
                },
                .write     = {
                    &write_std(0, 256, 88),
                    &write_quad(0, 256, 88),
                    0
                },
                .erase     = {
                    &erase_sector_128k(0, _128K, 88),
                    0
                },
                .driver    = &spi_driver_general,// &spi_driver_no_qe,
            },
        
            /* HSESFHCSW1G 1.8V 1G-BIT  */ //hgpark
            {
                .name      = "HSESFHCSW1G",
                .id        = {0x7C, 0xC1},
                .id_len    = 2,
                .chipsize  = _128M,
                .erasesize = _128K,
                .pagesize  = _2K,
                .oobsize   = 64,
                .badblock_pos = BBP_FIRST_PAGE,
                .read      = {
                    &read_std(1, INFINITE, 24),
                    &read_fast(1, INFINITE, 88),
                    &read_dual(1, INFINITE, 88),
                    &read_dual_addr(1, INFINITE, 88),
                    &read_quad(1, INFINITE, 88),
                    &read_quad_addr(2, INFINITE, 88),
                    0
                },
                .write     = {
                    &write_std(0, 256, 88),
                    &write_quad(0, 256, 88),
                    0
                },
                .erase     = {
                    &erase_sector_128k(0, _128K, 88),
                    0
                },
                .driver    = &spi_driver_general,// &spi_driver_no_qe,
            },
        #endif
        
        # 2. 开头添加:
        set_read_fast(1, INFINITE, 88);
        set_read_dual(1, INFINITE, 88);
        set_read_dual_addr(1, INFINITE, 88);
        set_read_quad(1, INFINITE, 88);
        set_read_quad_addr(2, INFINITE, 88);
        set_write_std(0, 256, 88);
        set_write_quad(0, 256, 88);
        set_erase_sector_128k(0, _128K, 88);
  • kerner 添加新的 flash (海康)
    •  sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/linux/linux-5.10.y/drivers/mtd/nand/fmc100/fmc_spi_nand_ids.c
      • fmc_spi_nand_ids.c 新增内容
        #1.在 static struct spi_nand_info fmc_spi_nand_flash_table[] 里面新增:
        #if 1  //添加海康SPI NAND FLASH
            /* HSESFHCSW1G 1.8V 1G-BIT  */ //hgpark
            {
                .name      = "HSESFHCSW1G",
                .id        = {0xc9, 0x21},
                .id_len    = 2,
                .chipsize  = _128M,
                .erasesize = _128K,
                .pagesize  = _2K,
                .oobsize   = 64,
                .badblock_pos = BBP_FIRST_PAGE,
                .read      = {
                    &read_std(1, INFINITE, 24),
                    &read_fast(1, INFINITE, 88),
                    &read_dual(1, INFINITE, 88),
                    &read_dual_addr(1, INFINITE, 88),
                    &read_quad(1, INFINITE, 88),
                    &read_quad_addr(2, INFINITE, 88),
                    0
                },
                .write     = {
                    &write_std(0, 256, 88),
                    &write_quad(0, 256, 88),
                    0
                },
                .erase     = {
                    &erase_sector_128k(0, _128K, 88),
                    0
                },
                .driver    = &spi_driver_general,// &spi_driver_no_qe,
            },
        
            /* HSESFHCSW1G 1.8V 1G-BIT  */ //hgpark
            {
                .name      = "HSESFHCSW1G",
                .id        = {0x7C, 0xC1},
                .id_len    = 2,
                .chipsize  = _128M,
                .erasesize = _128K,
                .pagesize  = _2K,
                .oobsize   = 64,
                .badblock_pos = BBP_FIRST_PAGE,
                .read      = {
                    &read_std(1, INFINITE, 24),
                    &read_fast(1, INFINITE, 88),
                    &read_dual(1, INFINITE, 88),
                    &read_dual_addr(1, INFINITE, 88),
                    &read_quad(1, INFINITE, 88),
                    &read_quad_addr(2, INFINITE, 88),
                    0
                },
                .write     = {
                    &write_std(0, 256, 88),
                    &write_quad(0, 256, 88),
                    0
                },
                .erase     = {
                    &erase_sector_128k(0, _128K, 88),
                    0
                },
                .driver    = &spi_driver_general,// &spi_driver_no_qe,
            },
        #endif
        
        # 2. 开头添加:
        set_read_fast(1, INFINITE, 88);
        set_read_dual(1, INFINITE, 88);
        set_read_dual_addr(1, INFINITE, 88);
        set_read_quad(1, INFINITE, 88);
        set_read_quad_addr(2, INFINITE, 88);
        set_write_std(0, 256, 88);
        set_write_quad(0, 256, 88);
        set_erase_sector_128k(0, _128K, 88);
      • make ARCH=arm64 CROSS_COMPILE=aarch64-v01c01-linux-gnu- uImage -j 20 // sdk/Hi3519DV500_SDK_V1.0.1.1/open_source/linux/linux-5.10.yarch/arm64/boot/uImage-fdt

 

补充

  • i2c_read 等可执行程序路径: Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp/tools/board/reg-tools-1.0.0/bin
  • 编译 busybox 然后放到板端 软链接一个 可执行文件 可以直接用: ln -s busybox  tftp
  • sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp 相当于 sdk/SS928V100_SDK_V2.0.2.2/osdrv
    • 直接 make all -j20  //注意
      • makefile :  LIB_TYPE ?= glibc  BOOT_MEDIA ?= spi
      • sdk/Hi3519DV500_SDK_V1.0.1.1/smp/a55_linux/source/bsp/tools/pc/boot_tools:  cp hi3519dv500_reg_info.bin  reg_info.bin  // reg_info.bin 生成非安全 uboot 的时候需要用, 就是配置 ddr ... 的那个 xx.xlsm  文件生成的
    • 工具直接 选择 sdk\Hi3519DV500_SDK_V1.0.1.1\smp\a55_linux\source\bsp\pub\hi3519dv500_image_glibc\nand_burn_table.xml 烧录即可
posted @ 2024-11-27 15:42  封兴旺  阅读(146)  评论(1)    收藏  举报

联系方式: 18274305123(微信同号)