当前位置: 首页 > news >正文

开发网站和电脑软件的区别/百度收录技巧

开发网站和电脑软件的区别,百度收录技巧,建设安全施工网络平台,酷炫网站设计FrancisZhao:专栏文章列表以及一些说明​zhuanlan.zhihu.comFrancisZhao:手把手教你代码生成(上):MATLAB代码生成​zhuanlan.zhihu.com本文主要参照书《SIMULINK仿真与代码生成技术入门到精通》Sinmulink coder 与Matl…

85a8be4f7de11d47b6d685e1e299d5ed.png
FrancisZhao:专栏文章列表以及一些说明​zhuanlan.zhihu.com
d51ab3a634f0ac7a7bba384fb8bc2255.png
FrancisZhao:手把手教你代码生成(上):MATLAB代码生成​zhuanlan.zhihu.com
c7312b5059345a95e441d6ad0177e970.png

本文主要参照书《SIMULINK仿真与代码生成技术入门到精通》


Sinmulink coder 与Matlab coder生成的方式并不相同,前者在代码生成的输入输出定义中,并不能将其定义为结构体等类型,只能将输入输出定义为矩阵形式。同样的将函数封装为MATLAB function,设置输入输出端口。其中输入端口必须重新设置,右键端口1,点击“Block Parameters”选项,将“Port dimensions”设置为相应的输入格式,在本算例中设置为[4 1]。
并且要对模型中的信号线命名,增加生成代码的可读性。操作为右键信号线,选择如图15 中选项。

f94837043560b0b83f3593a0ba26231c.png
图15 信号线命名

点击如图16选项,进入代码设置界面。

2afd3bda56777c23e815ea57e1e0b237.png
图16 进入设置界面


如图17中点击“System target file”右侧的“Browse”,如图选择“Embedded coder”。

1095f40dec78864475fde63df22d7de0.png
图17 硬件选项


其中的Toolchain setting 设置为下图所示。

cc62fb85c08ed7825e57b67296bcb62f.png
图18 Toolchain setting


如图18,点击“Custom Code”选项并将最上方的选项框打勾

5f2cc6ae4ea1fc6828b75f67d5c9f28a.png
图18 Custom Code


点击其中的“Code placement”选项,如下图选中最后一个选项。

941cec8d9903a61a00168e6401b6f0bf.png
图19 Code placement


同理,如图选中如下图选项

7cf78e112f3d0ed9bacc849ebe6969c8.png
图20 Code placement


如图21,调用出“Code generate advisor”选项。选中此项目,点击“Run Select Checks”,依据报告进行相应的设置调整

1c7560de4352aca340d1c98853c221c6.png
图21 设置检查选项


最后点击“Build model”,生成代码如下图

8b3ee3feef9098a631fffe050fc7c7e2.png
图22 代码生成图


SIMULINK代码生成参数配置
在Simulink完成代码移植前需要对Configuration Parameters配置,Configuration Parameters中集中管理着模型的代码生成方法、格式等约束条件,为了生成嵌入式代码,至少需要配合3部分:模型的解算器Solver、模型的系统目标文件(嵌入式系统目标文件),硬件实现规定(Hardware Implementation)。

3febcacb2c3f963055be9f1476c7c264.png
图23 Model Configuration Parameters配置界面图


5.1 模型的解算器Solver
模型解算器solver页面,如下图

98dc5a16f9ee5cdb2c078335a1f3f877.png
图24 Solver图


Solver options中的Type选择为Fixed-step
Solver options中的Solver选择为discrete,理由:由于模型不是连续状态。
Solver options中的Fixed-step size设置为auto,针对STM32的代码生成过程中,硬件驱动工具箱往往将步长step size作为其外设或内核中定时器的中断周期,使得生成打算法代码在硬件芯片中以同样的时间间隔执行。
5.2 硬件实现规定(Hardware Implementation)
Hardware Implementation页面,如下图

c35b556b1ae7bee5f1caf16d6c3fe34b.png
图25 Hardware Implementation图

Hardware board(硬件板):选择为None,不选择具体操作系统。
Device vendor、Device type:设备制造商和设备型号。
Largest atomic size:最大原子尺寸,关系数据的储存形式。
5.3 代码生成规定(Code Generation)
其内容包扩Report(报告)、Comments(注释)、Symbols(定义规则)、Custom Code(自定义代码)、Interface(接口)、Code Style(代码风格)、Verification(代码验证方式SIL和PIL配置)、Templates(生成模板)、Code Placement(代码存储方式)、Data Type Replacement(自定义类型名)、Memory Sections(储存段设置)。
5.3.1Code Generation配置,如下图:

