Skip to content

Latest commit

 

History

History
717 lines (591 loc) · 81.4 KB

基于Autosar的模型配置说明文档.md

File metadata and controls

717 lines (591 loc) · 81.4 KB

适用于AUTOSAR的配置选项规范



  • 根据hisl(高完整性系统建模)文档进行配置项优化,并将hisl相关规则进行文档链接。开始编写自动配置的脚本
  • 根据model advisor中DO-178C/DO-331(航空机载软件建模规范)相关配置项进行优化,根据JMAAB中部分规则进行配置优化,修改脚本,增加不同模型兼容性
  • Creat By Tomato

1. Solver 求解器的设定

Solver

  1. Simulation time: 仿真和运行的开始时间,结束时间,单位为s,根据实际情况进行设定。(可参考hisl_0040)
  2. Solver options: 求解器选项,分别选择 Fixed-stepdiscrete ,代表 生成代码需要一个固定步骤的离散求解器。(可参考hisl_0041)
  3. Fixed-step size: 固定步长的时间设置,单位为s,根据开发电脑和实际运行的硬件性能进行设定,尽量与产品最终状态保持一致。
  4. Periodic sample time constraint: 采样周期约束,如模型不涉及重用,则选择 unconstraint ,如果使用模型引用来重用,则选择 Ensure sample time independent 。(参考规则hisl_0042,参考解释Periodic sample time constraint)
  5. Treat each discrete rate as a separate task:采样周期对应的任务模式,是否允许不用采样频率的模块在模型中,作为独立的task运行,此处选择启用,默认选项为不启用。(参考解释Treat each discrete rate as a separate task)
  6. Automatically handle rate transition for data transfer: 自动处理数据传输的速率转换,选择 不启用 ,如果勾选并启用自动转换功能,有可能会在代码生成阶段生成一些没有相应模型构造的代码,不可控也不符合可追溯性。(参考规则hisl_0042,参考解释Automatically handle rate transition for data transfer)
  7. Higher priority value indicates higher task priority: 高优先级数值对应高优先级任务,选择 不启用 ,这意味着小的数值代表高优先级任务,数值1和2中1代表着更高的优先级。(参考规则hisl_0042,参考解释Higher priority value indicates higher task priority)

2. Data Import/Export 数据输入输出设定

Data

  1. Input: 输入,从工作区加载数据,模型一般不需要此功能,选为 不启用 。(参考解释Input)
  2. Initial state: 初始状态,从工作区加载模型的初始状态,一般不用此功能,选为 不启用 。(参考解释Initial state)
  3. Time: 时间,在运行或仿真时把时间变量保存到工作区,一般不用此功能,选为 不启用 。(参考解释Time)
  4. States: 状态,在运行或仿真过程中保存状态数据到指定的变量,一般不用此功能,选为 不启用 。(参考解释States)
  5. Format: 格式,按照默认选择 Dataset 。(参考解释Format)
  6. Output: 输出,将输出比你昂保存到工作区,一般不用此功能,选为 不启用 。(参考解释Output)
  7. Final states:最终状态,将模型最终的状态记录并保存在工作区,一般不用此功能,选为 不启用 。(参考解释Final states)
  8. Signal logging: 信号记录,将运行中信号记录并存至工作区,一般 启用 此功能以便于仿真时调试问题。(参考解释Signal logging)
  9. Data stores: 数据存储,储存Simulink.SimulationData.Dataset格式的数据,勾选 启用 后,不影响代码生成。(参考解释Data stores)
  10. Log dataset data to file: 将数据记录到MAT文件,一般 不启用 此功能。(参考解释Log dataset data to file)
  11. Singal simulation output: 仿真结果的单个输出,一般 不启用 此功能。(参考解释Singal simulation output)
  12. Record logged workspace data in Simulation Data Inspector: 在Simulation Data Inspector中记录记录的工作区数据,模型开发及验证阶段可以 启用 ,以便于在 仿真数据监视器 中查看数据和调试,此处不影响代码生成。(参考解释Record logged workspace data in Simulation Data Inspector)
  13. Limit data points: 限制到Matlab工作区导出的数据点,一般按照默认 启用 此功能,可以减少电脑不必要的内存占用,此选项不影响代码生成。(参考解释Limit data points)

3. Optimization 优化参数设定

Optimization

  1. Default for underspecified data type: 没有指定的默认数据类型,共有 doublesignal 可选,此设置影响代码生成,需要根据处理器的支持与否来选择,此处推荐选择 single 以便节省空间。(参考解释Default for underspecified data type)

3_0_1_001.jpg

  1. Use division for fixed-point net slope computation:使用除法对于特定的定点数的净斜率计算进行优化,此项选择on,需要注意的是hisl_0060规则推荐选择on。(参考解释Use division for fixed-point net slope computation,参考规则hisl_0060)
  • 疑问:选项配置没有实际影响,和官方文档参考有差别

3_0_2_001.jpg 3_0_2_002.jpg

  1. Use floating-point multiplication to handle net slope corrections: 使用浮点乘法来处理网络斜率校正,默认 不启用 此项优化。(参考解释Use floating-point multiplication to handle net slope corrections)
  2. Application lifespan (days): 在定时器溢出之前,模型中的模块能够运行多少天,所填数字为大于0的标量值,最大为inf,此处要求填写 inf 。(参考解释Application lifespan,参考规则hisl_0048)

