添加行,使文件生成的外部模式树莓simuliunkπ

10视图(30天)
在我试图运行一个仿真软件模型树莓π。万博1manbetx
生成的makefile仿真软件有以下行:万博1manbetx
LINKER_CODEGEN_ARGS:=- lm ldl -lpthread轻轨车
我需要添加文本-lwiringPi这条线。
LINKER_CODEGEN_ARGS:=- lm ldl -lpthread轻轨车-lwiringPi
有人知道我是如何生成的makefile中可以添加这一行吗?

答案(3)

约翰•惠廷顿
约翰•惠廷顿 2015年3月18日
你找到一个决议吗?它把我逼疯!它似乎忽略了“模拟目标>自定义代码”。很沮丧的覆盆子π支持包而不是更多的记录。万博1manbetx操作标准块库是有限的,可以开发,如果构建过程更解释道。
3评论
约翰•惠廷顿
约翰•惠廷顿 2015年6月15日
是的,我已经创建了一个博客: http://wp.me/p2C0Bi-bK
滚动到“远程构建Makefile设置”一节。

登录置评。


Murat米色
Murat米色 2015年3月18日
我假设您正在开发一个模型块,使用wiringPi图书馆。万博1manbetx如果你发展你的块作为一个系统对象,您可以指定共享库、来源、标题等在一个方法称为updateBuildInfo ()。系统对象必须从coder.ExternalDependency继承。然后您可以导入系统作为一个整体对象模型。万博1manbetx这里有一个例子系统对象使用wiringPi图书馆数字写:
classdef DigitalWrite_raspi < matlab。系统……和编码器。ExternalDependency……& matlab.system.mixin。传播……& matlab.system.mixin。CustomIcon % %设置数字输出接脚的逻辑状态。%
% 2014年版权MathWorks公司。
% # codegen
% #好< * EMCA >
属性(Nontunable)
销= 14
结束
属性(常数,隐藏)
AvailablePin =[4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日27日);
输出= 1;
输入= 0;
结束
方法
%的构造函数
函数obj = DigitalWrite_raspi(变长度输入宗量)
coder.allowpcode (“普通”);
%支万博1manbetx持名称-值对参数构造的对象的时候。
找(obj,输入参数个数,变长度输入宗量{:});
结束
函数set.Pin (obj,值)
coder.extrinsic (“sprintf”)%不为sprintf生成代码
validateattributes(价值,
{“数字”},
{“真实”的,“积极”,“整数”,“标量”},
,
“销”);
断言(任何(值= = obj.AvailablePin),
销的无效值。销必须是下列之一:% s的,
sprintf (' % d 'obj.AvailablePin));
obj。销=价值;
结束
结束
方法(访问=保护)
函数setupImpl (obj)
如果coder.target (“环球套票”)
coder.cinclude (“digitalio_raspi.h”);
coder.ceval (“digitalIOSetup”obj。销,obj.OUTPUT);
结束
结束
函数stepImpl (obj, u)
如果coder.target (“环球套票”)
coder.ceval (“writeDigitalPin”obj。销,u);
结束
结束
函数releaseImpl (obj)% #好<马努>
结束
结束
方法(访问=保护)
% %定义输入属性
函数num = getNumInputsImpl (~)
num = 1;
结束
函数num = getNumOutputsImpl (~)
num = 0;
结束
函数国旗= isInputSizeLockedImpl (~ ~)
国旗= true;
结束
函数varargout = isInputFixedSizeImpl (~ ~)
varargout {1} = true;
结束
函数国旗= isInputComplexityLockedImpl (~ ~)
国旗= true;
结束
函数varargout = isInputComplexImpl (~)
varargout {1} = false;
结束
函数validateInputsImpl (~)
如果isempty (coder.target)
%这总是在仿真运行
validateattributes (u, {“逻辑”,“双”},{“标量”,“二元”},,“u”);
结束
结束
函数图标= getIconImpl (~)
%定义一个字符串作为系统在仿真软件的图标。万博1manbetx
图标=“数字写”;
结束
结束
访问=保护方法(静态)
函数simMode = getSimulateUsingImpl (~)
simMode =解释执行的;
结束
函数isVisible = showSimulateUsingImpl
isVisible = false;
结束
结束
方法(静态)
函数name = getDescriptiveName ()
name =“数字写”;
结束
函数b = is万博1manbetxSupportedContext(上下文)
b = context.isCodeGenTarget (“环球套票”);
结束
函数updateBuildInfo (buildInfo上下文)
如果context.isCodeGenTarget (“环球套票”)
%更新buildInfo
rootDir = fullfile (fileparts (mfilename (' fullpath ')),“src”);
buildInfo.addIncludePaths (rootDir);
buildInfo.addIncludeFiles (“digitalio_raspi.h”);
buildInfo.addSourceFiles (“digitalio_raspi.c”,rootDir);
buildInfo.addLinkFlags ({“-lwiringPi”});
结束
结束
结束
结束
这里是相关的源文件:
digitalio_raspi.c:
#包括< wiringPi.h >
#包括“digitalio_raspi.h”
/ /数字I / O初始化
无效digitalIOSetup (uint8_T销boolean_T模式)
{
初始化静态int = false;
/ /执行一次性wiringPi初始化
如果(初始化){
wiringPiSetupGpio ();
初始化= 1;
}
/ /模式= 0:输入
/ /模式= 1:输出
如果(模式){
pinMode(销、输出);
}
其他的{
pinMode(销、输入);
}
}
/ /读逻辑数字销状态
boolean_TreadDigitalPin (uint8_T销)
{
返回((boolean_T) digitalRead (pin));
}
/ /写一个逻辑价值销
无效writeDigitalPin (uint8_T销boolean_T val)
{
digitalWrite(销,val);
}
/ / (EOF)
和digitalio_raspi.h:
#如果未定义_DIGITAL_IO_RASPI_H_
#定义_DIGITAL_IO_RASPI_H_
#包括“rtwtypes.h”
无效digitalIOSetup (uint8_T销boolean_T模式);
boolean_TreadDigitalPin (uint8_T销);
无效writeDigitalPin (uint8_T销boolean_T val);
#endif / /_DIGITAL_IO_RASPI_H_

Murat米色
Murat米色 2015年3月18日
如果你想添加一个:
  • 源文件
  • 头文件
  • 链接器标志
无条件的仿真软件模型中,您可以添加一个InitF万博1manbetxcn回调模型和使用一个回调的以下功能:
实时。addBuildInfoSrcFile(<源文件>,<模型名称>)
实时。addBuildInfoIncPath(<包括路径>、<模型名称>)
realtime.addBuildInfoLinkerFlag (, )
例如,添加“-lwiringPi”链接器国旗在模型中使用以下InitFcn回调:
realtime.addBuildInfoLinkerFlag (“-lwiringPi”gcs)
另外指定共享库的位置使用以下:
realtime.addBuildInfoLinkerFlag (“-lwiringPi - l / usr / lib /”gcs)
在以上三个函数中,您可以指定一个单元阵列的源文件,包括路径或链接器的旗帜。
2的评论
Stephane营
Stephane营 2015年6月12日
嗨,约翰。非常感谢您xmakefilesetup。它工作!挣扎这么久后,我终于得到你的文章。你救了我。

登录置评。