我忙于一个大型项目,我需要为汽车控制系统编写软件。这是我正在使用的:
我想保持我的Simulink生成代码与我的固件之间的分离'亲手写的代码。基本上,我希望能够在不影响我的控制应用程序的情况下更改固件。
我想使用配置文件来映射Matlab Simulink使用我的硬件寄存器生成的变量(例如,用于GPIO)。我想通过配置文件(例如通过xml文件)来完成此操作。
有没有人做过这样的事情,甚至可能。我正在寻找一种不占用大量内存的优雅解决方案。
非常感谢!
PS:是否可以根据存储在.xml或.txt文件中的变量名称在代码中声明变量。
因此,如果在.txt文件中我有" Pressure_Sensor = 0",是否可以使用宏定义在代码中声明变量:Pressure_Sensor = 0;
答案 0 :(得分:0)
如果你想在你的c
项目构建中将变量包含在另一种文件类型的语法中,无论是.xml还是.txt文件,还有几种方法可以做到。如果您要将变量保存在c
兼容的声明样式中,如:
int Pressure_Sensor = 0;
并且该文件中没有其他无效语义,您始终可以将该文件包含在其中一个编译单元中。文件的扩展名无关紧要。 #include
指令实际上只是将该文件插入到位。
如果您要按照非c
兼容语言(如XML)执行某些操作,那么生成并将这些变量包含到构建中的标准方法是让运行的脚本为pre -build操作,解析该.xml文件,然后生成包含在其中一个编译单元中的c
兼容包含文件。使用它的最常见的事情之一是你可以找到许多例子,用于在构建中生成版本/构建信息。
答案 1 :(得分:0)
你可以这样做:
简化问题陈述是: 您想通过代码修改CPU端口寄存器,但您不知道该端口寄存器的地址(端口地址可能会在外部更改)。
解决方案是: I)在你的代码中:
让您的程序假设端口寄存器的地址位于固定位置,例如0x1000。 某人/某事会将端口寄存器的地址写入0x1000(您的程序不关心如何) 因此,要更改引脚K1,您必须更改0x1000处的地址值。 可是等等 , 你只想改变一个端口引脚,你不知道是哪个, 假设引脚位模式为0x1004
使引脚写入: 0x1000处的地址值| = 0x1002处的值 要使引脚OFF写: 地址的值在0x1000& =〜值为0x1002
最Imp: 以某种方式在程序中保留这些位置,以便编译器不在那里编写代码。
II)代码外: 解释假设:端口1地址:0xF000 端口2地址:0xF001 现在有一个Excel宏或以下做的事情: 假设您想要port2的第8个引脚用于接触器K1,那么该宏应生成一个简单的文本文件:" F00180"。 现在在编译器输出格式上使用bin2hex或bin2mot(基于),并将此记事本文件转换为.hex或.mot(S-record)格式。 您必须将地址位置指定为0x1000作为这些实用程序的输入之一。
现在从生成的.hex文件中删除页眉,页脚行,并将剩余数据合并到program.hex文件中。
您已完成此操作,请通过合适的闪存编程器将.hex文件刻录到目标文件中。