模型中使用事件,并允许绝对时间-参考8.5.6项设置-才会有影响,否则不对生成代码产生影响

  1. Optimize using the specified minimum and maximum values: 使用模型中信号和参数的指定最小值和最大值来优化生成的代码,设为 不启用 该优化来减少冗余代码和空间。(参考解释Optimize using the specified minimum and maximum values)
  2. Remove root level I/O zero initialization: 删除根级别的 I/O 赋0初始化,此项默认 启用 。(参考解释Remove root level I/O zero initialization)
  3. Remove internal data zero initialization: 删除内部数据赋0的初始化,为了适配AutoSAR,此项选择 不启用 。(参考解释Remove internal data zero initialization,参考规则hisl_0052)
  • 左侧为勾选启用,右侧为勾选不启用,可以看出启用此项 不会生成中间状态变量的初始化代码,此时使用变量定义时进行初始化。

3_0_8_001.jpg 3_0_8_002.jpg 3_0_8_003.jpg

  1. Remove code from floating-point to integer conversions that wraps out-of-range values: 删除超出范围的浮点到整形数转换,根据会议评审,此处选择 不启用,需要注意的是hisl_0053规则建议选择“启用” 。(参考解释Remove code from floating-point,参考规则hisl_0053)
  • 左边为启用,右边为不启用,转换是否超范围在搭建模型阶段进行测试和保证,不需要生成相关保护代码。

3_0_9_001.jpg

  1. Remove code that protects against division arithmetic exceptions: 不生成对于除0保护的代码,此处 不启用,目的为生成除0保护的相关代码。(参考解释Remove code that protects,参考规则hisl_0054)

3.1. Optimization->Signals and Parameters 信号和变量优化设定

Signals and Parameters

  1. Default parameter behavior: 默认参数行为,此项选择 Inlined ,将数字块参数转换为生成的代码中的常量内联值,即代码不给表示数字的参数分配内存,减少全局RAM使用并提高生成代码的效率。(参考解释Default parameter behavior)
  2. Inline invariant signals: 不变信号量作为内联,此处勾选 不启用 ,目的是将固定的信号量生成const类型的标定量。(参考解释Inline invariant signals)
  • 左边为不启用,右边为启用,可以发现启用内联信号量优化后有可能会将 期望保存为const类型的标定量优化没,所以不启用这项优化

3_1_2_001.jpg 3_1_2_002.jpg

  1. Use memcpy for vector assignment: 使用memcpy进行矢量的分配,此处勾选 启用 优化,目的是对于一些特定的for循环,会使用memcpy进行替换。(参考解释Use memcpy for vector assignment)
  2. Memcpy threshold (bytes): Memcpy阈值(字节),在生成的代码中指定替换成memcpy的最小数组大小(以字节为单位),此处使用默认值 64 即可。(参考解释Memcpy threshold)
  3. Pack Boolean data into bitfields: 将布尔数据打包成位域,此处按照默认 不启用 这条优化,如果启用,则会将布尔变量作为位段方式进行储存,节省ROM,但是运行时效率会变低。(参考解释Pack Boolean data into bitfields)
  4. Loop unrolling threshold: 循环展开阈值,制定代码生成for循环的最小循环数,此处按照默认设为 5 ,根据规则hisl_0051要求为2以上,而默认参数为5,所以决定采默认值。(参考解释Loop unrolling threshold,参考规则hisl_0051)
  5. Maximum stack size (bytes): 堆栈上限值(字节),此处按照默认选择即可,Inherit from target ,目的为根据Simulink编译器自动分配。(参考解释Maximum stack size)
  6. Pass reusable subsystem outputs as: 设定可重用子系统通过什么输出,此处选择 Individual arguments ,将可重用的子系统输出作为局部变量,此选项对比Structure reference可增加运行时效率。(参考解释Pass reusable subsystem outputs as)
  • 左边为选择Individual arguments,右边为选择Structure reference代码对比,采用左边的方式能够减少内存并增加代码执行速度,采用右边的方式可以对重用函数输出值进行分开保存,并能够存储上次的值。

3_1_8_001.jpg 3_1_8_002.jpg 3_1_8_003.jpg

  1. Parameter structure: 参数结构,此处选择默认选项 Hierarchical ,目的是对于特定的子系统生成独立的参数结构。(参考解释Parameter structure)

3.2. Optimization->Stateflow 参数优化设定

Stateflow

  1. Use bitsets for storing state configuration: 使用位段来储存状态格局,此处勾选 不启用 该优化,若勾选该优化,虽然会节省ROM,但同时会降低运行时效率,。(参考解释Use bitsets for storing)
  2. Use bitsets for storing Boolean data: 使用位段储存布尔变量,此处 不启用 这项优化,这样能够更快的读取及运算布尔变量,若启用优化则会减少内存使用但是需要更多的指令来访问布尔变量。(参考解释Use bitsets for storing Boolean data)
  3. Base storage type for automatically created enumerations: 自动创建枚举类型的储存类型,此处按照默认值 Native Integers 设定即可,目的为根据目标自动选择的整形类型。(参考解释Base storage type for automatically created enumerations)