68983162f5f648dbb9e1f948fcd4e5be.png
图26 Code Generation图

Code Generation中的System target file选择ert.tlc选项,生成嵌入式代码。
5.3.2 Report子标签配置,如下图:

2bb34f4f80fd2ec6af4f80c1a06fc5e5.png
图27 Report图


Creat code generation report:生成HTML格式生成报告。
Open report automatically:生成报告自动打开。
Static code metrics:生成静态代码参数指标,包括程序大小,占用内存大小等。
5.3.3 Comments子标签配置,如下图:

9a2cfe49973a90f98d4e06c705510fb5.png
图28 Comments图


Include comments:生成代码自动添加注释。
Simulink block/Stateflow object comments:注释带有代码跳转对应模型的链接。
5.3.4 Symbols子标签配置,如下图:

4cb2e72612e2b0b19f6260dd128f8be5.png
图29 Symbols图


代码生成的命名规则,若无特殊要求不建议改动。
5.3.5 Custom Code子标签配置,如下图:

f017c9f272dd432497bb34256792c259.png
图30 Custom Code图


用于添加用户自定义的源文件、头文件、文件夹或库文件。
5.3.6 Interface子标签配置,如下图:

6c1be81c73f1c4277b2d78320d4f6429.png
图31 Interface图


Code replacement library:与目标语言的数学函数及操作函数库挂接,不用配置,系统自动选择。
Support 参数: 嵌入式编码器对代码生成的支持功能,需要就选择。
Code Interface与Data Exchange用来配置生成代码的接口及数据记录方式,建议使用默认配置。
5.3.7 Code Style子标签配置,如下图:

9d82c3789fe4e2f905ae1fb19fd7c33a.png
图32Code Style图


Code Style:影响代码生成风格,对代码本身无影响,不用操作。
5.3.8 Verification子标签配置,如下图:

33ac7bf139f2a4177e4ecef2924f7fdc.png
图33 Verification图


Code profiling:用于选择是否测量任务执行时间和函数执行时间及变量名。
Code coverage for SILor PIL:SIL和PIL的代码覆盖度,用到可进行设置。
5.3.9 Template子标签配置,如下图:

368fdc790503f7ea8d63374753bf2736.png
图34 Template图


Template:代码生成的模板,影响代码段生成的顺序,默认配置。
Generate an example main program:示例主函数包含main()函数和一个调度器代码。
5.3.10 Code Placement子标签配置,如下图:

6d50300caf60d821e78e01d46b2a14f4.png


图35 Code Placement图
Golbal data placement:用于选择全局变量定义方式,定义在源文件中还是单独进行定义。
Code packaging:影响最终生成文件个数,可将一些文件合并,对代码运行无影响。
5.3.11 Data Type Replacement子标签配置,如下图:

95f6f49f833ab86b43beeff3e74de735.png
图36 Data Type Replacement图


Data Type Replacement:用于自定义数据类型的命名,可以不进行操作,使用默认。
5.3.12 Memory Sections子标签配置,如下图:

908f43cdfff5a27e1ed120b7c95646d7.png
图37 Memory Sections图


Memory Sections:设置函数、常数、输入/输出、数据和参数的存储段,只影响存储的方式,是固定还是变量存储,对实际的数据类型无影响。
Code Generation中Function Packaging 被选择,则可以对函数和内部数据存储段进行选择。5.3.13 Code Generation reporter,如下图:

43ad2f0684edb3ba495cb454b49c900f.png
图38代码生成报告图


Contents:包含所选择的各个部分报告,可以通过报告查找生成的代码存在的问题。
Model files:包含模型的代码及其所用的头文件,报告中最主要的内容。
Subsystem files:包含各个子系统的源文件和头文件,便于进行模块移植。
针对STM32F7的SIMULINK代码生成配置
采用Simulink coder 一键生成STM32F7的嵌入式代码具有简单方便的特点,但simulink library browser本身并不支持STM32的开发,本文选择STM32-MAT/TARGET作为支持STM32的开发工具加载到Simulink中,本文针对STM32-MAT/TARGET下的Simulink代码生成进行配置。
STM32-MAT/TARGET加载到Simulink中,可调用模块如下图

386e0a54170e20abfe1112700df4854c.png
图39 TSP-STM32模块图


