用于编写具有多种功能的嵌入式C软件的技术有哪些。功能可以配置为多硬件平台。
我开发了基于ARM7 RTOS的固件。现在我想把它变成一个基线固件,可以在不同的微控制器上使用类似的,或多或少的功能(可配置),如MSP或AVR等。
更具体一点,如果我想为一个硬件更改固件的不同功能,而为第二个硬件更改其他功能。我应该采用什么技术,是否有任何可用的研究材料。 此致
答案 0 :(得分:2)
常用的方法有两种: 1)很多#ifdefs 2)写“驱动程序”并确保其他代码被抽象
如果您在类似的平台上运行,1)可能最适合您。如果平台非常不同,那么2)可能是一个更好的主意。我见过的大多数现实世界的解决方案采用#ifdef方法,但这很快就会导致难以修改的混乱的代码迷宫。我会推荐介于两者之间的东西,因为很难在2)中设计驱动程序。
应在types.h文件中指定类型,或使用uint16_t等显式类型。我们基于绝对值(U8,U16,U32,S8 ......)定义所有自己的类型,因为C中的内置类型是依赖于实现的。然后在体系结构更改时更改此文件。
答案 1 :(得分:1)
FreeRTOS已ported to a lot of architectures,包括您列出的三个。你为什么不看看他们porting guide的灵感?
他们的方法涉及配置头文件,用于平台特定驱动程序函数的C文件和用于更多平台特定子例程的汇编程序文件。所有其他源代码仅包含通用功能,然后根据需要使用特定于平台的驱动程序函数的通用接口和配置头中的一些#ifdef和宏。
答案 2 :(得分:1)
通常可以通过以下方式解决可移植性:
祝你好运。
答案 3 :(得分:0)
一般关键是获取所有平台相关信息并将其收集在一个或多个头文件中。如果您不能让它们运行相同的代码,您也可以让系统由#ifdef
配置。我在AVR'r MSP上使用这种方法,并在标准计算机上运行代码。