4. Diagnostics 诊断设定

Diagnostics

  1. Algebraic loop: 代数环检测,设为 error 。(参考解释Algebraic loop,参考规则hisl_0043)
  2. Minimize algebraic loop: 最小化代数环,设为 error 。(参考解释Minimize algebraic loop,参考规则hisl_0043)
  3. Block priority violation: 模块优先级违规检测,设为 error 。(参考解释Block priority violation,参考规则hisl_0043)
  4. Min step size violation: 最小步长违规检测,设为 warning 。(参考解释Min step size violation)
  5. Consecutive zero-crossings violation: 连续过0违规检测,设为 error 。(参考解释Consecutive zero-crossings violation)
  6. Automatic solver parameter selection: 自动求解器参数选择,此处设为 error。(参考解释Automatic solver parameter selection,参考规则hisl_0043)
  7. Extraneous discrete derivative signals: 外部导入的离散信号检测,设为 error 。(参考解释Extraneous discrete derivative signals)
  8. State name clash: 状态名冲突,设为 warning 。(参考解释State name clash,参考规则hisl_0043)
  9. SimState interface checksum mismatch: SimState接口校验和不匹配,设为 warning 。(参考解释SimState interface checksum mismatch)

4.1. Diagnostics->Sample Time 采样时间诊断设定

SampleTime

  1. Source block specifies -1 sample time: 信号源模块设定了-1的采样时间,设为 error 。(参考解释Source block specifies -1 sample time,参考规则hisl_0044)
  2. Multitask rate transition: 多任务速率转换,设为 error 。(参考解释Multitask rate transition,参考规则hisl_0044)
  3. Single task rate transition: 单任务速率转换,设为 error 。(参考解释Single task rate transition,参考规则hisl_0044)
  4. Multitask conditionally executed subsystem: 多任务根据条件执行子系统,设为 error 。(参考解释[Multitask conditionally executed subsystem][Multitask conditionally executed subsystem],参考规则hisl_0044)
  5. Tasks with equal priority: 同优先级任务,设为 error 。(参考解释Tasks with equal priority,参考规则hisl_0044)
  6. Enforce sample times specified by Signal Specification blocks: 根据信号模块特殊设定进行了采样周期的强制变换,设为 error 。(参考解释Enforce sample times specified,参考规则hisl_0044)
  7. Sample hit time adjusting: 采样调用时间调整,设为 none 。(参考解释Sample hit time adjusting)
  8. Unspecified inheritability of sample time: 采样时间没有设定为继承模式,设为 error 。(参考解释Unspecified inheritability of sample time,参考规则hisl_0044)

4.2. Diagnostics->Data Validity 数据有效性诊断设定

DataValidity

  1. Signal resolution: 信号分辨率,此处按照默认设置 Explicit only ,目的为不执行隐式信号分辨率,仅显式指定信号分辨率。(参考解释Signal resolution)
  2. Wrap on overflow: 封装溢出,设置为 error 。(参考解释Wrap on overflow)
  3. Division by singular matrix: 奇异矩阵除法,选择 error ,在model adviser里勾选 Check diagnostic settings ignored during accelerated model reference simulation也可以进行此项检查。(参考解释Division by singular matrix)
  4. Saturate on overflow: 饱和溢出,此处设置默认值 error 。(参考解释Saturate on overflow)
  5. Underspecified data types: 未指定的数据类型,此处按照默认设置 error 。(参考解释Underspecified data types)
  6. Inf or NaN block output: Inf或NaN块输出,此处设置 error 。(参考解释Inf or NaN block output)
  7. Simulation range checking: 仿真范围检查,此处设置 error 。(参考规则Simulation range checking)
  8. "rt" prefix for identifiers: 标识符rt作为前缀,按照默认设置 error 。(参考解释"rt" prefix for identifiers)
  9. Detect downcast: 损失型的强制转换检查,设为 error 。(参考解释Detect downcast,参考规则hisl_0302)
  10. Detect overflow: 向上溢出检测,设为 error 。(参考解释Detect overflow,参考规则hisl_0302)
  11. Detect underflow: 检测向下溢出,设为 error 。(参考解释Detect underflow,参考规则hisl_0302)
  12. Detect precision loss: 检测精度损失,设为 error 。(参考解释Detect precision loss,参考规则hisl_0302)
  13. Detect loss of tunability: 可调性丢失检测,设为 error 。(参考解释Detect loss of tunability)
  14. Detect read before write: 在写入之前检测读取,按照默认设置 Enable all as errors ,仅检测局部变量。(参考解释Detect read before write)
  15. Multitask data store: 多任务数据存储,按照默认设为 error 。(参考解释Multitask data store)
  16. Detect write after read: 读取后检测写入,此处按照默认设置 Enable all as errors 。(参考解释Detect write after read)
  17. Duplicate data store names: 重复的数据储存名称,此处设置 error 。(参考解释Duplicate data store names,参考规则Check Data Store Memory blocks)
  18. Detect write after write: 写入之后检测写入,此处按照默认设置 Enable all as errors 。(参考解释Detect write after write)

