目录
目录README.md

Grassland

基于事件型嵌入式驱动框架。

软件设计架构

Hardware:硬件层。

Device:设备接口驱动层。

AppLication:应用层。

uorbc:内部消息订阅与发布模型设计。

kernel:任务调度模块设计(Task)。

sensor:传感器驱动模型设计。

port:支持板子的接口,移植从这里开始。

​ Drivce:硬件驱动接口层。

​ CC3200:支持CC3200 Launchpad V4.1的板子。

example:示例代码。

软件芯片外设驱动设计

设计驱动库的设计思想,采用TI设计库的封装思想。

传感器驱动模型设计

采用OOPC设计思想。

LW_OOPC(Light Weight Object-oriented Programming with C,2010.1.24开源)轻量级的面向对象C编程框架是由台湾高焕堂先生以及他的MISOO团队创作了第一个版本之后,又由金永华改进优化,再以LGPL协议开源出来的。这个框架的面世与高焕堂的著作《UML+OOPC嵌入式C语言开发精讲》有关。总共一个.h文件、25个宏、约100行代码,非常的轻量级,但很好的支持了很多的面向对象特性,比如继承、多态(非完全意义上的多态,因为要提供类型,不是完全统一的形态),可以很优美的实现面向接口编程。

LW_OOPC不足以提供足够的能力使我们实现面向对象所有的概念。但是我们依然可以应用它们完成我们简单的面向对象思想的构建。

内部消息订阅与发布模型设计

熟悉消息中间件的同学应该对发布/订阅模式(Publish Subscribe Pattern)并不陌生。即使你不了解消息中间件,那么在平时生活中发布/订阅模式也是非常常见的场景。

任务调度模块设计(Task)

一直困扰一种使用操作系统和介于裸机的程序设计,当项目中遇到不需要操作系统,可是又不想将所有任务全部放入一个while(1)中,因此需要一个简单调度器来实现,不同功能或者任务之间进行切换的,在研究编程语言设计模式后,我发现有很多钟模式可以使用,但是都缺少对于嵌入式功能支持,在这个项目中,研究不同设计模式在嵌入式领域中应用,尤其是基于C语言设计模型,未来可能会研究C++,但是现在我们只研究C语言。

在任务设计模块中,使用一个定时器硬件资源,实现任务调度模块设计,使用1ms为调度器的基准,这对于程序设计人员提出更高的要求,必须保证每次设计任务在自己设计规定时间完成,不能超过设定时间,虽然不太清楚超过设计时间影响有多大,但是我们应该尽可能保证编写设计任务执行时间,符合设计时间。

开发任务管理

工作内容:

  • (1)新建工程。

  • (2)采用TI SDK和LW_OOPC进行代码设计。

  • (3)完成GPIO代码设计,并提交github。

  • (4)与MicroRTOS结合进行设计,优化文件管理结构,github:https://github.com/CaiNiaoLab/MicroRTOS ,取消与MicroRTOS结合,确定独立项目Grassland。

  • (5)使用C 语言,设计基于时间片的任务处理、任务注册、任务注销、任务初始化、任务发现。

    • 需要任务加上任务优先级调度。
    • 将工程移植到CC3200上,设置为1ms 为基准执行任务。
    • 在codeblock IDE 中成功实现独立运行。
    • 优化Thread,将代码命名,注释规范与整体同一。
    • 增加对创建任务时,命名检查功能。
    • 修改使用链表的方式存储任务名字、运行周期等任务信息。
  • (6)增加传感器模块驱动,列表如下:

    • TMP006
      • i.轮询驱动实现(未加中断)。
      • ii.使用中断管脚,进行中断驱动。
      • iii.根据数据手册完善,驱动代码。
    • BAM222
    • SPL006
    • AK8975
    • ICM60202
    • SHT20
  • (7)在codeblock IDE 中成功实现 FMS 的独立运行。

  • (8)参考《K&R》的代码风格进行,简单修改,在CCS设置为ZhaoSQ-CH。

    • 命名方式的修改和规范,并整理文档和发布。
    • 整理成文档和教程,发布到Gitbook中。
  • (9)设计内部消息订阅与发布模型设计。

    • 增加内存管理。
    • 实现在Codeblock上运行代码运行。
    • 完成初步框架设计。
    • 跟进设计文档。
  • (10)版本更新管理:

    1. Grassland V0.0.1,具有如下功能:
      • 具有GPIO drive,IIC drive。
      • 具有基于LW_OOPC的传感器模型设计(使用TMP006为例子)。
      • 具有简单的内部消息发送和订阅。
      • 具有基于1ms定时器任务轮询调度模块。
      • 具有TMP006、GPIO、IIC、任务轮询模块示例代码。
      • 支持CC3200 Launchpad V4.1的板子。
  • (11)需要增加TI芯片驱动:

    预计软件架构支持的板子

    • MSP432E401Y LaunchPad
    • MSP432P401R LaunchPad
    • CC3200 LaunchPad
    • Tiva-123 LaunchPad
    • MSP430F6638
  • (12)支持芯片硬件驱动资源:

    • GPIO

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • IIC

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • SPI

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • PWM Input

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • PWM Output

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • 中断

    • UART

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • UART的DMA

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • ADC

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • RGB灯

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • L298n驱动

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • DVR88335

      • i. 轮询驱动实现(不带中断)。
      • ii.中断驱动实现。
    • LCD:

    • 0.96寸OLED

关于

基于事件型嵌入式驱动框架。

1.4 MB
邀请码