平台具有如下特点:
层次性,服务性,规范性,通用性,技术密度
当一个平台建立起来后,其对应得接口就具有一定的规范。一个软件模块一旦开发完毕,其接口函数及使用方法就确定了,应用程序就需要按规范使用。
平台从来不是给一个应用使用的。如果一个平台只能够给一个应用使用,作为平台来说,其设计是失败的。这是平台的服务性决定的。
应用程序接口这个软件开发平台的提出和应用是因为其能解决当前及今后的嵌入式开发过程中出现的一些矛盾。使用API开发的优点
缩短开发时间
降低对开发人员的要求
降低开发成本
增加稳定性和可靠性
降低软件对硬件的敏感性
不适合使用平台开发的场合:
1.极大批量的产品
这种产品往往要求硬件成本和生产成本最低化。而使用平台开发不可避免带来资源占用的增加,反映到硬件上就是成本的增加。
2.没有合适的平台但产品需要尽快上市
开发平台是需要时间的,甚至比当前项目的时间更长。
3.需要极度榨取硬件性能的场合
建立开发平台的方法
1.选择操作系统
2.制定API规范及应用程序编写规范
这些规范一部分已经被操作系统规定好了,另一部分需要自己制定。建议这些规范尽量靠近与已存在的事实标准,以减少学习时间
3.获取成熟的软件模块并修改适合指定的规范
4.编写自己的软件模块
因为开发平台基于操作系统,所以很能多个任务同时访问一个API函数。这就需要API函数是可重入的。
这里主要介绍如何使这些函数可重入,和气体一些内容。
1.使用任务
有一些设备需要CPU周期为其服务,典型的是扫描显示和扫描键盘。可以给它们分配相应的任务,与用户任务一起调度。这样,就可以使用任何任务间通信的方法实现。
2.禁止然后允许中断
有一些设备需要的访问时间很短,如全局变量。它们可以通过禁止中断---访问变量---允许中断的方式编写软件。
3.使用信号量
一些设备使用时间过长,使用2可能导致关中断时间过长。此时可用信号量来编写软件模块。申请信号量,访问设备,发送信号量。
4.使用数据队列
5.禁止然后允许任务调度
6.使用一个任务作为模块服务器
当一个软件模块十分复杂,使用上述方法难以保证API函数可重入性时,或软件模块需要在单任务环境和多任务环境都能够使用时,可以依照单任务的方式编写,然后编写一个任务作为服务器,由这个服务器直接操作这个软件模块,而其他的任务通过消息队列等方式与之通讯,把需要的操作提交给服务器,而服务器通过消息邮箱等方式返回操作结果。
7.复合方法
有一些驱动程序比较复杂(例如通信协议),可以结合两种或两种以上的方法实现
编写软件模块有一个注意的地方是:必须把与硬件相关的部分和与硬件无关的部分分开。这可以通过把与硬件想关的部分放在驱动程序中实现。这样,硬件变化时只需要重新编写驱动程序即可。驱动程序也可以分层实现。也可以通过配置实现,不过这有时不太容易实现。当然可以合并使用。
软件模块应用于不同的硬件平台时,只需要修改相应的硬件驱动。
文章评论(0条评论)
登录后参与讨论