点击Simulation→Model Configuration Parameters进入代码生成配置界面,如下图

3febcacb2c3f963055be9f1476c7c264.png
图40 Model Configuration Parameters配置界面图


为了生成嵌入式代码,至少需要配合3部分:模型的解算器Solver、模型的系统目标文件(stm32.tlc),硬件实现规定(Hardware Implementation)。
模型解算器solver页面,如下图

98dc5a16f9ee5cdb2c078335a1f3f877.png
图41 Solver图


Solver options中的Type选择为Fixed-step
Solver options中的Solver选择为discrete,理由:由于STM32不是连续状态。
Solver options中的Fixed-step size设置为auto,针对STM32的代码生成过程中,硬件驱动工具箱往往将步长step size作为其外设或内核中定时器的中断周期,使得生成打算法代码在硬件芯片中以同样的时间间隔执行。
Code Generation中系统目标文件选择,如下图

c001179bb886e18bd29733afa65cce08.png
图42 Code Generation图


在选择框中选择stm32.tlc之后,Code Generation标签页下面的子标签也会发生变化,提供更多的功能选择标签,如下图所示,方框内为新增子标签。

de99af040762a3be39006375cf07e85e.png
图43 STM32子标签图


Code Generation下关于STM32子标签的配置
STM32 Options子标签进行路径配置,如下图

6e3243972851cc336ffe0cf22f8300f6.png
图44 STM32 Options图


Download Application功能:是否开启STM32CubeMX生成工程。
STM32CubeMX Path update功能:自动更新STM32CubeMX的安装路径。
Installed Full Path:STM32-MAT/TARGET的安装路径。
Model configuration (ioc) Full Path:使用STM32CubeMX构建的硬件模型文件路径。
STM32 Project Files子标签用于Matlab矩阵的C代码转换,如下图

afcb2fe64f92e6f58e5f5729f5326548.png
图45 STM32 Project Files图


getBuffPtr是一个由STM32-MAT/TARGET提供的C函数,用于将MATLAB矩阵转换成C指针。用到可添加。
Matlab与simulink对比分析
本文针对Quater_to_Euler函数在matlab coder 与simulink coder 中分别转化为C代码,其中主函数的计算部分如下图。

bf2ab6178b2e28695206bbd0a6981262.png
图23 simulink代码生成后的主函数

d9e804d51449f3aaea652bde91932220.png
图24 matlab代码生成后的主函数


可见针对转化后的代码可读性,matlab转换的c函数的可读性强于simulink。这与m语言与c语言相似有关。因此,M-function中的函数最好通过matlab coder转化为C语言。

欢迎指正讨论,转载请注明,认同请点赞。

http://www.jmfq.cn/news/4872817.html

相关文章:

  • 制作简易网站/品牌设计
  • 南京电商网站开发/个人发布信息的免费平台
  • 建设优秀企业网站/营销策划书案例
  • 用python做web的网站/关键词查找网站
  • 单页网站如何做/刚刚北京传来重大消息
  • 海南人/简述搜索引擎优化
  • jsp网站开发关键技术/申请网站域名要多少钱
  • 网站总体设计方案/厦门网站外包
  • 手机网站怎么布局/网络营销专家
  • 做动态网站用什么软件/百度seo关键词排名查询
  • 小偷程序做的网站能用吗/西安自动seo
  • 南京做网站优化公司/视频号的网站链接
  • 湖北专业网站建设大全/广告营销策划方案模板
  • 自己做网站app/优化网站seo方案
  • 做互联网网站需要什么资质吗/公司企业网站开发
  • 电影网站开发PPT模板/搜索引擎优化的七个步骤
  • 安装wordpress注意什么/关键词优化的五个步骤
  • 做门的网站建设/google谷歌
  • 长沙网站建设去哪好/中国最厉害的营销策划公司
  • 杭州软件开发制作/搜索引擎优化的定义
  • 如何做网站调研/如何利用网络广告进行推广
  • 烟台网站公司/手机如何制作网页
  • 怎么自己做砍价网站/建设网站的十个步骤
  • 我想自己做网站/济南网站优化公司
  • 如何在一个空间做2个网站/百度服务
  • 做网站平台难在哪里/网络服务器有哪些
  • wordpress的标签设置/站长工具seo综合查询官网
  • 介绍自己的家乡遵义网站建设/百度导航下载安装手机导航
  • 宾川网站建设/东莞seo网络营销
  • 展厅设计常用材料/中国seo第一人