【问题标题】:Matlab simulink c code generationMatlab simulink c代码生成
【发布时间】:2017-07-06 22:07:58
【问题描述】:

我想将现有的 C 代码(或任何其他文本)导入到我通过 Matlab simulink 生成的代码中。我有一些用 C 完成的任务,但将来我想在 matlab 中开发。我在 simulink 中工作,并且我可以编译模型,但是我想使用我以前用 C 编写的一些特殊函数(因为指针等)。

问题是我不知道如何将这些文本放入模型中,并且在代码生成后这些文本保持原始格式,并放置在预期的行中。

我想要什么:

【问题讨论】:

  • 所以您希望在 Simulink 中使用输入和输出生成“C 函数”块?
  • “C 函数”块是一个独立的 c 代码。例如在这个块中我想初始化串行通信,写入日志文件,调用其他已经编写的函数等。当然我可以复制-将这些部分手动粘贴到构建的代码中,但我想将它们集成到子系统或块中,如果将此块放在 simulink 中,构建后功能就会在那里。
  • 但是,如果block在simulink系统中没有影响,那你为什么需要它
  • 查看在代码生成中集成遗留代码的文档。 mathworks.com/help/simulink/sfg/…
  • @AnderBiguri 因为我必须测试指定内存地址中的变量(其他 C 任务写入这些变量)。例如,在我使用我通过 simulink 生成的代码之前,我必须测试这些变量,但它们不是全局的,所以我可以使用指针。我已经编写了这个位测试函数,我想将它粘贴到我的 simulink 中。我知道 matlab 无法理解这个函数,所以我有一个“文本块”matlab编译器忽略的内容,只需将“文本框”的内容粘贴到生成的代码中即可。

标签: matlab simulink


【解决方案1】:

您可以使用S-Function Builder 实现此目的。它允许创建 C 代码块,这些代码块在模型运行时进行编译。如果使用代码生成器,它会被插入到生成的代码中。

我通常使用它从我的外部代码或库中调用函数,就像我创建的一些 Raspberry Pi Driver blocks 一样。

它为每个块生成 .c、.h 和 .mex 文件,虽然很笨重但确实有效!

顺便说一句:如果只是使用外部指针,您可以愉快地使用 ImportedPointer/ExportedPointer。我发现这对于生成的代码和容器之间的变量很方便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2010-09-25
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多