1 总目录说明
博主会定期更新博客,记录自己工作、学习过程中的一些思考。
对于理论性的内容,博主会根据自己的理解表述出来,如果理解有误,欢迎指出。对于应用性的内容(比如模型仿真、生成代码、脚本编程),博主会尽量把流程写清楚,并展示脚本运行结果或生成代码结果,达到一个可验证和可复现的效果。
2 基于模型的设计
这一部分博客的内容为基于模型的设计,工具链为Mathworks公司的Matlab,2025年前使用的版本为2018a,2025年开始使用2024b。
不同专栏的章节的侧重点不同:
-
Matlab编程技巧
本专栏介绍一些Simulink建模方法,需要一定的Simulink建模基础。文章会首先提出建模需求,再用Simulink实现。 -
Simulink相关配置
本专栏介绍一些常用的Simulink配置,包括数据字典配置和生成代码配置,这些配置可以优化代码生成,辅助建模。 -
Simulink建模基础
本专栏研究Simulink的基本使用方法,包括模块、信号线、子系统等,通过生成C代码研究这些部分更底层的逻辑。 -
Simulink算法建模
本专栏介绍一些Simulink建模方法,需要一定的Simulink建模基础。文章会首先提出建模需求,再用Simulink实现。 -
Simulink嵌入式开发实战
通过实战案例深入讲解Simulink在嵌入式开发中的应用。首先会提出需求,然后通过Simulink完成需求的应用层软件,接着将这些通过编译后烧到控制器中进行验证。
另外,最近在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建模基础
2.3.1 基本模块
Simulink建模基础:基本模块的使用
Simulink建模基础:基本数据类型
Simulink建模基础:基本算数运算
Simulink建模基础:数学类运算
Simulink建模基础:关系运算与逻辑运算
2.3.2 常用模块
Simulink建模基础: 延时模块及其代码
Simulink建模基础: Selector模块及其代码
Simulink建模基础: Assignment模块及其代码
Simulink建模基础: Saturation模块及其代码
Simulink建模基础: Relay模块及其代码
Simulink建模基础: MinMax模块及其代码
Simulink建模基础: CAN Pack模块及其代码
Simulink建模基础: Data Type Conversion模块及其代码
Simulink建模基础: 查表模块及其代码
Simulink建模基础: Switch模块及其代码
2.3.3 常用子系统
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 Simulink嵌入式开发实战
2.5.1 软件集成
软件集成:Simulink与STM32联合开发
软件集成:Simulink与Arduino联合开发
2.5.2 LED灯闪烁实验
LED灯闪烁实验:实验介绍
LED灯闪烁实验:CubeMX配置底层软件
LED灯闪烁实验:Simulink应用层开发
LED灯闪烁实验:代码集成
2.5.3 直流减速电机控制实验
直流减速电机控制实验:实验介绍
直流减速电机控制实验:CubeMX配置底层软件
直流减速电机控制实验:Simulink应用层开发(1)
直流减速电机控制实验:Simulink应用层开发(2)
直流减速电机控制实验:Simulink应用层开发(3)
直流减速电机控制实验:代码集成与硬件验证
2.5.4 MBD实战:机甲大师机器人控制
机甲大师机器人控制(一):概念与流程
机甲大师机器人控制(二):功能分析
机甲大师机器人控制(三):软件架构设计
机甲大师机器人控制(四):软件单元
机甲大师机器人控制(五):软件单元测试
机甲大师机器人控制(六):集成测试
机甲大师机器人控制(七):购买清单
2.5.5 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
建模规范:命名规范
建模规范:环境设置