2. 编译环境

2.1. 安装python及pip

  1. 安装 Python3

  2. 下载 PIP脚本

  3. 安装pip,执行如下命令

python get-pip.py
  1. 安装python的serial和usb驱动模块,执行如下命令

pip3 install pyserial pyusb
  1. 安装yaml模块,执行如下命令

pip3 install pyyaml

注解

如果上面pyyaml安装失败,可以使用下面命令安装

pip3 install pyyaml -i http://pypi.douban.com/simple –trusted-host pypi.douban.com

注意

PS:ubuntu版本推荐高于20.0.4

2.2. 安装YOCTOOL工具

  1. Linux环境中使用指令安装yoctool

sudo pip install yoctools -U
  1. 使用 yoc -V查看对应版本,确保版本处于或者高于2.0.25

_images/image1.png
  1. 输入product version 查看product的版本,确保product安装成功

_images/image2.png

2.3. SDK文件说明

_images/image3.png
  1. 顶层目录中各个文件夹说明:

  • boards: 存放板卡相关配置

  • components: 存放各种类型组件,例如aos内核,cli命令行,网络组件,以及CSI驱动

  • host-tools: 为交叉编译工具链,AliOS使用玄铁交叉编译工具链Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1

  • solutions: 为解决方案目录,主要存放业务逻辑,运行bin档等,可支持快速启动和正常启动两种解决方案。

  1. solutions下各目录作用说明:

  • application 主要是应用相关部分

  • customization 客户应用相关以及不同产品形态配置,其下各个主要文件说明:

custom_sysparam.c

vb配置

custom_viparam.c

vi配置 sensor相关都放置在这里

custom_voparam.c

vo配置

custom_vpssparam.c

主要是vpss配置

custom_vencparam.c

主要是venc的配置

custom_moduleparam.c

主要是各模块的通用配置

custom_platform.c

平台相关配置,如pinmux设定,GPIO拉高等操作

custom_event.c

系统/模块事件相关配置

  • py_tool:python的工具

  • script:编译的脚本

  1. package.yaml文件说明

https://help.aliyun.com/document_detail/308617.html

package.yaml主要用于定义和开启功能宏比如选择不同的Sensor,以及需要依赖的组件选择

2.4. 快速模式和正常启动模式

2.5. 如何编译AliOS

  • 设定环境变量(以cv1842hp_wevb_0014a_spinor为例)

$ source build/envsetup_soc.sh
 -------------------------------------------------------------------------------------------------------
   Usage:
   (1) menuconfig - Use menu to configure your board.
       ex: $ menuconfig

   (2) defconfig $CHIP_ARCH - List EVB boards($BOARD) by CHIP_ARCH.
      ** cv184x ** -> ['cv184x', 'cv1841c', 'cv1842cp', 'cv1842hp', 'cv1843hp']
       ex: $ defconfig cv184x

  (3) defconfig $BOARD - Choose EVB board settings.
       ex: $ defconfig cv1842hp_wevb_0014a_spinor
       ex: $ defconfig cv1842cp_wevb_0015a_spinand
 -------------------------------------------------------------------------------------------------------
  • 选定EVB cv1842hp_wevb_0014a_spinor

$ defconfig cv1842hp_wevb_0014a_spinor
====== Environment Variables =======
PROJECT: cv1842hp_wevb_0014a_spinor, DDR_CFG=ddr3_2133_x16
CHIP_ARCH: CV184X, DEBUG=0
SDK VERSION: musl_arm, RPC=0
ATF options: ATF_KEY_SEL=default, BL32=1
Linux source folder:linux_5.10, Uboot source folder: u-boot-2021.10
ENABLE_DUAL_OS: y
CROSS_COMPILE_PREFIX: arm-none-linux-musleabihf-
ENABLE_BOOTLOGO: 0
Flash layout xml: build/boards/cv184x/cv1842hp_wevb_0014a_spinor/partition/partition_spinor.xml
Sensor tuning bin: cvsens_cv2003
Output path: install/soc_cv1842hp_wevb_0014a_spinor
  • 双系统配置

通过menuconfig命令,勾选对应配置,即可编译AliOS镜像。

_images/image4.png

默认是正常启动模式。可以通过勾选对应配置,在快速启动模式和正常模式之间切换。

_images/image5.png
  • 编译AliOS

AliOS镜像文件被打包到启动镜像中通常通过一条命令。

$ build_uboot
 Run build_uboot() function
 Run _link_uboot_logo() function
 ......
 [TARGET] alios-depends
 ......
 [TARGET] alios-build
 ......
 INFO: raw2cimg small part size
 INFO: size:b5c42, offset:200000, part_sz:100000, crc:38896f66
 INFO: Packing yoc.bin done!

编译完成后,生成的AliOS镜像文件yoc.bin将被拷贝到install目录中。

2.6. 镜像说明

在/solutions/normboot的生成文件中:

  1. yoc.elf:完整的可执行文件等,可以被 objdump 或 readelf 工具解析

  2. yoc.bin:运行程序bin档案,烧录到Flash 的小核镜像文件

  3. yoc.asm:反汇编文件

  4. yoc.map:内存映射文件

  5. yoc_sdk/lib/*.a:静态库

  6. generated:AliOS 系统的固件镜像文件结构,文件结构描述如下:

  • boot0:一级 Bootloader(FSBL)的二进制文件

  • boot:二级 Bootloader 的二进制文件(如 U-Boot)

  • config.yaml:分区表和固件配置的核心文件

  • imtb:镜像表(Image Table)二进制文件

  • imtb.hex:镜像表的 HEX 格式

  • prim:主系统镜像(yoc.bin 的别名)

  • prim.hex:主系统镜像的 HEX 格式