4.3. Diagnostics->Type Conversiion 类型转换诊断设定

TypeConversion

  1. Unnecessary type conversions: 不必要的类型转换,设置 warning 。(参考解释Unnecessary type conversions)
  2. Vector/matrix block input conversion: 矢量/矩阵块输入转换,设为 error 。(参考解释Vector/matrix block input conversion,参考规则hisl_0309)
  3. 32-bit integer to single precision float conversion: 32位整数到单精度浮点转换,按照默认设为 warning 。(参考解释32-bit integer to single)
  4. Detect underflow: 向下溢出检测,按照默认设置 none 。(参考解释Detect underflow)
  5. Detect overflow: 向上溢出检测,按照默认设置 none 。(参考解释Detect overflow)
  6. Detect precision loss: 精度损失检测,按照默认设置 none 。(参考解释Detect precision loss)

4.4. Diagnostics->Connectivity 连接诊断设定

Connectivity

  1. Signal label mismatch: 信号标签不匹配,设为 error 。(参考解释Signal label mismatch,参考规则hisl_0306)
  2. Unconnected block input ports: 未连接的输入端口,设为 error 。(参考解释Unconnected block input ports,参考规则hisl_0306)
  3. Unconnected block output ports: 未连接的输出端口,设为 error 。(参考解释Unconnected block output ports,参考规则hisl_0306)
  4. Unconnected line: 包含未连接的行或不匹配的Goto、From块,设为 error 。(参考解释Unconnected line,参考规则hisl_0306)
  5. Unspecified bus object at root Outport block: 顶层输出端口连接了未定义的总线,设为 error 。(参考解释Unspecified bus object at root Outport block,参考规则hisl_0307)
  6. Element name mismatch: 元素名称不匹配,设为 error 。(参考解释Element name mismatch,参考规则hisl_0307)
  7. Bus signal treated as vector: 总线信号作为矢量进行处理,按照默认设置为 none 。(参考解释Bus signal treated as vector)
  8. Non-bus signals treated as bus signals: 非总线信号被当做了总线信号进行处理,设为 error 。(参考解释Non-bus signals treated as bus signals,参考规则hisl_0307)
  9. Repair bus selections: 总线选择器查错和修复,设为 Warn and repair 。(参考解释Repair bus selections,参考规则hisl_0307)
  10. Invalid function-call connection: 无效的函数调用连接,设为 error 。(参考翻译Invalid function-call connection,参考规则hisl_0308)
  11. Context-dependent inputs: 与上下文有关的输入,设为 Enable all as errors 。(参考解释Context-dependent inputs,参考规则hisl_0308)

4.5. Diagnostics->Compatibility 互换性诊断设定

Compatibility

  1. S-function upgrades needed: 需要S函数升级,设为 error 。(参考解释S-function upgrades needed,参考规则hisl_0301)
  2. Block behavior depends on frame status of signal: 模块行为由信号帧决定,按照默认设为 error 。(参考解释Block behavior depends)
  3. SimState object from earlier release: 使用了早期版本的SimState,按照默认设为 error 。(参考解释SimState object from earlier release)

4.6. Diagnostics->Model Referencing 模型引用诊断设定

ModelReferencing

  1. Model block version mismatch: 模块版本不匹配,设为 error 。(参考解释Model block version mismatch,参考规则hisl_0310)
  2. Port and parameter mismatch: 端口参数比匹配,设为 error 。(参考解释Port and parameter mismatch,参考规则hisl_0310)
  3. Invalid root Inport/Outport block connection: 顶层无效的输入/输出端口连接,设为 error 。(参考解释Invalid root Inport/Outport block connection,参考规则hisl_0310)
  4. Unsupported data logging: 不支持的数据记录,设为 error 。(参考解释Unsupported data logging,参考规则hisl_0310)

4.7. Diagnostics->Stateflow 诊断设定

Stateflow1

  1. Unused data, events, messages, and functions: 未使用的数据,事件,消息和函数。按照默认设为 warning 。(参考解释Unused data, events, messages, and functions)
  2. Unexpected backtracking: 非预期的回溯,设为 error 。(参考解释Unexpected backtracking,参考规则hisl_0311)
  3. Invalid input data access in chart initialization: chart初始化中有无效的数据访问,设为 error 。(参考解释Invalid input data access in chart initialization,参考规则hisl_0311)
  4. No unconditional default transitions: 没有无条件转换,设为 error 。(参考解释No unconditional default transitions,参考规则hisl_0311)
  5. Transition outside natural parent: 在父状态之外转换诊断,设为 error 。(参考解释Transition outside natural parent)
  6. Undirected event broadcasts: 无指向的事件广播,按照默认设置 warning 。(参考解释Undirected event broadcasts)
  7. Transition action specified before condition action: 在条件动作前定义了转换动作,按照默认设为 warning 。(参考解释Transition action specified before condition action)
  8. Read-before-write to output in Moore chart: moore chart使用先前的输出值确定当前状态,按照默认设为 warning 。(参考解释Read-before-write to output in Moore chart)
  9. Absolute time temporal value shorter than sampling period: 绝对时间比采样周期短,按照默认设为 warning 。(参考解释Absolute time temporal value shorter than sampling period)
  10. Self transition on leaf state: 单个叶状态下的自转换操作,按照默认设为 warning 。(参考解释Self transition on leaf state)
  11. Execute-at-Initialization disabled in presence of input events:当选择状态在初始化运行时,检测输入事件的触发是否被抑制,按照默认设为 warning 。(参考解释Execute-at-Initialization disabled in presence of input events)
  12. Use of machine-parented data instead of Data Store: 检测使用了电脑的内存作为数据存储,而不是data store模块,按照默认设为 warning 。(参考解释Use of machine-parented data instead of Data Store)
  13. Unreachable execution path: 执行不到的路径,按照默认设为 warning 。(参考解释Unreachable execution path)

