![Simulink代码生成学习札记_第1页](http://file4.renrendoc.com/view/f8d5c1a44a5d08319f29a964711081d1/f8d5c1a44a5d08319f29a964711081d11.gif)
![Simulink代码生成学习札记_第2页](http://file4.renrendoc.com/view/f8d5c1a44a5d08319f29a964711081d1/f8d5c1a44a5d08319f29a964711081d12.gif)
![Simulink代码生成学习札记_第3页](http://file4.renrendoc.com/view/f8d5c1a44a5d08319f29a964711081d1/f8d5c1a44a5d08319f29a964711081d13.gif)
![Simulink代码生成学习札记_第4页](http://file4.renrendoc.com/view/f8d5c1a44a5d08319f29a964711081d1/f8d5c1a44a5d08319f29a964711081d14.gif)
![Simulink代码生成学习札记_第5页](http://file4.renrendoc.com/view/f8d5c1a44a5d08319f29a964711081d1/f8d5c1a44a5d08319f29a964711081d15.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二.模型配置设置2.求解器设置模型必须为定步长离散求解器。快捷键Ctr+E。OptisimtonSiaulMlM)Itartttw:0StoptiatISolW_fit#ifundamtalt9ltial:Taki&caftUbm*;.tiMcpiiciBFrac4iaovletiraiatniatSMUElglMdstforperio4ietiw:CAutaMticell*rwU(rwi八IsforAataHitherxixotvvalueifMkowthiab*rpnarnv2系统目标文件配置选择erttlc文件配置。:Self&tlwscitwoeiSswWlhnlwr?令:fUttrf
2、iaetar*viftirr*.t;rMatMwtrinyv(umw(ad*OtMiMdltaBUZ5vlTewUtMCa4ePlare3tg.fpe*WVitialsecfwLUt(ElistI9D9T91trctSimulink嵌入式代码生成资料第一章代码生成基础一、嵌入式程序的结构嵌入式程序结构包含:mainprogram主函数,modelapplication算法,runtimelibrary库函数I/Odevicedrivers底层驱动,datalogginginterface数据记录接II,dataexchangeinterface与主机通信接II。C|KAVM4ltlC0-fir
3、eUv;R4f*rcrxwS1BU411NIC0tmZg*Uittficatd5TITC4fIhuTpW-rrPrrvei*eoeiaCx(.-j十士TilAI*Pmn.miXbUdTdlBioalUbtiloetaTracttUK(aiHo*(MHAONvrttMMItelfJog*WtTXFStsMriMtleelitQrttKatriw*m“dyfrtauMfo】d*rTKiionlvvMmZfM0o14r&nciosatiatlwcarrwtearkiMSi;drZ11kwc*16*4MKMfwdaftwiwDmattiiiifilatv*imiprteelhin4m(heHru3代码
4、生成报告配置Createcodegenerationreport:创建代码生成报告;Openreportautomatically:代码生成后自动打开报告;Code-to-model:点击代码高亮显示对应的模型:Generatemodelwebview:在同一窗II显示代码以及与之对应的模型;代码生成generatecodeonly:仅生成代码,不编译链接生成可执彳亍文件。Bu.lJ戸CoomitSrwbolBCuvtMCo4ag*皿QianttSocriow#Tx*;xaatallmiImrr-ifTUwdlI?0HH2Cnhiidc-w;fuiTBi:cwiFarBaiiiMMinimte
5、wilatiofi:nkmtlDataion;tivlnrv*cifilCkiwfcr.十cyZ9HCTwrat*rod*r*rlFar4trartif生成的代码模块ert_main.c文件:默认生成的主程序函数。model.c文件:模型算法,包含所有算法的入口。model.h文件:算法头文件,包含数据结构和模型入口点。model_private.h文件:模型和子系统的局部宏与局部数据。model_types.h文件:模型数据结构和参数数据结构预先声明。rtwtypes.h文件:定义数据类型、结构体和宏。model_data.c文件:声明模型参数数据结构和常量模块数据结构,只有在需要时生成此文
6、件。生成的函数模块主程序函数,在ert_main.c文件中,main函数包含3个子函数,model_initialize函数,在执行model.c文件前执行,用于错误状态、外部输入/输出以及状态量的初始化,rt_onestep函数,被时间中断调用,并调用model.c文件中的model_step函数,model_terminate函数在执行终止时执行,用于执行有必要的终止任务。main主程序modelnitialize初始化函数状态初始化代码定时/中断服务程序代码(非自动代码生成需集成),重复调用rt_onestep函数rt_onestep检测溢出标志位代码modeLstep模型算法函数模型算
7、法代码溢出标志位置零model_terminate终止任务代码定义与声明信号模型信号,包含外部输入、外部输出以及模型的状态,定义为全局结构体。在model.h文件中定义信号结构体的类型(包含输入、输出、状态3个结构体);并在model.h中声明结构体,在model.c中定义信号所需的结构体。定义与声明参数模型参数,在model_types.h中定义参数类型,在model.h中声明参数结构体,也声明外部参数,在model_data.c中定义参数。SelectISoberlaprxCxpoatEri*miTarwwfvrastrarrsiOiMnnvfirvHarearllmantAtamiVcu
8、UlUfrvM*3M4啊gTertetCMeGenrttooCcMta$*vbolaCuaiqbCo4eIntrfiwvVerifteattanHStyeToonlatavUtTyxRb:0C0?mSwticai9数据结构体符号生成代码默认的数据类型名称与变量名称。ClassicShortenedDatatypenamingVariablenameDatatypenamingVariablenameModelRTMODELmodelmodelMRTMODELmodelmodelmParametersParametersmodelmodelPPmodelmodelpExternalInputsE
9、xternalnputsmodelmodelUExtUmodelmodelUExternalOutputsExteranlOutputs_modelmodelYExtY_modelmodel_YBlockSignalsBlocklOmodelmodel_BB_modelmodel_BBlockStatesD_Work_modelmodel_DWorkDW_modelmodel_DW20代码生成过程从模型生成中间过程文件model.rtw,需要计算仿真过程、模块参数,传播信号的宽度和采样时间,确定模块在模型中的执行顺序。从model.rtw生成C代码需要TLC目标语言编译器,加载系统目标文件er
10、t.tlc和模型内模块的目标文件block.tic。在模型配置中只生成代码(generatecodeonly:仅生成代码,不编译链接生成可执行文件),就不执行一下可执行代码的生成过程。CodeGenerationModel_ComilationJCode_Generationelect:SilverData1sportExportOprivizationSignalsandParafteraStatefIotDiagnoBticsHardvareIapleantationModalReferencingSiaulatioaTaigetCodeGenerationReportSywtoolg*n
11、tsRetain.rtwfile在代码生成过程中保留中间过程文件model.rtw,该文件ASC文件。Duildproe88buildrRetain.rtwfileTLCprocessProfileTLC:StartTLCdebuggerwhengeneralingcode;Star?TLCcoveragewhenseneratinscodeEnableTLCassertion第二章外部代码集成外部代码集成两种方法:导入外部代码到生成的代码中,导出生成的代码到其他程序中。外部代码集成的进入点外部代码集成,调用代码生成了四个函数:modelJnttialize初始化函数、model_step算法
12、入丨1函数、model_teminate终止任务函数、rt_onestep函数。在手写代码调用该三个函数时,需要在手写代码中加入#includemodel.h指令。2生成代码在外部IDE中集成Simulink模型生成的代码在外部集成开发环境中集成,不需要生成ert_main.c文件和model.bat文件。若将将模型代码在外部的IDE中集成,则不需要生成ert_main.C文件和model.bat文件。Generateanexamplemainprogram:代码生成过程中生成ert_main.c与model.bat文件。H*adrfiletaplaTo:ert.cod.teoplateDat
13、atnoplatesSourcefilelenplatecarH?derfiletewieXe:ertcode-onplato.cgtCuBloaznpg”Filecus:oiZAtianteaplate:1l*_proc*sfl.ticfGenerateaneiaapl?winproMrTargetoxmiin*mgrBareBcardhx8ticaHardwareLvplenentationUcxielReferencintSioulationTyetCedeGeneralionRotxrtCombatsSrnboltCuetoaCod#MbwInterfaceVerificationSt
14、yleatesPlacenentDataTypeRplacraentMooorrSection生成代码打包Cuttce怦.lnfarfx*IHtAxALiUsbUAI1-*A.MaaIAJ4|aMWWMfor*4eVwet.UmIU4*l.LIMB0VMM*te&*4MMrrU&fUit*fiiFtiertfotejevfiwtInatvrtfiHPackagecodeandartifacts:自动打包生成代码,生成一个zip格式的压缩文件。在代码生成路径下,并在命令窗口输入loadbuildinfo和packNGo(buildlnfo)两个指令,展开查看压缩文件包内的文件。SoufiUIbi
15、rruinitielirefwTervmaxtfuoc$oixrtfil:IrWHV卜wvrw.th#rvttcmrod*rttio9SiwlatieaTeritcustcaCluJ-UnifMitiflfialIne1udrd:icSourcef.jLitorsrxtLibraryIncludecustomCcodeingenerated:将手写代码(包含源代码sourcefile、头文件headerfile、Initializefunction初始化函数或考Terminatefunction终止任务函数)插入生成的代码前面中。源代码(cfile/eppfil
16、e)插入在model.c文件的前端;头文件headerfile中的代码插入到model.h文件的前面:将手写的初始化代码和终止任务代码插入点代码生成相应的函数中。Includelistofadditional:将手写代码与生成的代码集成,用于后期的编译链接生成机器码或者可执行文件。*;ect:SolverDlpoxtExportOpTuucaticnMtuiFarsMtriDlagnosties:cbModfifcrfcrenelnSiulaticnTargatCodeGereTfltiacilCportCojieqttet严VerifitieaCmUStrUTeapiateaShFlaceM
17、iilTrrlheox*Sction4使能mat文件数据记录MAT-filelogging:成记录接I丨函数文件rtjogging.c,选中此项必须同时选择non-finitenumberso生成的代码ert_main.c文件中增加调用rt_StopDataLogging函数接II。SignalsandSteteflo*OiagiMitieHerd*are34RfarnriMSimlatiooTarrett皿GeneralionCwmntSribolfCutwCoUjLntcrftct._VaiifieatlotiCc4*$?rl?IeMilafaaCodePlacgen,DataTypeRp
18、!ariiwr:Soort:vfmabers(Vnon-fimt*fKabersovar:ablr-sitesignal*Itiltiflerdtyp*d:rCod*ifiiarfae*CodeinterfacegcksMAcbuwuxUU.丄wwixmir:Clasi;callcutputup4ifunctiwiermwfunctionreqwsrGnenteprewrocevvorccoiticeelfL11iimoUrssrrrrsiotuain*“】:;”*odoataatructurzCcflbxneasgnalstatettroctorvsCmImux*Ma4UrtmctiomiZ
19、1Dataxrh*nMilf:ievariablena*eoodifierrt.或者在至/X4T-fillooint记录仿真的结构包含仿真时间、状态以及输出信号。故需要在savetoworkspace选项中至少选择一项,少有一个信号设置了logsignaldata。dIrvathdtial4tata|t.in.ihta)H&x4ajolapieeMtatloo1SiauletinnTargetCwtratianCcowntiCuitoeCode:Ioterface7w*ytctf*Uu:PuttoutOutput:ymitFiraIlF.n处”toSYksgc.Mieaustresolveto
20、SiaulinksituvivnolrLoa“Cc4eGewnttioMILgon-fxrcontimCodeimerfaeeNaoreuBAfiUfaiuztioaClasticcelllnierfAceASingleoutputupdatefunctionGenrtprwprorBtrccoditionalv:|lfiloci*tttfISUInfo.matshoFcd.file.dmrrtwtype5chksjm.mdtrtwtypes.hrtGctNaN.hrtGctNaN.crtGctlnf.hrtGetlnf.crt.nonfinitehrt.nonfinitecmultivvor
21、djypes.hbuildn.typeidypeshtmlh第三章实时执行任务调度在嵌入式系统开发中,算法被定时或中断服务调度,即Simulink模型生成的算法model_step函数将被定时或中断服务调用。Simulink模型不同的模块计算速率可以不同,即一个model可以分割成多个不同速率的subsystem模块,确保每个subsystem模块按照预期指定的速率执行,需要速率调度实现,同时管理不同速率模块之间的数据交换的正确性和完整性。2.单速率执行Simulink模型中所有的模块计算速率相同,生成的代码按照代码执行的顺序执行以相同的速率计算。在模型窗II选择Display/Samplet
22、ime显示模块的计算更新速率,选择Display/Blocks/SortedExecutionorder显示模块执行顺序。整个模型的算法在model.step函数中,所有的模块对应的代码执行速率相同。main主程序modeljnitialize初始化函数状态初始化代码定时/中断服务程序代码(非自动代码生成需集成),重复调用rt.onestep函数rtonestep检测溢出标志位代码model_step模型算法函数模型算法代码溢出标志位置零1model.terminate终止任务代码2.多速率单任务执行含有不同速率模块的Simulink模型,根据模块的计算顺序和执行速率进行组合和任务调度。执行分
23、多速率单任务执行和多速率多任务执行。在单任务执行过程中(如图所示B2、B2模块执行速率0.01,B4、B5执行速率0.03,B3执行速率0.05)是单线程执行,即以基速率进行计算(计算最快模块的速率),以相应的次速率更新计算相应的模块。所有模块的速率必须是基速率的整数倍。main主程序modelnitialize初始化函数状态初始化代码定时/中断服务程序代码(非自动代码生成需集成),重复调用rt_onestep函数rt_onestep检测溢出标志位代码与其它错误model_step模型算法函数执行基速率模块(速率最快的模块)判断Timing.Taskcounters.TID1=0执行相对速率较
24、快的模块判断Timing.Taskcounters.TID2=0执行相对速率较快的模块判断Timing.TaskcountersTIDn=0执行相对速率最慢的模块确定Timing.Taskcounters.TID值溢出标志位置零model_terminate终止任务代码3多速率多任务执行多速率多任务执行,速率快的优先级高,具有抢占先机机制。将Taskingmodeforperiodicsampletimes设置为MultiTasking寒任务模式,且将Automaticallyhandleratetransitionfordatatransfer勾选(或者手动添加速率转换模块),才能生成多任务
25、代码。Higherpriorityvalueindicateshighertaskpriority表示优先级值越人优先级越高,反之值越小,优先级越高。任务标识符tid。ICtVTaporiXxportQptiaisiccHar4variMe)R:“S;BuUticCM.JwtlgStwrttiwi:0.0认ar.tim10.0rpim)stt*Manktiir*0-01TafirxoptcomPerioiievltiwciwKtreinttaakiM*ifuixt.odxtimehaBii.rin.血4ftrrjDlat*4ad*t4ctktallmevei:(irioritFvalwvtsd
26、iMtethidiort*orzoritrmain主程序modeljnitialize初始化函数状态初始化代码定时/中断服务程序代码(非自动代码生成需集成力重复调用ronestep函数rt_onestep检测溢出标志位代码modeLstep模型算法函数初始化OverrunFlags、TaskCounter以及eventFlags/*检查基速率任务是否溢出*/if(OverrunFlags0)rtmSetErrorStatus(wrapper_mr_M,Overrun1);return;OverrunFlags0=true/*其它速率任务n表示任务数*/for(i=1;in;i+)if(task
27、Counteri=0)if(eventFlagsi)OverrunFlags0=falseOverrunFlagsi=true/*采样速率太快7rtmSetErrorStatus(wrapper_mr_M,OverrunM);return;eventFlagsi=trueCheckforbase-rateinterruptoverruntaskCounterl+if(taskCounterfl=3)taskCounterl=0taskCounter2+if(taskCounter2=5)taskCounter2=0/-设置基速率任务输入*/*计算基速率任务*/wrapper_mr_stepOE
28、nablert_OneStepinterruptDeterminewhichratesneedtorunthistimesetpCallbase-ratetimestepcode,model_stepOCheckforbase-rateinterruptoverrunCheckforsub-rateoverrunCallsub-ratetimestepcode,model_stepN/*获取基速率任务的输出*/*基速率任务完成*/OverrunFlags0=false/*计算次任务*/for(i=1;io0p:NoOperationMixed:EjpendedtonAltipieblocksr
29、ithdifferentbeharimrspNrwierrJEnrure如2sutleritrdurins4ettrunifertnaurvdattranafarlM&iau*4】rlaitialcanrfllAfitM:0Ojtpatportw:timoptlk5实时执行总结3tvutpartMpgtkModelStepFunctionSingleratevoidmodel_step(void);Multiratesingle-taskingvoidmodelstep(void);Multiratemulti-taskingvoidmodel_stepN(void);TaskIdentifi
30、ersRateSchedulingRateInteractionsMultiratesingle-taskingrate_scheduleriscalledfrommodel_steptoincrementtidmodel_stepusestidtorunsubratesmodel_stepusestidtomaintainrateinteractionusingbuffersMultiratemulti-taskingtaskcounterisincrementedinrt_OneStep(|;rt_OneStepmaintainstaskcountersandcallsmodel_step
31、Nintherightordermodel_stepNusestidtomaintainrateinteractionusingbuffers第四章函数原型控制EmbeddedCoder允许自定义设置ERT-based模型生成的函数原型(针对ERT-based模型),有利于生成的代码集成到其它project中,并且函数名和函数原型与指定要求的一致。默认情况ERT-based模型生成的代码所有的函数原型为:voidfunction_name(void),例如voidmodel_step(void),这种配置导致模型中所有输入和输出信号作为非内联参数,并在生成的函数中以全局数据结构体存储。Embe
32、ddedCoder允许修改model_step和model_initialize函数的函数名称以及model_step函数的输入输出信号传递的方式。2.修改函数原型ConfigureModelFunctions:配置模型的函数,点击弹出新的窗II设置函数接【I,默认为Defaultmodelinitializeandstepfunctions,需选择ModelspecificCprototype。Support:rtlostnMTPC-otnunbersAbsolutetitnvariable-sixeaicmIbliult;vord(仰definitionSy1wSiimlaticxnTar
33、fetCodeGeneraliReportCownteSrobvltCuftCBIWtzl*Code】TeeplutsCodePimfeG:De:.T|pR*pl!forub”thatroubuildfroetheriehtclickconteitmenu,usetbRHcocififSubfrstemBuiMfunctiMtoconfteurinirfac*Functionpeeificat&onSteppreviewPzValidatetothefucutioar*viv.Validatioo叶etelutfmrVoiacUt*lxnvokeaupdatediaGetDefaultConf
34、iguration:激活并初始Initialize函数与modelStep函数的名称,同时显示配置界面。利用该界面修改Initialize函数与modelStep函数的名称,同时配置modelStep函数的输入输出参数的类型与名称。当modelStep函数的输入输出变量不在是全局变量,在model.h文件中不再有extern声明该函数对应模型的输入输出信号。ArgumentName:指定model_step函数输入输出变量的名称,Category:选择输入输出变量的类型,默认情况标量变量为Value,非标量为Pointero(当输入输出变量为矢量时,必须选择指针型)Furutianpeeifi
35、catIonKocklLThtafunctionpecificeiioafuppptttainf!ret*anrfoultir(Aim*odI.PrfCDvfuitConfituraiiontopopulat*theintttalcoafifurationfartheod;initialiseandt*pfuneteeQetDefaultConfiguratiof*卜5vokujidave4*Stepfunctl(mprvirtVahdatIonUUdat|(invohiupdat*diarMBGtxDefaultConfigwraxioolxnvoksupdated】a“gConfigure
36、modelnitialxjeandstepfunctionsInitializefunctionruune:iir_ert.inititliteiir.tpfunctionarguaente:uInportValueargynone*!2y(XitportnoneOrderPortSumPortTypeCaxogorvArgiimontNaQulifir函数原型的局限性函数原型控制只支持modelstep函数和initializatize函数。Singleoutput/updatefunction:表示模型中的模块的output代码与update代码合并model_step函数中,若不勾选生成
37、的代码中将有model_output函数和model_update函数替代modeLstep函数因此此项必须勾选。(portCoanntsmrfuntieSvnboUCustomCodeMulttvordtvpdfinitians:心WCodelAterface、ririctioCodeintrfaeparluigiM:(NonreusavoauxyavClassiccallinterfaceCodePlxeaemTy”Rplecv*ntSinCodeGenerationfromSimulinkModels-Data,function,andfileDefinitionFunctionandC
38、lasslnterfaces-ControlGenerationofFunctionPrototypesFunctionPrototypeControlLimitation若里哟个函数原型控制实现模型中的subsystem模块进行代码生成和修改,可查阅:EmbeddedCoder-CodeGenerationfromSimulinkModels-Data,function,andfileDefinitionFunctionandClasslnterfaces-ControlGenerationofFunctionPrototypesConfigureFunctionPrototypesProg
39、rammatically.可复用的函数接口在project当模型的model_step函数需要多次调用时,model_step函数的输入输出变量将不再为全局变量。叫以通过上述ConfigureModelFunction选择ModelspecificCprototype实现,也口J以通过Codeinterfacepackaging选择Reusablefunction实现。采用Reusablefunction方式前,需将ConfigureModelFunction设置为Defaultmodelinitializeandstepfunctions。该方式可以取消勾选Singleoutput/upda
40、tefunction,若取消,将不再生成model_step函数,而被model_output函数和model_update函数代替。CodeGenerat:c?Fepor?Loments(5t1r5HterTieVer:f:ca:;onl皿$tylCod*PardentWe“peEepiac-r*-SectionsMult.vurdtvpedefintttonsdtUftadCod*lAtftrfacetodeinterfor-perkafjlunctiotitClasticd】intrfeJS:MleoutputupdatefunctionUsedynamicmemoryallocatio
41、nformodelinitialization:在model.c文件中生成配置函数(memset与memepy),只有选择了Reusablefunction才可选择。为每一个案例(每一个复用的函数成为一个案例)动态分配数据。Passroot-levelI/Oas:三种方式Individualarguments,Structurereference,PartofmodeldatastructureoCodeinterfacepackum:JUu$v(“oc.Iaqd:Xultiinstanceco-ntmcxuoallocat:mforsodelwitialxzatioooutputupdato
42、functiooV!T*rMinATfuncsxoereQuir&dGeneratepreproc,“orconditiomli.CseioclSupprierroratatuiinrMl-tiMnodalConfigurationParameterBasics-ParamterReferenceoConfigurationParamterSettingforBuildingCodeFactroyDefaultDebugingTraceabilityEfficiencySafetyprecutionStandardmathlibraryNoimpactNoimpactValidlibra/No
43、impactC89/90(ANSI)CodereplacementlibraryNoimpactNoimpactValidlibraryNoimpactNoneSharedCodeplacemnetSharedlocation(GRT)NoimpactERTSharedlocation(GRT)NoimpactERTNoimpact(execution,RAM)Sharedlocation(ROM)NoimpactAutoSupportnon-finitenumbersNoimpactNoimpactOff(Execution,ROM)Noimpact(RAM)OffOnCodeinterfa
44、cepackagingNoimpactNoimpactReusablefunctionorC+classNoimpactNonreusablefunctionifLanguageisSelfC;C+classifLanguageisSelftoC+Multi-instancecodeerrordiagnosticWarningorErrorNoimpactNoneNoimpactError2静态代码度量Staticcodemetrics:生成代码报告时,生成静态代码度量报告,观察不同的配置选项对生成代码的影响。通过该方式可以对比优化前后的代码长度,全部变量的存储人小、计算堆栈的人小以及输出函数
45、堆栈的人小。Select:SolverOn,.IwpuriBtpanOptisitationDingnoatleiTineDtaValiditrTypeConveriionConnectivitrStatflowHftrdreIGeeowVonTarrt.JUport:CcMin:oS?ribolCujtcaCod*Tiftvitation/Cd*l“TreebtlityReportCootrvrtsEl:ainstedvirtualbloek*TraceableSifluliakblocksobjectsTraceableMATLABfunctioBSMetricf;StaticcodeMt
46、ruwhichblock*tritreredccdrSummarySvbiysttmfUooninlsdactReportTmob山tyReooCodeMttnsiAepon-一一RufirthardwarepaneoftheConfigurationPan16.lot32.long32,float32.doubto64,pmetricsmchtdiHerduetotargetspecifyConsultthCod.GeMrdtftonAdvUoreficiency.TableofContents&!information2.3.functionInformation1.FileInforma
47、tion(hideGnratedCod#恥:-jSummary(cxciudesrt-min.cj2.移除非必须代码移除非必需代码优化代码生成包括:数据的初始化代码、终止任务代码、整数包装代码、算术异常处理以及不必要的模块等代码。2.1移除初始化代码RemoverootlevelI/Ozeroinitialization:移除模型顶层输入、输出初始值为0的初始化代码;Removeinternaldatazeroinitialization移除模型内部初始值为0的初始化代码。(在绝人多数嵌入式系统中,上电后RAM的值为0,故生成初始值为0的初始化代码是多余的)DiaffnofiticsSampl
48、eTimeDataValidityTypeConversionConnectivityCoapaxibilit?ModelReferencingSavinsStateflovHsrdvreItnp1MWModelReferencinsSimjlatxoftTargetBlockreducticeJlaplettenrlciicsignalsasBooUendatatvs,doub:CaodivisionforfixFpointnetslopeeooputationUsefloet:rxatainitialx2atioaRe-aoverootlevelI0 xeroinitialisationR
49、eaoveinternaldataxeroinitializationUsememsettoinitializefloatsanddoubleto0.0:利用memset清除浮点数零,用整数0表示(在编译器和CPU支持用整数0描述浮点数零时,利用该方法提高代码的执行效率和ROM空间)。若不勾选则初始化代码明确指明用0.0存储浮点数零:Optimizeinitializationcodeformodelreference:禁止初始化含有状态模块的初始状态,除非该模块具有重置状态的功能。IXatainitiolixatioc,rootUI0 xero;nitiaHxation“Rhbo“inter
50、nalteromitialitationUmtoinitialiseHoetanddoubletto0.0OptiaiieLnitialuetioncodefornodlrernce2.2移除终止任务代码Terminatefunctionrequired:生成终止函数voidmodel_terminate,取消勾选将不再生成该函数。(终1上任务在系统掉电时运行,当程序无限运行时,不需要该任务)CodeGer-ReportCaasanifSrvoiaCuttonCodevariMD;sizesifnAiaTOC o 1-5 h z4iwdtvpdafinmonSyaimdofiAMiCodein
51、terfaceCodeinterfacepackaiinf:functionVerificationCoPlocewentDatTrpeReplocesentUMarySetionfHDLCodeCenrroticnrtcieifICcellintvrfeeSinlaoutputfunct/functionrxjuixdGmwrat*pr*rrncee,oTcondit;nnl*少iHSuppressarrormieal-t;neDodeldatarueCurecab;nus;pialsta:estructurestootirjreModelFunct;onvDaia.xchar523移除不必
52、要的数据支持默认情况,生成代码支持浮点数、复数以及无穷大数。Float-pointnumbers:3t持浮点数,当生成代码只支持整数时,需取消勾选此项:non-finitenumbers:支持无穷人,选择此项必须先选择支持浮点数:absolutetime:模型中,某模块需要绝对时间或经历时间(例如两个时间的时间间隔),默认情况生成代码中提供整数计数器。勾选该项,则支持绝对时间:continoustime:支持连续时间模块,默认情况不勾选此项。若取消勾选此项,且模型中含有连续运算模块,将在代码生成时报错。Shrdc4刃amAuiaCmMieorfxCodeuH.rfW.pMlUmCImbicta
53、ll取消勾选上述项,可提高代码的效率。DiAfnaaticsHar4reIplfwwntrm|Me水1Saulatian?rcetCo4tGmratLunBpartCeaBMtets4tuatcoCad*丨耐CJVerifKtiocCo4eStyleTatpla*0dDataIpeReviseerect女8厂5-ctioe5HPLCc*intirfce吟5加.322(m.oneelItntwrfac*Si(mlovl*utMp4atafunctionTriiwfuiGptUetionlifup4ifi(dev.、1Ueforfiitd-pointnetb1gpcowotat:rIilaawmS
54、UferancitmSittulatioiiTargetCodeGiMXAtioaReport(nlimaCo4gwieriBiioopEnablelocalbleckoutputsttXeuxLoclblockoutpuioElmiiut*localvr】bLglobalblekoutputsHZboldtwerarrrewlts/forSolverDateIaponExportSignalsandroranetereStlor内联参数Inlineparameters:控制数学模块的参数在生成代码中的显示,勾选此项,模型的参数将在代码中以常值替代变量,不可调试(标定)。可通过configur
55、ation配置调试(标定)参数。tEipertftiidSY.fin-*Hardwire:rvlLrw.mVode.Kdf*rnTkErDatT-p*RtUw-TY减少模块Blockreduction:控制压缩多个模块至一个效率更高的模块,或者删掉。删除无效的数据类型转换模块,排除无用的模块和信号。SolverDaIaItBDortExDartf,BlockreductionnOpt;airfttxoa丿ItsplenentlogicsignalsasBooVscdivisionforfixed-pointnetftaefloat:ntpointmultiplicatbxgnaliandPar
56、ametersStatefio*Diano8ticeHardvar*Implomontetion布尔逻辑ImplementlogicsignalsasBooleandata(double):通过逻辑信号存储为布尔型,减小信号存储的开销。取消勾选则逻辑信号以double型存储。BlockreductionIttphnectlogic*Booleandato(“double)|Isediviionforfixed-pointslopecop-jtetionOfi移除数据类型转换包装代码若模型中还有定点元素,在嵌入式代码生成时,需要有额外的包装代码模拟定点处理器的计算过程,确保发生数据溢出时,确保生
57、成代码运行的结呆与模型仿真的结果一致。Removecodefromfloating-pointtointegerconversionsthatwrapsout-ofrangevalues:移除模型中浮点数据向整数或定点数据转化的额外包装代码,缩减代码长度、提高执行效率。当模型中的模块输出或者参数引用了浮点转整数或定点,且模块的Saturateonintegeroverflow取消勾选时,选择该选项有效。(模块的Saturateonintegeroverflow选项优先于全局优化选项)SolverDataIxortOptkaixfttlonBlockredactionConditioralinp
58、utbreachexecutioniotuodata(va4oub)ApolicaiioolifeipM(dayi)1SignalsamiParaMt.r.Stateflo*DiwnoMiHsrdver*iocdiYiAioaforfixedccaputaxioniOfffaultipUcatimilohaadl#milopecorrarYiammWodelReferwinfSiulat:onTarge:CodeCcMratioaHDLCod*GenrratiootUfaullforuivdarreifieddatatmdouoltfenervioaOptU4ingthainiMaBendmx
59、iubiDatainixialisationReroverootJerelI0reroinitielszation-Usetmsettoinitielisefleetsand#d*-point、JUeowvodahsflitatiat-poiMtocomw;oiLithat-:,rod*frftoxnt*rrrcnvrtzoniwithtanthe?、*or*rp!Reoovecodethatprotectsdivisionar.thoeticexceptionj异常处理EmbeddedCoder可以生成代码保护dividebyzero错误。即当发生除以0时,定点数据取其最人值作为计算的结呆。
60、Removecodethatprotectsagainstdivisionarithmeticexception:勾选移除保护,生成代码的计算结果与仿真的结果将不一致。代码生成优化目标配置EmobeddedCoder具有检查模型优化设置,可以通过SetObjectives配置不同的目标:包含执行效率、ROM、RAM、代码安全、调试、MISRA标准、Polyspace代码运行时静态检查。根据选择的目标进行优化代码。可以对优化目标进行优先级排列。丨c*tandpriori11ratourrtuU;ertjvea,foruih、teetb*doctat;on.Availableobjective!S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网工程设备材料信息参考价(2024年第四季度)
- 高级餐饮食品安全管理员技能鉴定理论考试题库500题(含答案)
- 2025年河南农业职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年池州职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年江苏农牧科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 《医疗机构管理培训》课件
- 2025民用航空运输行业未来发展与市场展望
- 10kV配电站房工程设计与施工流程优化
- 压路机租赁合同
- 场地租赁经营合同
- 2025江苏连云港市赣榆城市建设发展集团限公司招聘工作人员15人高频重点提升(共500题)附带答案详解
- 江苏省扬州市蒋王小学2023~2024年五年级上学期英语期末试卷(含答案无听力原文无音频)
- 数学-湖南省新高考教学教研联盟(长郡二十校联盟)2024-2025学年2025届高三上学期第一次预热演练试题和答案
- 决胜中层:中层管理者的九项修炼-记录
- 铸石防磨施工工艺
- 临时用电安全培训(汇编)
- 玻璃钢烟囱方案
- 中小学教师师德师风法律法规培训
- 医疗器械质量管理体系文件模板
- 在马克思墓前的讲话说课稿公开课一等奖市赛课获奖课件
- 送养收养合同协议书
评论
0/150
提交评论