本帖最后由 chenbb8 于 2012-8-15 10:57 编辑
60# 291355171 大概的意思就是没有在野火的工程设置中,没有看到比较符合我心目中的软件分层的结构。
在野火的工程中没有看到符合我的要求原因,也许是我只看了野火的教程的IO部分,接着就暂时没时间继续学习了。
所谓的分层就是为了提高项目的可移植性,和代码的复用率。
我想象中的软件分层是将硬件相关的部分独立到硬件抽象层,然后在功能层中将硬件层的东西整理成容易理解的功能。在应用层中直接调用这些功能来完成各种任务。
比如我要做一个菜单,菜单是在应用层中的,通过调用功能层的函数来显示菜单。功能层则是一些显示函数,比如在哪里显示数字,在哪里显示图标,是否闪烁等,数据被写入到硬件抽象层中的缓冲区中,硬件抽象层中的函数定期对显示缓冲区中的数据进行处理,并将它们发送到外部的HT1622芯片中显示出来。和硬件相关的IO口设置,HT1622写入程序和初始化程序,段码影射表之类的都在硬件抽象层中。
傻孩子和NE5552合作写《深入浅出AVR》了,在书中的嵌入式部分也介绍了软件分层的思想,但是我觉得他给的工程模板用在我这种小型任务里显得有点复杂
而野火的工程中使用的库有屏蔽硬件细节的作用,可以说是软件分层里的硬件抽象层,但是不同的单片机给的库不一样,很多8位机里根本就没有库,所以我觉得应该还是要增加一个独立的建立在库之上的硬件抽象层。 |