首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cortex M4中固件分离与应用

Cortex M4中固件分离与应用
EN

Stack Overflow用户
提问于 2014-05-30 16:29:33
回答 2查看 423关注 0票数 1

我正忙于一个庞大的项目,在那里,我需要为汽车控制系统编写软件。下面是我使用的内容:

  1. 我用的是STM32F4芯片
  2. 我正在编写的应用程序(控制应用)在Matlab Simulink。然后,我从Matlab中生成Cortex M4优化代码,这是我在我的Keil uVision项目中简单包含的。(工作起来很有魅力)
  3. 我手动编写了驱动程序层的软件,并与硬件抽象层接口。

我想保持我的Simulink生成代码和我的‘固件’手写代码之间的分离。本质上,我希望能够在不影响我的控制应用程序的情况下更改固件。

我想使用一个配置文件来映射Matlab与我的硬件寄存器生成的变量(例如,GPIO )。我想通过配置文件(例如,通过xml文件)来实现这一点。

有没有人做过这样的事,甚至有可能。我正在寻找一种优雅的解决方案,它不会消耗大量的RAM。

非常感谢!

PS:是否可以根据存储在.xml或.txt文件中的变量名来声明代码中的变量。

因此,如果在.txt文件中我有"Pressure_Sensor = 0",那么是否可以使用宏定义在代码中声明一个变量: Pressure_Sensor = 0;

EN

回答 2

Stack Overflow用户

发布于 2014-05-31 03:41:40

如果希望将变量从语法中包含到c项目中,无论是.xml文件还是.txt文件,都有几种方法可以实现。如果要将变量保持为c兼容的声明样式,如下所示:

代码语言:javascript
复制
int Pressure_Sensor = 0;

并且该文件中没有其他无效语义,您可以始终将该文件包含到您的编译单元中。文件的扩展名并不重要。#include指令实际上只是将该文件插入位置。

如果要按照非c兼容的语言(如XML )进行操作,生成这些变量并将这些变量包含到构建中的标准方法是让脚本运行是一个预构建操作,解析该.xml文件,然后生成一个与c兼容的包含文件,并将其包含到编译单元中。使用它的最常见的事情之一是将版本/构建信息生成到构建中,这可以找到许多示例。

票数 0
EN

Stack Overflow用户

发布于 2014-06-05 08:30:59

你可以这样做:

简化的问题陈述是:您希望通过代码修改CPU端口寄存器,但您不知道该端口寄存器的地址(端口地址可能外部更改)。

解决方案是:i)在您的代码中:

让您的程序假设端口寄存器的地址位于固定位置,比如0x1000。某人/某物会把端口寄存器的地址写在0x1000 (你的程序不在乎怎么写),所以要改变引脚K1,你必须改变0x1000的地址值。但是等等,您只想更改一个端口引脚,而您不知道是哪一个端口引脚,假设引脚位模式是0x1004

在写:地址的值在0x1000 |=值在0x1002,使引脚注销:地址的值在0x1000 &= ~值0x1002

大多数Imp:将这些位置保留在程序中,这样编译器就不会在那里编写代码了。

(II)外部代码:用于解释的假设: Port1地址:0xF 000 Port2地址:0xF 001现在有一个Excel宏或一些事情要做:假设您想要端口2的第8引脚用于接触器K1,那么该宏应该生成一个简单的文本文件:"F00180“。现在使用bin2hex或bin2mot (基于编译器的输出格式),并将此记事本文件转换为.hex或.mot(S-记录)格式。您必须将地址位置指定为0x1000作为这些实用程序的输入之一。

现在,从生成的.hex文件中删除页眉、页脚行,并将剩余数据合并到program.hex文件中。

您在这里完成,烧录.hex文件为目标,由适当的闪存程序员。

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

https://stackoverflow.com/questions/23959293

复制
相关文章

相似问题

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