2.1. 代码结构
2.1.1. 目录总览
sdk $ tree -L 2
├── application // 存放APP代码
│ ├── baremetal
│ └── os
├── bsp // 存放BSP代码,和RT-Thread原生的bsp目录功能相同
│ ├── zx // SoC内部的driver、hal以及最小系统sys代码
│ ├── common // 公共头文件
│ ├── peripheral // 一些外设模块的驱动
│ ├── examples_bare // 各模块在裸机环境的示例代码
│ └── examples // 各模块在RTOS环境的示例代码
│ ├── test-alarm
│ ├── test-audio
│ ├── test-can
│ ├── test-dma
│ ├── test-qspi
│ ├── test-touch
│ └── test-uart
├── win_env.bat // 启动RT-Thread的env工具,用于Windows环境的开发
├── win_cmd.bat // 启动CMD.exe,用于Windows环境的开发
├── kernel // 存放各种RTOS内核
│ ├── common
│ ├── freertos
│ └── rt-thread
├── output // SDK的编译输出
├── packages // 组件包
│ ├── zx // ZX开发的组件包
│ └── third-party // 第三方的组件包
├── target // 方案(板)级的代码和配置
│ ├── configs // 整个方案的SDK配置文件
│ └── m3c // m3c 芯片对应的板级代码(见子目录)
│ └── m3a // m3a 芯片对应的板级代码(见子目录)
├── toolchain // 解压后的工具链存放目录
└── tools // 一些工具
├── onestep.sh // OneStep命令行增强工具
└── toolchain // 工具链的压缩包
2.1.2. application
存放应用和各种示例
├── baremetal //baremetal 裸机
│ ├── bootloader //系统的引导加载程序
│ └── helloworld //系统示例
└── os
└── helloworld //系统示例
2.1.3. bsp
bsp 目录是 SoC 的核心,封装了该 SoC 的所有接口和驱动
├── zx
│ ├── drv //驱动
│ ├── hal //硬件抽象
│ ├── include
│ ├── SConscript
│ └── sys //最小系统
├── common
│ ├── include
│ └── SConscript
├── Kconfig
├── peripheral //三方外设驱动封装
│ ├── Kconfig
│ ├── SConscript
│ ├── touch //触控
│ └── wireless //无线
└── SConscript
2.1.4. doc
遵从 RT-Thread 原始建议使用 Markdown 编写的 SDK 的简单设计和使用文档
2.1.5. Kernel
Kernel 是 RTOS 系统的核心,该目录实现了 ZX-RTT 支持的三种运行方式的内核
2.1.5.1. baremetal
裸机系统的接口封装
2.1.5.2. freertos
FreeRTOS 内核的实现
2.1.5.3. rt-thread
RT-Thread 内核的实现
2.1.5.4. common
aic 公共接口的封装
2.1.6. package
组件包,包括 ZX 开发的组件和 三方组件,支持从 RT-Thread online 下载
├── zx //ZX 开发
│ ├── Kconfig
│ ├── mpp
│ └── SConscript
├── Kconfig
├── SConscript
└── third-party //三方组件
├── bonnie
├── cherryusb
├── cpu_usage
├── Kconfig
├── littlefs
├── lvgl
├── lwip
├── mklittlefs
├── ramdisk
├── SConscript
└── uffs
2.1.7. target
存储方案(开发板)的配置信息
2.1.7.1. configs
存放某一个方案(开发板)的功能配置信息
ZX6D75_bootloader_defconfig
ZX6D75_rt-thread_defconfig
ZX7D0N_bootloader_defconfig
ZX7D0N_rt-thread_defconfig
ZX7D0_bootloader_defconfig
ZX7D0_rt-thread_defconfig
ZX9D35N_bootloader_defconfig
ZX9D35N_rt-thread_defconfig
ZX9D35_bootloader_defconfig
ZX9D35_rt-thread_defconfig
config文件的内容示例
cat ZX7D0_rt-thread_defconfig
CONFIG_SOC_THEAD_SMART=y
# CONFIG_QEMU_RUN is not set
CONFIG_PRJ_CUSTOM_LDS=""
CONFIG_AIC_CHIP_M4=y
CONFIG_CACHE_LINE_SIZE=64
CONFIG_AIC_CMU_DRV=y
CONFIG_AIC_CMU_DRV_V10=y
CONFIG_AIC_CMU_DRV_VER="10"
2.1.7.2. m4
存放某一个方案(开发板)的参数配置信息,以代码的方式存在
├── ZX7D0
│ ├── board.c
│ ├── include
│ ├── Kconfig.board
│ ├── pack
│ ├── pinmux.c
│ ├── SConscript
│ └── sys_clk.c
├── ZX7D0N
├── ZX9D35
├── ZX9D35N
Kconfig.board :提供方案的外设选择项
pinmux.c :该方案的 pinmux 配置
SConscript :该方案目录的编译配置
sys_clk.c : 该方案的clk配置
include :该方案特殊的include文件,主要是 board.c 的接口
pack :该方案在打包固件时的配置,如ddr,分区等配置信息
board.c:该方案的初始化运行接口
2.1.8. toolchain
原始为空目录,用于存放解压后的工具链
2.1.9. tools
该目录用于存放一些常用工具
onestep.sh : Linux 上使用的 onestep 脚本
env : 环境搭建和运行需要的三方工具
script: 编译和打包固件需要的脚本
toolchain: 工具链包
Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz : Linux 工具链
Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz : Windows 工具链