跳转至

SDK目录说明

1. SDK目录结构

图1 sdk目录结构图

Source code说明

sdk:关于sensor driver和sample_code的源码,以及依赖Linux kernel的相关sdk源码。

boot:Uboot的相关源码与编译环境。

kernel:kernel的相关源码与编译环境。

project:编译整个工程的配置文件和环境。

rtos:rtos的相关源码与编译环境。

optee:optee的相关源码与编译环境。

2. 内容详解

2.1. rtos

cd rtos/proj
.
├── add-config.mk//用户无需关注
├── build//编译后会产生的目录
│   └── iford_ssc029a_s01a_512_ipc_lh_spinand //根据编译的配置生成的目录,
|     //会把所有编译需要用到的lib/c file复制过来,然后在此生成对应的链接文件,axf、map、elf、bin等
├── clear-config.mk //用户无需关注
├── config.mak //编译环境配置
├── configs//配置文件及脚本文件,编译脚本会自动处理,用户无需关注
├── gen_ext_cfg.sh//make配置相关脚本
├── hdrs//头文件目录
│   └── iford_ssc029a_s01a_512_ipc_lh_spinand//配置文件对应的头文件
├── Kconfig//menuconfig配置文件
├── libs
│   ├── algo//算法相关lib
│   ├── otp//otp相关lib
│   ├── product//不同的mak文件对应的系统、MI、Mhal的lib
│   └── toolchain//标准C库
├── mak
│   ├── common //通用的lib/h file路径定义
│   ├── defconfigs //配置文件,用户需要关注,所有应用配置在这。
│   └── Kconfigs  //menuconfig各级配置文件
│   ├── defconfigs//配置文件,用户需要关注,所有应用配置在这。
├── Makefile
├── sc//源码目录
│   ├── application//应用目录
│   │   ├── bootloader
│   │   ├── ...//其他应用
│   │   └── dualos_camera//主要关注串流应用demo
│   ├── customer//客制化模块目录
│   └── driver//驱动目录
│       ├── sysdriver//系统模块driver,例如:I2C/PWM/UART/earlyinit_fw等.
│       └── thirdparty//用于放置外接模块driver,例如wifi等
├── scatter//链接使用的lds文件
├── scripts//编译脚本目录,用户无需关注
├── tng//配置脚本目录
│   └── configure.pl//主要是使用这个
└── tools//一些工具,用户无需关注

2.2. boot

目录结构和原版U-Boot一致,用户主要关注以下目录:

.
├── ....
├── common
│   └── cmd
│       └── mstar //sstar提供的uboot下相关cmd,其中包含estar.c涉及系统升级
├── drivers
│   └── mstar//sstar提供的外设驱动
├── configs
│   └──iford_ssc029a_s01a_lh_spinand_defconfig//项目配置文件,不同型号使用不同,
|                                //具体查看alkaid defconfig里面CONFIG_UBOOT_CONFIG参数的定义。
└── ....

2.3. kernel

目录和原版kernel基本一致,用户主要关注以下目录:

.
├── ....
├── arch
│   └── arm
│        ├──boot
│        │    └──dts
│        │        └──iford-ssc029a-s01a-dualos.dts//设备树文件
│        └── configs
│             └── iford_ssc029a_s01a_lh_spinand_defconfig/项目配置文件,不同型号使用不同,
|                            //具体查看alkaid defconfig里面CONFIG_KERNEL_CONFIG参数的定义。
├── drivers
│   └── sstar//sstar提供的外设驱动
└── ....

2.4. sdk

sdk
├── verify
│     └── mi_demo    //sstar mi完整ut demo,建议只参考RTOS_preload demo
│     └── sample_code
│          ├──source//各种demo例子,用户也可以在这新增自己demo
│          │    └──Makefile//要在这里DualOS on判断下加上demo名字才会编译到
│          └──out//编译完毕后可以在这里找到bin档案
|── driver
|     └──SensorDriver//sensor drv源码,RTOS也是使用这里的drv源码
|
└── linux //sdk与kernel解耦后,sdk编译所需源码,dualos不支持sdk与kernel解耦,无需关心该目录。

2.5. project

