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为调度器的基准,这对于程序设计人员提出更高的要求,必须保证每次设计任务在自己设计规定时间完成,不能超过设定时间,虽然不太清楚超过设计时间影响有多大,但是我们应该尽可能保证编写设计任务执行时间,符合设计时间。
开发任务管理
工作内容:
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 语言,设计基于时间片的任务处理、任务注册、任务注销、任务初始化、任务发现。
(6)增加传感器模块驱动,列表如下:
(7)在codeblock IDE 中成功实现 FMS 的独立运行。
(8)参考《K&R》的代码风格进行,简单修改,在CCS设置为ZhaoSQ-CH。
(9)设计内部消息订阅与发布模型设计。
(10)版本更新管理:
(11)需要增加TI芯片驱动:
预计软件架构支持的板子
(12)支持芯片硬件驱动资源:
GPIO
IIC
SPI
PWM Input
PWM Output
中断
UART
UART的DMA
ADC
RGB灯
L298n驱动
DVR88335
LCD:
0.96寸OLED