编写一个具有多种功能的嵌入式C语言软件的技术是什么?可以为多硬件平台配置功能。
我已经为ARM7开发了一个基于实时操作系统的固件。现在我想让它成为一个基准固件,可以在不同的微控制器上使用类似的,或多或少的功能(可配置),如MSP或AVR等。
更具体地说,如果我想为一个硬件更改固件的不同功能,而为第二个硬件更改其他功能。我应该采用什么技术,有没有可用的学习材料。问候
发布于 2010-06-03 20:41:04
有两种常用的方法: 1)大量的#ifdefs;2)编写“驱动程序”,并确保其他代码被抽象
如果您在类似的平台上运行,1)可能最适合您。如果平台非常不同,那么2)可能是一个更好的主意。我见过的大多数现实世界的解决方案都采用了#ifdef方法,但这很快就导致了难以修改的错综复杂的代码。我会推荐一些介于两者之间的东西,因为在2)中设计驱动程序是困难的。
类型应该在types.h文件中指定,或者使用像uint16_t这样的显式类型。我们基于绝对(U8,U16,U32,S8...)定义我们自己的类型,因为C中的内置类型是依赖于实现的。然后,当架构发生变化时,该文件也会发生变化。
发布于 2010-06-03 21:19:10
FreeRTOS已经被ported to a lot of architectures了,包括你列出的三个。你为什么不看看他们的porting guide来获得灵感呢?
他们的方法包括一个配置头文件,用于特定于平台的驱动程序函数的C文件和用于更多特定于平台的子例程的汇编文件。所有其他源代码只包含通用功能,然后根据需要使用特定于平台的驱动程序函数的通用接口和配置头中的一些#ifdef和宏。
发布于 2010-06-03 21:25:04
通常,可移植性可以通过以下方式解决:
祝你好运。
https://stackoverflow.com/questions/2964691
复制相似问题