.
├── board//板子相关
│   ├── iford
│   │   ├── boot
│   │   │   └── nor/nand
│   │   │       ├── ipl-dualos//用于存放DualOS需要的IPL/IPL_CUST。用户想切换到其他版本可以在这里找。
│   │   │       │   ├── IPL.bin
│   │   │       │   └── IPL_CUST.bin
│   │   │       └── partition//用于存放flash list文件
│   │   │           ├── flash_list.nri
│   │   │           └── flash.nri
│   │   ├── dla_file//如果chip带ipu,会有对应的ipu fw bin和model bin
│   │   ├── iqfile//IQ文件
│   │   ├── json //mi获取的外部参数json文件,RTOS是否要preload video或audio,也在此配置。
│   |──rtos//RTOS中会去读取这些文件,该目录下的文件一般会copy到板子端/misc目录下。
│   │   ├── 200X131.argb1555//argb文件
│   │   ├── hanzi_16x16//字体文件
│   │   ├── rtos.sz//编译后的RTOS的bin档。放在此处编译project后,会自动copy到out/image目录下
│   │   └── PreloadSetting.txt//RTOS demo使用的串流信息文件
│   └── uboot//公版默认uboot打包文件
├── configs
│   └── verify
│   │   └── defconfigs
│   │       └──ipc-rtos_iford.spinand.glibc-11.1.0-ramdisk.ssc029a.512.bga12_ddr4_defconfig//project的配置文件,例如KERNEL/MMA/SENSORIQ配置等等;不同型号使用不同配置文件,此处以SSM000C-S01A-S型号为例。
├── image//所有制作image的配置文件/工具/脚本。
│   ├── build//已经编译好的部分image制作工具,例:lfs/fwfs的制作工具
│   ├── busybox//已经裁剪编译好的busybox
│   ├── configs//分区相关的配置文件,请重点关注
│   │   └── general
│   │       ├── customer.mk//决定打包哪些文件到customer分区(UBI)下,并且输出执行命令到脚本
│   │       ├── misc.mk//决定打包哪些文件到misc分区(FWFS)下
│   │       ├── miservice.mk//决定打包哪些文件到miservice分区(UBI)下,一般放置MI动态库和kernel的KO
│   │       ├── ramdisk.mk//决定打包哪些文件到ramdisk,决定启动脚本中执行哪些应用。ramdisk也是真正第一个挂起的rootfs
│   │       ├── rootfs_fastboot.mk//rootfs fastboot版本
│   │       ├── rootfs.mk//同上都是管理roofs的打包信息,这个是第二个挂载的rootfs,实际是挂到ramdisk上。细节可看ramdisk.mk。
│   │       ├── nor-ramdisk.rtos.partition.config//nor flash的分区脚本
│   │       └── spinand-ramdisk.rtos.partition.config//nand flash的分区脚本,所有分区信息都在这里配置。包括上面提到的IPL选择也在这里完成。
│   ├── image.mk//分区的制作脚本,根据分区表信息,这里会调用对应工具去制作相应的bin档,在images/目录下。
│   │             //并且生成分区表images/boot/PARTINFO.pni。
│   ├── ota.mk//如果使用sstar提供的ota工具,这里是用于制作ota bin的对应脚本。
│   ├── script.mk//用于制作分区烧录的脚本,生成在images/scripts。一般uboot进行烧录的时候,会调用该脚本,对flash进行擦除/写入。
│   ├── etc
│   │   └── init.d//系统初始化配置
│   ├── firmwarefs-fuse//fwfs linux应用
│   ├── fuse//lfs or fwfs 执行需要依赖的库
│   ├── littlefs-fuse//lfs linux应用
│   ├── makefiletools//制作rootfs的工具
│   ├── rootfs//rootfs包
│   └── systemtap//内核调试工具
├── kbuild
│   └── customize
│       └── 5.10
│           └── iford
│               └── ipc-rtos──nor/nand //主要关注下面的脚本,决定会从kernel copy哪些ko到project下和ramdisk
├── release
│   ├── chip
│   │   └── iford//SDK对应的库文件
│   │       └── ipc-rtos//DualOS的主要在这里面
│   └── include//SDK头文件
├── scripts//project使用的脚本,用户无需关注
└── tools//调试工具,iqtool等

2.6. Reference

Reference包含功耗/性能/硬件单元测试报告、硬件资料。