嵌入式软件设计好象有两个观点,一个是只使用ide提供的寄存器定义头文件,其他代码都自已写,优点是作者的水平高的话将能写出最优化的程序,如果该程序员是个经验与技术都非常过硬或有自已的编程工具箱(自已封装并经过了时间的历练的代码库)再或者大公司有自已公司内部的该mcu的
firmware library;
但缺点是工作量会相应增大。
另一个是使用mcu厂商提供的针对某嵌入式内核,如cortex-m3,再加上外围器件的某系列soc开发的firmware library。这种firmware library能最大化开发速度,但如果全部使用库函数的话会使芯片的空间和运行效率下降不少,但是如果懂得取舍,也就是有选择地使用该库的功能函数,某些低效率的函数即自已实现。那么即是一个很好的折中方案,因为现在的mcu不象以前的mcu那样死扣代码空间和内存空间和运行效率,当然高效率是个永恒的主题(特别是嵌入式系统领域),而是在向着“代码易于移植”的方向不断折中地发展着,这就要求尽可能在保证运行效率在要求范围内对项目程序设计进行“栈”式设计,就象tcp/ip协议栈,把功能抽象成各个相对独立的层,然后底层向上层提供服务(api函数),上层向底层提出要求。但这个栈的概念和数据结构中栈或堆的是完全不同的概念。
st公司是比较喜欢针对自已的soc提供firmware library 的,我就一直在stm32的开发中从一开始就有选择地使用, stm8也不例外,也提供了相应的firmware library .(
stm8sfwlib.zip
)
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=120604&Name=zjcsharp