5. Hardware Implementation 执行硬件设定

HardwareImplementation

  • 根据实际硬件进行选择,举例: Hardware board->none, Device vendor->Infineon, Device Type->TriCore
  • Largest atomic size->integer: 最小整数,根据硬件进行选择,举例 Char
  • Largest atomic size: floating-point: 最小浮点,举例 Float
  • Byte ordering: 字节排序,默认小端模式 Little Endian
  • Signed integer division rounds to: 有符号的整数除数,选择 Zero ,两个有符号整数相除,要得到整数进行舍入时,选择更接近0的数。(参考解释Signed integer division rounds to,参考规则hisl_0060)
  • Shift right on a signed integer as arithmetic shift: 有符号整数右移是否作为算术法则右移,描述编译器如何在符号整数的右移中填充符号位,默认 开启 ,以便生成简单高效的代码。(参考解释Shift right on a signed integer as arithmetic shift)

6. Model Referencing 模型引用设定

ModelReferencing1

  1. Rebuild: 重建的方法,选择 If any changes detected 。(参考解释Rebuild,参考规则hisl_0037)
  2. Enable parallel model reference builds: 允许并行模型引用构建,按照默认设置 不启用 。(参考解释Enable parallel model reference builds)
  3. MATLAB worker initialization for builds: 并行编译初始化,按照默认设为 none 。(参考解释MATLAB worker initialization for builds)
  4. Enable strict scheduling checks for referenced export-function models: 引用导出函数的模型进行严格调度检查,此处按照默认 启用 。(参考解释Enable strict scheduling checks)
  5. Total number of instances allowed per top model: 在另一个模型中可以发生多少对此模型的引用,按照默认设置为 Multiple 。(参考解释Total number of instances allowed per top model)
  6. Propagate sizes of variable-size signals: 可变大小的信号传播,默认选择 Infer from blocks in model 。(参考解释Propagate sizes of variable-size signals)
  7. Minimize algebraic loop occurrences: 允许最小代数环发生,此处 不启用 。(参考解释Minimize algebraic loop occurrences,参考规则hisl_0037)
  8. Propagate all signal labels out of the model: 所有信号标签传出模型,按照默认 启用 。(参考解释Propagate all signal labels out of the model)
  9. Pass fixed-size scalar root inputs by value for code generation: 引用此模型的模型 是否通过值 将其标量输入 传递给该模型,此项 启用,使用值作为输入值的 入口传参,需要注意,本条设置在hisl规则中建议不启用,具体可参考规则,下图是代码生成的对比。(参考解释Pass fixed-size scalar,参考规则hisl_0037)

6_9_001.jpg 6_9_002.jpg

7. Simulation Target 仿真目标设定

SimulationTarget

  • Parse custom code symbols: 解析自定义代码符号,此项根据实际需要,如果模型有引用C源文件里的变量或函数,需要启用此项,本示例为 不启用 。(参考解释Parse custom code symbols)

8. Code Generation 代码生成设定

CodeGeneration

  1. System target file: 系统目标文件,选择 autosar.tlc 。(参考解释System target file)
  2. Language: 模型生成的代码语言,此处默认 c。(参考解释Language)
  3. Generate code only: 只生成C代码,不进行编译,此处默认 启用 ,如果不勾选会一块生成makefile并进行可执行文件的编译。(参考解释Generate code only)
  4. Package code and artifacts: 打包生成的代码和组件,默认 不启用 。(参考解释Package code and artifacts)
  5. Toolchain: 编译用的工具链,按照默认选择 Automatically locate an installed toolchain 。(参考解释Toolchain)
  6. Build configuration: 构建配置,按照默认选择 Faster Builds ,目的为不启用编译器优化。(参考解释Build configuration)
  7. Prioritized objectives: 生成代码的优先目标,按照默认设置 Unspecified ,若此处进行了设置 例如设置了ROM Efficiency,则仅在生成代码的开头注释部分增加相应的描述,并不会对实际生成的代码产生影响。(参考解释Prioritized objectives)
  8. Check model before generating code: 生成代码前检查模型,选择 proceed with warnings ,显示警告信息。(参考解释Check model before generating code)

8.1. Code Generation->Report 代码生成报告设定

Report

  1. Create code generation report: 创建代码生成报告,选择 启用。(参考解释Create code generation report)
  2. Open report automatically: 自动打开生成的报告,选择 启用。(参考解释Open report automatically)
  3. Generate model Web view: 生成模型web视图,默认 不启用 。(参考解释Generate model Web view)
  4. Static code metrics: 代码生成报告中包含静态代码,选择 启用 。(参考解释Static code metrics)

