WQ7033 SDK代码介绍和启动流程

WQ7033 SDK介绍和启动流程

这篇文章简要介绍了SDK目录结构以及通过SDK代码介绍WQ7033的启动和运行流程, 为刚入门WQ7033芯片开发的朋友提供了参考, 如果需要搭建WQ7033的开发环境, 可以参考上一篇文章: WQ7033开发环境的搭建

WQ7033 SDK介绍

  1. SDK压缩包解压后SDK文件结构如图
    SDK介绍
    prebuild 目录内包含已经编译好的wpk文件
    src 目录内包含源码文件
    tools 目录内包含编译时使用的一些python脚本

  2. 源码文件下的目录结构如图
    SDK介绍2
    app: 包含各应用模块的代码
    config: 芯片配置相关代码(寄存器映射, flash分区等相关代码)
    customer: 不同项目的配置, UI相关代码
    driver: 硬件驱动相关代码
    lib: 一些实现app应用模块底层实现的细节(里面也是源码形式, 不是lib的形式提供)
    os: 操作系统相关代码, 代码中用到的是freeRTOS
    project: 项目主函数入口
    vendor: 一些外设的驱动, 入耳传感器的驱动, flash驱动, ntc驱动等

由上面SDK结构可以看出, 开发过程中一般只需要修改app, customer目录中的代码就好

SDK代码启动流程分析

  1. 软件的启动是从SDK目录下的src\project\tws\core0中的start.S开始的. start.S文件是SDK中的核心启动文件
    SDK启动 1

  2. 首先调用到了 software_init() 函数, 做了一些内存的初始化和中断的初始化处理
    SDK启动 2

  3. 然后调用跳转到了main()函数进行初始化
    初始化了片上硬件资源, 配置时钟以及操作系统OS的初始化等
    SDK启动 3

  4. 进入main_lib_init()函数中创建了app_entry任务, freeRTOS中创建好的任务进入就绪态, 等待调度
    SDK启动 4

  5. main函数末尾调用了os_start_kernel开启任务调度器
    SDK启动 5

  6. 开启调度器后, app_entry任务得到调度, 进入app_entry函数
    SDK启动 6

  7. 进入app_main_entry() 函数中创建了APP模块中使用到的信号量, 创建了消息队列, 还创建了app_main任务
    SDK启动 7

  8. app_main任务创建后进入就绪态, 得到调度后, 进入app_main_task_func()
    SDK启动 8

  9. 在app_main任务中进行各个应用模块的初始化, 在初始化时候, 各个应用模块通过调用app_register_msg_handler(), 注册本模块消息接收处理回调, 到这里初始化就已经完成了.

  10. 接着这个任务就一直在死循环while(1), 即app_main任务会一直阻塞等待信号量, 等待事件的发生app_main任务中main_queue有区分高优先级和低优先级消息.

  11. 整个应用软件都是以消息驱动的方式实现. 应用程序会创建一个操作系统级的主任务app_main任务,各个模块会把消息发送给主任务, 主任务等待各种事件的到达, 并调用相应模块提供的服务进行处理, 如图为消息驱动处理方式
    SDK启动 9

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小的代码里面挖呀挖呀挖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值