SSU_SDK架构
1. SDK概述¶
SSU pure linux SDK是基于xxx 版本的软件开发包,其中包含bootloader、kernel、project及sdk各部分代码,与大部分主流linux SDK开发包相同,用户可以 通过makeflie及相关config配置编译出一个完成可以直接烧写到机器上运行的系统文件。
其中SDK从上至下分为App应用层(user mode),lib层,kernel层(kernel mode), 同时为了方便客户使用及调试,sigmastar将与芯片相关的驱动、逻辑及功能抽象出来独立分装为mi_sdk,对应如下:
-
mi_api: 提供对应函数功能接口方便用户app调用实现功能.
-
mi_implement: 提供用户层与kernel调用接口,减少kernel与user mode之间来回调用,提高运行效率。
-
mhal: 硬件抽象层,剥离底层硬件驱动与上层功能之间的耦合。
-
driver: 具体hw驱动及控制.
2. MI功能模块¶
MI_SDK是由多个mi功能模块组成,客户可以通过上层app调用mi_api来使用mi各模块的功能,也可以根据实际功能需求来配置和调用不同的MI模块:
Module | Fuction |
---|---|
MI_SYS | 实现 MI 系统初始化、内存缓冲池管理、各个模块之间数据流的管理 |
MI_ISP | 实现图像信号处理,HDW、3D/2D降噪、3A算法,WDR等功能 |
MI_VIF | 实现启用视频输入设备、视频输入通道、绑定视频输入通道等功能 |
MI_SCL | 实现图像数据进行crop/scaling/mirror/flip/pixel转换等功能 |
MI_VENC | 实现图像数据H.264/265/jpeg编码 |
MI_VDEC | 实现图像数据H.264/265/jpeg解码 |
MI_DISP | 实现视频显示驱动,对前端输入数据进行硬件拼图,最终输出到MIPI/HDMI/LVDS/TTL |
MI_IPU | 实现AI模型的IPU推演加速,允许通过channel实现多个ai模型推演 |
MI_AI | 实现AMIC/DMIC/I2s等多种信号的音频数据采集 |
MI_AO | 实现音频数据播放,以及功放控制 |
MI_VDISP | 实现软件图像数据拼接 |
3. SDK目录结构¶
-
boot:uboot相关启动代码,支持系统升级、支持多种升级方式(目前支持sd卡升级、网络升级、usb升级等多种方法)及开机启动画面等功能
-
kernel:linux相关环境设置、设备树、网卡、触摸屏、usb、sdmmc、Gsensor等多种外设驱动
-
SDK:包含mi_sdk、drm、sensordriver、demo app等代码。
-
project: 包含整个工程所用环境变量、配置信息、其他目录下生成需要打包烧录到机器上的驱动、库等文件以及最终烧录到机器上所需要的相关文件。
4. SDK编译流程¶
SSU purelinux SDK 在project下编译时会默认编译并自动复制boot、kernel及sdk-sensordirver下的内容到project目录下,无需单独手动release。
具体编译流程可以参考文档ssu938x环境搭建指南
Project config举例:
Chip | Packaging | Memory | Flash Type | Toolchain | Other | Defconfig |
---|---|---|---|---|---|---|
SSU9383 | BGA16 | ext-mem | SPI-NOR | glibc | 不带wifi | dispcam_p5.nor.glibc-6.4.0-squashfs.028A.512bga_demo.defconfig |
SSU9383 | BGA16 | ext-mem | SPI-Nand | glibc | sdio-wifi | dispcam_p5.spinand.glibc-6.4.0-squashfs.028A.512bga_demo.defconfig |
SSU9383 | BGA16 | ext-mem | EMMC | glibc | 不带wifi | dispcam_p5.emmc.glibc-6.4.0-ext4fs.028A.512bga_demo_defconfig |
5. SDK生成文件¶
SDK会根据用户选择的配置(nandflash、norflash或者emmc)生成不同的烧录文件及烧录脚本,并将对应文件放在project\image\output\images目录下
注意: 编译之前一定要确认toolchain路径要设置正确。
-
spi-nor
glibc:
-
选取合适config
cd project #make dispcam_p5.nor.glibc-6.4.0-squashfs.028A.512bga_demo.defconfig
-
clean并编译
#make clean;make image -j8
-
-
spi-nand
glibc:
-
选取合适config
cd project #make dispcam_p5.spinand.glibc-6.4.0-squashfs.028A.512bga_demo.defconfig
-
clean并编译
#make clean;make image -j8
-
-
emmc
glibc:
-
选取合适config
cd project #make dispcam_p5.emmc.glibc-6.4.0-ext4fs.028A.512bga_demo_defconfig
-
clean并编译
#make clean;make image -j8
-
5.1. spi-nor image文件¶
file | memo |
---|---|
boot.bin | IPL、uboot.bin会被打包为统一的boot.bin,用于引导系统启动 |
kernel | linux核心,包含设备树、gpio、Gsensor等外设驱动。 |
rootfs.sqfs | linux根文件系统,需要开机启动及系统必须且不修改的配置存在这个文件中 |
misc.fwfs | 存放开机logo图片配置等信息,uboot、kernel都可以访问 |
customer.jffs2 | 存放用户根据自己需求定义的lib及app,如wifi的驱动、网络依赖库 |
miservice.sqfs | 存放mi_lib及mi相关驱动 |
partition_layout.txt | nor flash 分区信息表 |
5.2. spi-nand image文件¶
file | memo |
---|---|
boot.bin | IPL、uboot.bin会被打包为统一的boot.bin,用于引导系统启动 |
kernel | linux核心,包含设备树、gpio、Gsensor等外设驱动。 |
rootfs.sqfs | linux根文件系统,需要开机启动及系统必须且不修改的配置存在这个文件中 |
misc.fwfs | 存放开机logo图片配置等信息,uboot、kernel都可以访问 |
customer.ubifs | 存放用户根据自己需求定义的lib及app,如wifi的驱动、网络依赖库 |
miservice.ubifs | 存放mi_lib及mi相关驱动 |
ubia.bin | 客户自定义分区 |
partition_layout.txt | nandflash 分区信息表 |
5.3. emmc image文件¶
file | memo |
---|---|
boot.bin | IPL、uboot.bin会被打包为统一的boot.bin,用于引导系统启动 |
kernel | linux核心,包含设备树、gpio、Gsensor等外设驱动。 |
rootfs.ext4 | linux根文件系统,需要开机启动及系统必须且不修改的配置存在这个文件中 |
misc.fwfs | 存放开机logo图片配置等信息,uboot、kernel都可以访问 |
customer.ext4 | 存放用户根据自己需求定义的lib及app,如wifi的驱动、网络依赖库 |
miservice.ext4 | 存放mi_lib及mi相关驱动 |