8.2. Code Generation->Comments 代码生成注释设定

Comments

  1. Include comments: 生成代码包含注释,选择 启用 。(参考规则hisl_0038)
  2. Simulink block / Stateflow object comments: 插入自动生成的描述模块代码的注释,注释在生成的文件中的代码之前,选择 启用 。(参考规则hisl_0038)
  3. MATLAB source code as comments: 在生成的代码中插入MATLAB源代码作为注释,注释在相关的生成代码之前,此处按照默认选择 启用 。(参考解释MATLAB source code as comments)
  4. Show eliminated blocks: 在优化结果(例如参数内联)中,删除的代码进行注释显示,选择 启用 。(参考解释Show eliminated blocks,参考规则hisl_0038)
  5. Verbose comments for SimulinkGlobal storage class: 生成SimulinkGlobal储存类的注释,选择 启用 。(参考解释Verbose comments for SimulinkGlobal storage class,参考规则hisl_0038)
  6. Operator annotations: 在生成的代码中包括操作符注释,按照默认 启用 。(参考解释Operator annotations)
  7. Simulink block descriptions: 生成代码中插入Simulink模块 Description 栏目中描述的注释,按照默认 启用 。(参考解释Simulink block descriptions)
  8. Stateflow object descriptions: 生成代码中插入Stateflow模块 Description 栏目中描述的注释,按照默认 启用 。(参考解释Stateflow object descriptions)
  9. Simulink data object descriptions: 生成代码中插入Simulink数据对象 Description 栏目中描述的注释,按照默认 启用 。(参考解释Simulink data object descriptions)
  10. Requirements in block comments: 在生成代码中插入模块链接的需求,根据会议评审此项选择 不启用 ,需要注意hisl_0038规则推荐为“启用”。(参考解释Requirements in block comments,参考规则hisl_0038)
  11. Custom comments (MPT objects only): 针对模块打包工具MPT的自定义注释,按照默认 不启用 。(参考解释Custom comments (MPT objects only))
  12. MATLAB function help text: 对于MATLAB函数进行帮助文档注释,按照默认 启用 。(参考解释MATLAB function help text)

8.3. Code Generation->Symbols 代码生成符号标记设定

Symbols

  1. Global variables: 自定义生成的全局变量标识符,按照默认填写 $R$N$M ,代表的意义可参考本条的链接,需要注意,如果大型项目全局变量过多,有可能发生不同模块中有重名的现象,此时需要自定义此项来避免重命名。(参考说明Global variables)
  2. Global types: 自定义生成的全局类型表示符,按照默认填写 $N$R$M_T 。(参考说明Global types)
  3. Field name of global types: 自定义全局类型的字段名称,按照默认填写 $N$M 。(参考解释Field name of global types)
  4. Subsystem methods: 为可重用的子系统生成自定义的函数名,按照默认填写 $R$N$M$F 。(参考解释Subsystem methods)
  5. Subsystem method arguments: 可重用的子系统生成函数参数名进行自定义,按照默认填写 rt$I$N$M 。(参考解释Subsystem method arguments)
  6. Local temporary variables: 本地临时变量名称自定义,按照默认填写 $N$M 。(参考解释Local temporary variables)
  7. Local block output variables: 本地模块输出变量名称自定义,按照默认填写 rtb_$N$M 。(参考解释Local block output variables)
  8. Constant macros: 常量宏名称的自定义,按照默认填写 $R$N$M 。(参考解释Constant macros)
  9. Shared utilities: 共享应用程序名称自定义,按照默认填写 $N$C 。(参考解释Shared utilities)
  10. Minimum mangle length: 生成名称的最小字符数,设为 4 。(参考解释Minimum mangle length,参考规则hisl_0049)
  11. Maximum identifier length: 生成名称的最大字符数,按照默认设为 31。(参考解释Maximum identifier length)
  12. System-generated identifiers: 指定代码生成器对于$N的解释是生成较短名称还是正常的名称,选择 Shortened。(参考解释System-generated identifiers,参考规则hisl_0060)
  13. Generate scalar inlined parameters as: 控制 在生成代码中标量的内联参数值形式,按照默认选择 Literals ,目的为生成标量内联参数作为数字常量。(参考解释Generate scalar inlined parameters as)
  14. Signal naming: 在生成的代码中指定信号命名的规则,按照默认选择 None ,目的为不更改模型内信号名称,直接进行命名。(参考解释Signal naming)
  15. Parameter naming: 指定生成代码中的命名参数的规则,按照默认选择 None 。(参考解释Parameter naming)
  16. #define naming: 生成代码中#define宏定义的命名规则,按照默认选择 None 。(参考解释#define naming)
  17. Use the same reserved names as Simulation Target: 使用与 “Simulation Target” 中指定的名称相同的保留名称,按照默认 不启用 。(参考解释Use the same reserved names as Simulation Target)
  18. Reserved names: 保留命名,在输入框中填入需要保留的名称,则在代码生成时不会生成框中填入的名称,此处根据实际需求进行填写,本示例并无此需求,所以不填写。(参考解释Reserved names)

