1 总目录说明
博主会定期更新博客,记录自己工作、学习过程中的一些思考。
对于理论性的内容,博主会根据自己的理解表述出来,如果理解有误,欢迎指出。对于应用性的内容(比如模型仿真、生成代码、脚本编程),博主会尽量把流程写清楚,并展示脚本运行结果或生成代码结果,达到一个可验证和可复现的效果。
2 基于模型的设计
这一部分博客的内容为基于模型的设计,工具链为Mathworks公司的Matlab 2018a。
该目录下各个章节的侧重点不同:
- <Matlab编程技巧>中包括Matlab自动化脚本开发或工具链开发的相关技术;
- <Simulink配置>中包括代码生成配置和数据字典配置;
- <Simulink代码生成>中包括Simulink基础建模,Simulink配置选项以及代码生成;
- <Simulink建模>中包括Simulink算法建模实践,代码生成及相关注意点;
- <集成与验证>中会将生成的代码编译后刷到硬件中进行验证,以及一些MBD实战项目。
另外,最近在B站发现一位优质UP主:快乐的宇航boy,是汽车软件开发行业的很有经验的前辈,大家可以多多关注啊~
2.1 Matlab编程技巧
2.1.1 建模辅助脚本
Matlab编程技巧:通过脚本获取/修改Simulink模块参数
Matlab编程技巧:通过脚本获取/修改Simulink信号线参数
Matlab编程技巧:通过脚本创建/修改Simulink数据字典
Matlab编程技巧:通过脚本获取/修改Stateflow参数
Matlab编程技巧:通过脚本创建Simulink模块、信号线
Matlab编程技巧:自定义Model Advisor检查规则
Matlab编程技巧:自定义Simulink菜单
Matlab编程技巧:通过脚本将Simulink模型生成代码
Matlab编程技巧:通过脚本导入Excel数据字典
2.1.2 文件处理
Matlab编程技巧:导入Excel表格
Matlab编程技巧:写入Excel表格
Matlab编程技巧:文本文件的读写
Matlab编程技巧:导入arxml文件
Matlab编程技巧:导入A2L文件
Matlab编程技巧:导入DBC文件
Matlab编程技巧:导入MDF文件
2.1.3 字符串处理
Matlab编程技巧:路径相关函数
Matlab编程技巧:正则表达式应用技巧
Matlab编程技巧:通过正则表达式解析DBC文件
Matlab编程技巧:通过脚本写入C代码内容
2.1.4 其他
Matlab编程技巧:自定义启动和关闭函数
Matlab编程技巧:打开模型时加载数据字典
Matlab编程技巧:A*算法仿真
Matlab编程技巧:通过Matlab管理git
2.2 Simulink配置
2.2.1 代码生成配置
Simulink代码生成:Embedded Coder配置
Simulink代码生成:目标硬件配置
Simulink代码生成:Optimization配置
Simulink代码生成:Code Style配置
Simulink代码生成:自定义cgt文件
Simulink代码生成:Step函数接口配置
Simulink代码生成:生成C++类
2.2.2 数据字典配置
Simulink代码生成:数据字典的建立、关联模型
Simulink代码生成:信号线、参数配置
Simulink代码生成:Storage Class配置
Simulink代码生成:自定义Storage Class配置
Simulink代码生成:AliasType配置
Simulink代码生成:枚举量配置
2.3 Simulink代码生成
Simulink代码生成:学习Simulink以及生成代码
Simulink代码生成: 基本数据类型
2.3.1 模块代码
Simulink代码生成: 基本模块的使用
Simulink代码生成: 延时模块及其代码
Simulink代码生成: Selector模块及其代码
Simulink代码生成: Assignment模块及其代码
Simulink代码生成: Saturation模块及其代码
Simulink代码生成: Relay模块及其代码
Simulink代码生成: MinMax模块及其代码
Simulink代码生成: CAN Pack模块及其代码
Simulink代码生成: Data Type Conversion模块及其代码
Simulink代码生成: 查表模块及其代码
Simulink代码生成: Switch模块及其代码
2.3.2 子系统代码
Simulink代码生成: 原子子系统及其代码
Simulink代码生成: 使能子系统及其代码
Simulink代码生成: If-Action子系统及其代码
Simulink代码生成: For Iterator子系统及其代码
Simulink代码生成: While Iterator子系统及其代码
Simulink代码生成: Simulink Function子系统及其代码
Simulink代码生成: Initialize Function子系统及其代码
Simulink代码生成: Model Reference及其代码
Simulink代码生成: 可变子系统及其代码
2.3.3 其他
Simulink代码生成: Bus信号及其代码
Simulink代码生成: Vector信号及其代码
Simulink代码生成: 调用Matlab函数
Simulink代码生成: 通过Stateflow调用外部C代码
Simulink代码生成: 通过Legacy Code Tool集成C函数
Simulink代码生成: 生成ASAP2文件
Simulink代码生成: 通过Matlab Function集成C函数
2.4 Simulink建模
Simulink建模:如何学习Simulink建模
Simulink建模:一阶滤波模型
Simulink建模:PID控制模型
Simulink建模:PID控制-串级PID
Simulink建模:PID控制-应用
Simulink建模:通过Chart模块进行多个周期调度
Simulink建模:简单状态机模型
Simulink建模:LKA系统功能状态机建模
Simulink建模:位运算
Simulink建模:CRC校验模型
2.5 集成与验证
2.5.1 软件集成
软件集成:Simulink与STM32联合开发
软件集成:Simulink与Arduino联合开发
2.5.2 MBD实战:机甲大师机器人控制
机甲大师机器人控制(一):概念与流程
机甲大师机器人控制(二):功能分析
机甲大师机器人控制(三):软件架构设计
机甲大师机器人控制(四):软件单元
机甲大师机器人控制(五):软件单元测试
机甲大师机器人控制(六):集成测试
机甲大师机器人控制(七):购买清单
2.5.3 MBD实战:BLDC控制实验
BLDC控制实验:方波、霍尔、开环、定速、正转
BLDC控制实验:方波、霍尔、开环、调速、正转
BLDC控制实验:方波、霍尔、开环、调速、正反转
3 学习笔记
3.1 编译器学习
Eclipse编译:创建一个AURIX工程
Makefile文件:Makefile介绍
Eclipse编译:打包静态库文件
Eclipse编译:由elf生成hex文件
预处理过程:概念及命令行
预处理过程:头文件
预处理过程:宏
3.2 C语言学习
C语言基础:MBD与C语言
C语言基础:static的使用
C语言基础:typedef的使用
C语言基础:头文件的使用
C语言基础:指针的使用
C语言基础:预处理指令的使用
C语言编程:坐标系的平移和旋转
C语言编程:最小二乘法拟合直线
Polyspace应用:Bug Finder检测代码漏洞
Polyspace应用:Simulink中的缺陷检查
3.3 其他学习
仿真与测试:通过From Workspace模块导入外部数据
仿真与测试:通过Signal Builder模块生成输入信号
仿真与测试:单元测试与Test Harness
建模规范:命名规范
建模规范:环境设置