|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Simulink转C代码5 a; z% g! p$ C, s7 b
V1 v/ R$ F; M一、Simulink 转代码设置
- V8 j. ^, |$ F! w0 `4 H$ |) I1. 首先建立模型。! [, J+ l7 J) H
2. 为每根信号线取名字(与输入输出口的名字相同)。
2 Y- Q! G* P/ K5 n3. 为表格、常量等数据赋值(可通过变量)。检验模型是否能够运行,能够正常运行时转代码的前提。/ G3 r3 V; ^( n# r$ n5 x" B2 e
4. 通过data object wizard的find,check all,mpt,package,create命令封装数据。
/ o" F# R0 m% |; x5. 通过model explorer修改输入输出数据的类型(单片机中运行时,设定为(u)int8,(u)int16类型,可以采用继承属性Inherit: auto。)。注意包含Base workspace和自己模型下面的数据都要设定类型。
5 G3 H% R7 p1 ]6 w6. 第一次配置好configuration parameters后,不需要再次配置,至此即可generate code。
8 m6 ?# v M! ]9 Q- ~* b
: w; _0 T6 g2 B9 W( @6 e9 {! |" I# z: n
关于configuration parameters:; W) T( L7 t9 `, d* b
Solver:
" x' U9 O3 l4 u3 S4 b7 E: d9 q' e
: B6 G8 w% t' I: Y" L. h5 BData Import/Export
( L/ g0 B, n# M
+ s7 ?) }& I/ K, p ~# ~! rOptimization:' h7 B' T' v+ e4 V. c! B% L; \' R
, n. D l0 a" r& q, G% W" c& GHardware Implementation:
( w2 @3 f8 @/ k5 K+ z5 t( e1 `; P! Y# E. u5 P* Y
Code generation:1 O n' H6 N0 L$ x
G6 F( q5 \9 W2 g4 ]1 I
Report:
8 e6 n1 S6 b6 z2 g2 ^/ v# W: g8 Q) x. @/ N# v7 z; f ^/ d5 d
Comments:' r+ }& U3 | ^0 n
( u2 g# t- J' T1 r3 g" F \InteRFace:
5 A/ L+ h1 \7 }$ ~4 k, n' S' b! S% b8 j+ ]
Templates:; n% i9 [2 M& \' E- Y" C
" N: P8 {/ K: k# X- e
(图中的code templates是来自锡柴的,用simulink自带的templates也可以)4 I* Z8 [( c3 @; M* y6 x
Memory Section:
) I/ `3 k0 c5 q
: }1 i6 C0 e+ X6 h8 y# T1 y二、Model configuration 说明-20170624 ~- F) y& T# W
这里阶段模型配置的3种方法:, x9 n+ R7 Y( W! G9 U% j7 ~$ X2 w) [: v
第1种是第一章里面介绍的方法,手动逐条修改;
% G ]* d# m7 G$ x* h$ t/ J% @第2种是在原有配置基础上,export出m文件,修改后再inport;
+ n* b# O% h# q* P3 a
- y2 I3 Z" r1 f' ^# r" Q% j. |1 b/ M" i
第3种则是利用simulink中自带的模块Configuration Wizard,调用rtwsampleconfig函数,函数中的具体设置可以手动更改。3 N7 o3 D% t0 J- r4 u9 K8 Z
/ C/ U" } w; L) g实际使用中,推荐第二种方法!
* K' n" v/ d( J* m, o9 c二、集成到目标代码里(针对codewarrior编译器)。
8 s3 M: q, q* R. @1.在sources文件下新建文件RTW,将生成的xxx_ert_rtw和slprj\ert\_sharedutils文件下的.c和.h文件全部放进RTW中。
) m! v* U7 y0 F: p9 D, J* n' \2.在codewarrior中添加RTW文件。" \0 O) [9 P$ c
3.在初始化中定义输入输出数据并外部声明(BP_Var_Initial.h,BP_Var_Extern.h中)。
" ]4 l6 E3 q: O- @9 n, N4.为实现标定功能,将标定数据(表格等)放在RAM和Flash中。& X* V6 H% K5 ]0 T. T2 p
将生成的数据定义和声明屏蔽掉。6 e/ ]: x6 Z% W* F3 }
在Cal_Ram.h和Cal_Flash.h中分别定义变量,在Cal_Ram_Extern.h和Cal_Flash_Extern.h中进行外部声明。放在Flash中的数据可为变量添加后缀_Flash。
3 V- O1 S+ V5 @) @5 a1 p 在FlashReadToRam()函数中将Flash中的变量值读到对应的Ram变量中。! S5 P1 H6 _8 Z6 ?
5.在正确的位置调用生成的.c文件下的函数。
$ _$ r; P' z0 C2 u2 G: R9 A
5 G& i3 M1 l5 T# a% u K) u( D. @) I: F/ F' J
|
; Z3 a( j' r$ Q* _; @" T
8 p E+ k0 U5 ]7 B) S h* z
$ [' N5 p. M4 d* K- T |
|