3. U-boot 移植

3.1. U-boot 硬件环境

cv184x开发板上的外围处理器包括 DDR、eMMC、SPI NAND

Flash和 SPI NOR Flash,所有型号

请参阅 CV184x_硬件设计用户指南_V1.0

3.2. 管脚配置(Pinmux)

针对不同的EVB和不一样的外围装置,可以在cvi_board_init.c做好初始化设定。

$ cat build/boards/cv184x/cv1842hp_wevb_0014a_spinor/u-boot/cvi_board_init.c
int cvi_board_init(void)
{
     PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA);
     PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL);
     PINMUX_CONFIG(PAD_MIPIRX1N, XGPIOC_8);
     PINMUX_CONFIG(PAD_MIPIRX0P, CAM_MCLK0);
     return 0;
}

3.3. 编译U-boot

  • 编译U-boot操作如下:

$ source build/envsetup_soc.sh

$ defconfig cv1842hp_wevb_0014a_spinor

$ clean_uboot && build_uboot
[TARGET] u-boot-dts
......
[TARGET] u-boot-build
......
  • 取得fip_spl.bin和fip.bin(内含bootloader+uboot)

$ ls install/soc_cv1842hp_wevb_0014a_spinor/fip.bin
install/soc_cv1842hp_wevb_0014a_spinor/fip.bin
$ ls install/soc_cv1842hp_wevb_0014a_spinor/fip_spl.bin
install/soc_cv1842hp_wevb_0014a_spinor/fip_spl.bin
  • U-boot 组态设定

默认EVB 的U-boot组态设定

$ cat build/boards/cv184x/cv1842hp_wevb_0014a_spinor/u-boot/cvitek_cv1842hp_wevb_0014a_spinor_defconfig
 CONFIG_ARM=y
 CONFIG_SYS_MALLOC_F_LEN=0x100000
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_DEFAULT_DEVICE_TREE="cv184x_asic"
 CONFIG_IDENT_STRING=" cvitek_cv184x"
...

有两种修改defconfig档案的方式,一种是直接修改其defconfig档案文件(不推荐),第二种是使用图形化菜单界面的方式(推荐)。

  • 执行menuconfig_uboot命令,以图形化接口修改U-boot组态设定

_images/image1.png

退出后会把设定储存在:

u-boot-2021.10/build/cv1842hp_wevb_0014a_spinor/.config

由于原生u-boot编译出u-boot.bin 无法直接刻录到FLASH中。我们采取ARM Trusted Firmware Design中的Firmware Image Package (FIP)方式, 将uboot.bin封装在fip.bin里面,而fip_spl.bin是引导快启过程中加载的镜像的文件。