首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写能在多硬件平台上运行的可配置嵌入式C代码

如何编写能在多硬件平台上运行的可配置嵌入式C代码
EN

Stack Overflow用户
提问于 2010-06-03 17:34:15
回答 4查看 2K关注 0票数 1

编写一个具有多种功能的嵌入式C语言软件的技术是什么?可以为多硬件平台配置功能。

我已经为ARM7开发了一个基于实时操作系统的固件。现在我想让它成为一个基准固件,可以在不同的微控制器上使用类似的,或多或少的功能(可配置),如MSP或AVR等。

更具体地说,如果我想为一个硬件更改固件的不同功能,而为第二个硬件更改其他功能。我应该采用什么技术,有没有可用的学习材料。问候

EN

回答 4

Stack Overflow用户

发布于 2010-06-03 20:41:04

有两种常用的方法: 1)大量的#ifdefs;2)编写“驱动程序”,并确保其他代码被抽象

如果您在类似的平台上运行,1)可能最适合您。如果平台非常不同,那么2)可能是一个更好的主意。我见过的大多数现实世界的解决方案都采用了#ifdef方法,但这很快就导致了难以修改的错综复杂的代码。我会推荐一些介于两者之间的东西,因为在2)中设计驱动程序是困难的。

类型应该在types.h文件中指定,或者使用像uint16_t这样的显式类型。我们基于绝对(U8,U16,U32,S8...)定义我们自己的类型,因为C中的内置类型是依赖于实现的。然后,当架构发生变化时,该文件也会发生变化。

票数 2
EN

Stack Overflow用户

发布于 2010-06-03 21:19:10

FreeRTOS已经被ported to a lot of architectures了,包括你列出的三个。你为什么不看看他们的porting guide来获得灵感呢?

他们的方法包括一个配置头文件,用于特定于平台的驱动程序函数的C文件和用于更多特定于平台的子例程的汇编文件。所有其他源代码只包含通用功能,然后根据需要使用特定于平台的驱动程序函数的通用接口和配置头中的一些#ifdef和宏。

票数 1
EN

Stack Overflow用户

发布于 2010-06-03 21:25:04

通常,可移植性可以通过以下方式解决:

  1. 使用I/O驱动程序,因此应用程序代码没有特定于硬件的操作系统调用抽象层,因此您的应用程序代码可以通过重写一层薄薄的函数调用来适应不同的实时操作系统。
  2. 避免使用编译器特定的指令和编译指示,或者将它们隔离到几个头文件中,这些头文件可以替换为与平台相关的数据类型,如'int‘,并在重要的地方使用使用指定存储大小定义的类型(即,将您最低常见的存储大小定义为最重要的类型选择应该如何设计内存体系结构时的分母。

祝你好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2964691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档