我正忙于一个庞大的项目,在那里,我需要为汽车控制系统编写软件。下面是我使用的内容:
我想保持我的Simulink生成代码和我的‘固件’手写代码之间的分离。本质上,我希望能够在不影响我的控制应用程序的情况下更改固件。
我想使用一个配置文件来映射Matlab与我的硬件寄存器生成的变量(例如,GPIO )。我想通过配置文件(例如,通过xml文件)来实现这一点。
有没有人做过这样的事,甚至有可能。我正在寻找一种优雅的解决方案,它不会消耗大量的RAM。
非常感谢!
PS:是否可以根据存储在.xml或.txt文件中的变量名来声明代码中的变量。
因此,如果在.txt文件中我有"Pressure_Sensor = 0",那么是否可以使用宏定义在代码中声明一个变量: Pressure_Sensor = 0;
发布于 2014-05-31 03:41:40
如果希望将变量从语法中包含到c项目中,无论是.xml文件还是.txt文件,都有几种方法可以实现。如果要将变量保持为c兼容的声明样式,如下所示:
int Pressure_Sensor = 0;并且该文件中没有其他无效语义,您可以始终将该文件包含到您的编译单元中。文件的扩展名并不重要。#include指令实际上只是将该文件插入位置。
如果要按照非c兼容的语言(如XML )进行操作,生成这些变量并将这些变量包含到构建中的标准方法是让脚本运行是一个预构建操作,解析该.xml文件,然后生成一个与c兼容的包含文件,并将其包含到编译单元中。使用它的最常见的事情之一是将版本/构建信息生成到构建中,这可以找到许多示例。
发布于 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文件为目标,由适当的闪存程序员。
https://stackoverflow.com/questions/23959293
复制相似问题