Programming Ideas and Specifications in Embedded C Language

从大学到工作,从刚接触编程语言到开始利用这些机器打交道的工具来做一些东西。使用的越多,越发现自己的不足。刚开始利用一些拼凑的逻辑,硬堆了一套套功能,实现了一个个表象,觉得这样开发也OK啊。可是随着项目的深入,暴露的问题变得渐渐多了起来,直到一天,它失控了…我开始不知道从哪去补掉这个BUG。回顾自己代码,一个个补丁,一个个不知当时心路历程而写下的延时函数…开始发觉,是否是时候后该改变了? 这篇文章暂只针对利用C语言来开发单片机。记录一些编程的思路,也许日后会少踏一些坑。有些思路对不同种语言都是通用的,但是C语言作为一种面向过程的语言,又有自己独特的韵味在里面。有些人觉得单片机开发很简单,如果不上RTOS,甚至不好意思和嵌入式扯上关系。但是,莫要眼高手低,如果细细耕耘,里面有很多东西需要去挖掘。

单片机(8051内核或者cortex-M或者ARM7内核)编程主要有两种模式:轮询式或者用上实时操作系统(RTOS)。小的项目使用轮询或者OSAL系统抽象层基本上都能满足。对于RTOS的使用需要开发者对全局有很好的掌控,虽然它为开发者提供了各种各样的API去操作,但是底层跑的单片机还是一样的,表面上是便利了开发者,实际上由于经验不足操作不慎,一个小疏忽可能造成崩盘式的结果。因为中断这种东西…很危险的。。

目前做项目用到的OSAL框架,实际上是轮询式的思想。它和RTOS很像,但又不属于优先级抢占式类型或者时间片轮转的操作系统,应为它不会自己产生中断,没有邮箱,没有信号量…就像它的名字一样,操作系统抽象层。

利用OSAL框架简单介绍一下轮询式的编程方式和思想:

状态机

消息队列

环形数组

系统中断

利用RT-Thread简单介绍一下RTOS内核实现以及编程方式和思想

线程同步

信号量

邮箱

链表

Comment