8.4. Code Generation->Custom Code 自定义代码设定

CustomCode

  • Use the same custom code settings as Simulation Target: 使用和Simulation Target中设置一样的自定义代码段,如果有自定义部分,此处可以启用,本示例 不启用 。(参考解释Use the same custom code settings)

8.5. Code Generation->Interface 代码接口设定

Interface

  1. Code replacement library: 指定代码生成器在为模型生成代码时使用的代码替换库,按照默认选择为 none 。(参考解释Code replacement library,参考规则hisl_0060)
  2. Shared code placement: 指定生成的通用函数、数据类型定义以及自定义的数据储存类型文件(rtwtypes.h)存放位置,选择 Shared location ,目的为最后放在slprj文件夹中。(参考解释Shared code placement,参考规则hisl_0060)
  3. Support->floating-point numbers: 是否生成浮点类型的数据和相关操作,根据实际项目需求进行选择,此处选为 启用 。(参考解释Support: floating-point numbers)
  4. Support->non-finite numbers: 是否生成非有限数据(例如NaN和Inf)和相关操作,选择 不启用 。(参考解释[Support: non-finite numbers][Support->non-finite numbers],参考规则hisl_0039)
  5. Support->complex numbers: 是否生成复数和相关操作,根据实际需求,本示例为Autosar代码生成配置,系统默认不让启用复数定义和操作,此处选择 不启用 。(参考解释Support: complex numbers,参考规则hisl_0060)
  6. Support->absolute time: 对于包含使用事件模块的模型,指定其是否为绝对和已用时间 生成整数计数器进行维护,此处选择 不启用 。(参考解释Support->absolute time,参考规则hisl_0039)
  7. Support->continuous time: 是否为使用连续时间的模块生成代码,此处选择 不启用 。(参考解释Support->continuous time,参考规则hisl_0039)
  8. Support->variable-size signals: 是否为使用可变大小信号的模型生成代码,此处选择 不启用 。(参考解释Support->variable-size signals,参考规则hisl_0039)
  9. Code interface packaging: 选择生成的接口代码封装模式,按照默认选择 Nonreusable function ,目的为生成不可重用的代码,使用静态分配进行地址和访问入口设定。(参考解释Code interface packaging)
  10. Remove error status field in real-time model data structure: 是否从生成的实时模型数据结构中省略系统错误状态字(rtModel),选择 启用 ,省略系统状态错误字的传递可减少内存使用。(参考解释Remove error status field in real-time model data structure,参考规则hisl_0039)
  11. Generate C API for-> signals: 在代码中生成信号变量的数据交换的接口,此处按照默认设置 不启用。(参考解释Generate C API for-> signals)
  12. Generate C API for-> parameters: 在代码中生成parameters变量的数据交换的接口,此处按照默认设置 不启用。(参考解释Generate C API for-> parameters)
  13. Generate C API for-> states: 在代码中生成states变量的数据交换的接口,此处按照默认设置 不启用。(参考解释Generate C API for-> states)
  14. Generate C API for-> root-level I/O: 在代码中生成root-level I/O变量的数据交换的接口,此处按照默认设置 不启用。(参考解释Generate C API for-> root-level I/O)
  15. ASAP2 interface: 生成ASAP2的数据接口,此处设为启用。(参考解释ASAP2 interface)
  16. External mode: 生成外部模型用到的数据交换接口,按照默认设为不启用。(参考解释External mode)

8.6. Code Generation->Code Style 代码生成风格设定

CodeStyle

  1. Parentheses level: 为生成的代码指定圆括号样式,选择 Maximum (Specify precedence with parentheses) ,尽可能的使用括号来说明运算优先级,目的为满足MISRA-C。 (参考解释Parentheses level ,参考规则hisl_0047)
  2. Preserve operand order in expression: 指定是否保留表达式中操作数的顺序,选择 启用 。(参考解释Preserve operand order in expression,参考规则hisl_0047)
  3. Preserve condition expression in if statement: 指定是否在if语句中保留 空的 主条件表达式,选择 启用 。(参考解释Preserve condition expression in if statement,参考规则hisl_0047)
  4. Convert if-elseif-else patterns to switch-case statements: 对于特定if-elseif-else结构转换为switch-case结构,此处选择 启用 ,目的为节省ROM和增加执行效率。(参考解释Convert if-elseif-else patterns to switch-case statements)
  5. Preserve extern keyword in function declarations: 是否使用关键字extern对函数进行声明,此处按照默认设置 开启 ,使用extern进行对函数外部链接和调用的声明。(参考解释Preserve extern keyword in function declarations)
  6. Suppress generation of default cases for Stateflow switch statements if unreachable: 对于stateflow中生成的switch-case结构是否抑制生成default分支,选择 不启用 ,目的为生成default分支,满足MISRA-C的规范要求。(参考解释Suppress generation of default cases for Stateflow switch statements if unreachable)
  7. Replace multiplications by powers of two with signed bitwise shifts: 是否使用位移对有符号的数特定乘法进行替代优化,选择 不启用 ,目的为满足MISRA-C规范要求。(参考解释Replace multiplications by powers of two with signed bitwise shifts,参考规则hisl_0060)
  8. Allow right shifts on signed integers: 是否允许有符号整数右移操作,选择 不启用 ,不允许有符号数右移,满足MISRA-C规则。(参考解释Allow right shifts on signed integers)
  9. Casting modes: 强制转换模式,选择 Standards Compliant ,生成符合MISRA-C规范的强制转换。(参考解释Casting modes,参考规则hisl_0060)
  10. Indent style: 缩进风格,选择 Allman 。(参考解释Indent style)
  11. Indent size: 缩进大小,填写 4 。(参考解释Indent size)

