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包含功耗/性能/硬件单元测试报告、硬件资料。