ax32xx
ax32xx
John DoeAX32xx SDK 系统架构分析
基于提供的 main.c 文件和项目结构,AX32xx SDK 采用了模块化的嵌入式系统架构,具有以下特点:
1. 整体架构概览
系统初始化流程
1 | // 从 main() 函数可以看出系统启动流程: |
核心组件层次
- 硬件抽象层 (HAL):底层硬件驱动和控制
- 系统服务层:任务管理、消息队列、定时器服务
- 设备管理层:统一的设备驱动框架
- 应用管理层:多任务系统和UI管理
- 用户界面层:UI管理和资源管理
2. 任务管理系统
任务注册与管理
- 任务结构:定义了 sysTask 结构体,包含任务名称、参数和操作函数
- 任务类型:
- TASK_POWER_OFF - 最高优先级
- TASK_VIDEO_RECORD - 视频录制
- TASK_PHOTO_ENCODE - 照片编码
- TASK_PLAY_BACK - 回放
- TASK_USB_DEVICE - USB设备
- TASK_MAIN_MENU - 主菜单
- TASK_GAME - 游戏功能
任务调度机制
- 使用 taskRegister() 函数注册任务
- 通过 taskStart() 启动任务
- taskService() 进入任务服务循环
3. 设备驱动框架
统一设备管理
- 设备注册:使用 boardOpen() 函数统一打开设备
- 设备控制:通过 boardIoctrl() 进行设备控制
支持的设备类型
- DEV_NAME_BATTERY - 电池
- DEV_NAME_USB - USB设备
- DEV_NAME_ADKEY - 按键
- DEV_NAME_SDCARD - SD卡
- DEV_NAME_LED - LED
- DEV_NAME_LCD - LCD显示屏
4. 消息队列系统
消息处理机制
- 系统消息队列:SysCtrl.sysQ 用于系统事件处理
- 消息类型:
- SYS_EVENT_SDC - SD卡事件
- SYS_EVENT_BAT - 电池事件
- SYS_EVENT_USB - USB事件
- 消息队列操作:使用 XMsgQCreate()、XMsgQPost()、XMsgQFlush() 等函数
5. 实时操作系统 (XOS)
定时器服务
- 系统定时器:使用 hal_timerStart() 启动1000Hz的定时器
- 系统节拍:XOSTickService 提供100 tick/s的系统节拍服务
- 工作队列:XWorkCreate() 创建定时工作项
6. 资源管理系统
UI资源管理
- 图标资源:User_Icon_Table 包含所有UI图标
- 字体资源:fontInit() 初始化字体系统
- 资源加载:R_loadResource() 加载图标资源
显示系统
- 显示层管理:dispLayerInit() 初始化OSD显示层
- UI管理:winInit() 初始化窗口系统
7. 系统控制结构
System_Ctrl_T 结构
1 | System_Ctrl_T SysCtrl; // 全局系统控制结构 |
包含:
- 设备文件描述符(电池、USB、按键、SD卡等)
- 系统状态标志(电源标志、PIP模式等)
- 消息队列句柄
- 文件列表索引等
8. 电源管理
电源状态控制
- 唤醒控制:hal_vddWKOEnable() 和 hal_wkiWakeup()
- 电源标志:区分按键开机和USB/DC输入开机
9. 文件系统
存储管理
- 非易失存储:nv_init() 初始化只读资源
- 文件系统:fs_init() 初始化文件系统
- 文件浏览:explorer.c 提供文件列表管理
这个架构设计充分考虑了嵌入式系统的资源限制和实时性要求,通过模块化设计实现了Thumb相机的多媒体功能。