8.7. Code Generation->Verification 代码验证设定

Verification

  1. Measure task execution time: 在SIL和PIL模拟期间,测量任务执行时间,在代码调试阶段可以启用,生成产品级代码时不能启用,本示例选择 不启用 。(参考解释Measure task execution time)
  2. Measure function execution times: 在SIL和PIL模拟期间,测量函数执行时间,在代码调试阶段可以启用,生成产品级代码时不能启用,本示例选择 不启用 。(参考解释Measure function execution times)
  3. Workspace variable: 代码运行时间测量所需要的工作空间变量,如果启用代码时间测量则此处启用。(参考解释Workspace variable)
  4. Save options: 是否将代码测量和分析的数据保存到工作区,如果启用代码时间测量则此处启用。(参考解释Save options)
  5. Code coverage tool: 指定一个第三方代码覆盖度检测工具,2016a版本支持BullseyeCoverage和LDRA Testbed两款工具进行嵌入审查,本示例选择 None 。(参考解释Code coverage tool)
  6. Enable portable word sizes: 是否使用宏定义基础变量大小的方式,针对跨平台设计生成可移植的代码,此处选择 启用 。(参考解释Enable portable word sizes)
  7. Enable source-level debugging for SIL: 是否允许在SIL模拟期间 调试生成的源代码 ,此处 不启用 ,目的为生成效率高的代码。(参考解释Enable source-level debugging for SIL)

8.8. Code Generation->Templates 生成代码模板设定

Templates

8.9. Code Generation->Code Placement 代码放置位置设定

CodePlacement

  1. Data definition: 全局变量定义的位置,按照默认选择 Auto 。(参考解释Data definition)
  2. Data declaration: 全局变量声明(extern, typedef, #define)的位置,按照默认选择 Auto 。(参考解释Data declaration)
  3. #include file delimiter: 指定#include在生成的代码中使用的文件分隔符的类型,选择 #include "header.h",目的为对于代码编译和链接的可控,要求所有参与编译的文件都要放到该工程文件夹中。(参考解释#include file delimiter)
  4. Use owner from data object for data definition placement: 指定是否使用自定义的数据对象来替换生成代码中的数据声明,此处选择 不启用,目的为使用自动代码生成。(参考解释Use owner from data object for data definition placement)
  5. Signal display level: 指定MPT信号数据的持久性级别,和信号的 显示级别(Signal display level)进行比较对应,如果数值小于显示级别,则最后信号数据将以自定义的属性进行代码生成,否则会根据自动生成器进行确认和代码生成,此处按照默认填写 10 。(参考解释Signal display level)
  6. Parameter tune level: 指定可调参数的持久性级别,此处按照默认填写 10 。(参考解释Parameter tune level)
  7. File packaging format: 生成文件包格式,此项选择Compact,如果选择 “Compact (with separate data file)” 则会将所生成的代码主要放到model_data.c、model.c、model.h 这三个文件中,生成的文件意义可参考Generated Code Modules。(参考解释File packaging format)

8.10. Code Generation->Data Type Replacement 生成代码数据类型替换设定

DataTypeReplacement

  • Replace data type names in the generated code: 指定是否使用 用户自定义的数据类型进行 代码自动生成 的数据类型替换,选择 不启用 。(参考解释Replace data type names in the generated code)

8.11. Code Generation->Memory Sections 生成代码内存块设定

MemorySections

  • Package: 指定一段分配的内存进行模型函数和数据的打包,选择 None 。(参考解释Package)
  • 本页面其它选项选为 Default ,目的为不使用特殊的内存分配方式对各个模块生成出来的代码进行安置,如果需要在此处进行内存配,请参考Control Data and Function Placement in Memory by Inserting Pragmas

8.12. Code Generation->AUTOSAR Code Generation Options 生成适配AUTOSAR代码的配置选项

AUTOSARCode

  1. Generate XML file for schema version: 生成XML文件对应的AUTOSAR适配版本,根据实际需求进行选择,本示例选择 4.2 。(参考解释Generate XML file for schema version)
  2. Maximum SHORT-NAME length: 指定缩写名称最大长度,根据会议评审,填写 64。(参考解释Maximum SHORT-NAME length)
  3. Use AUTOSAR compiler abstraction macros: 使用AUTOSAR定义的宏进行编译,选择 不启用 。(参考解释Use AUTOSAR compiler abstraction macros)
  4. Support root-level matrix I/O using one-dimensional arrays: 是否支持根层级的矩阵 I/O ,选择 不启用。(参考解释Support root-level matrix I/O using one-dimensional arrays)