RT-Thread在专用设备上的移植PortingRT-ThreadtoCustomPlatforms.河南理工大学计算机协会申士尧
RT-Thread在专用设备上的移植PortingRT-ThreadtoCustomPlatforms.河南理工大学计算机协会申士尧大学生计算机协会历任硬件部副部,理事会会长自建家庭实验室,用于探索各类感兴趣的技术领域。家庭实验室自备基础的电子实验设备及打印机,实现家庭本地的电子产品设计、测试与制作。熟悉AD、立创的使用,熟悉Pcb设计及焊接测试shapr3D建模(平板快速建模),熟悉3D打印自学Zemax光学设计基础,FPGA基础等参与过智能车竞赛,负责英飞凌平台下位机的pcb设计、程序移植,车架维护。兴趣广泛的个人技术爱好者RTT初学者
项目背景开发环境介绍任务协作安排裸机代码解读01.02.03.04.CONTENT行业PPT模板/hangye/总结04.RTT初步移植04.移植经历分享
01项目背景介绍
背景介绍101主控:GD32F105VCT6选择RTThread的原因:裸机代码维护和升级功能上不便RTT不仅仅是一个实时内核,还具备丰富的中间层组件满足后续拓展模块化设计,便于多人协作分工协议:Modbus
202Modbus简介4工业自动化、能源管理、环境监测、物联网扩展应用场景5agile_modbus软件包FreeModbus协议栈RT-Thread生态6学习内容丰富,不再赘述学习资料丰富1采用单主机-多从机模式,主机主动发起请求,从机响应。主从架构2四种典型帧。功能码定义操作类型,数据部分承载具体信息。数据帧结构3RTU、ASCII、TCP/IP等多传输模式
02开发环境介绍
101开发环境介绍VSCodeRTT-studio插件C/C++、Cortex调试Git插件,SCons构建工具Env部署方便,工具丰富Openocd提供针对嵌入式设备的调试、系统编程和边界扫描功能。使用Python脚本编写配置文件,让开发人员可选择的进行项目文件的构建SCons
03任务安排
102分配任务,协力完成工作安排
04裸机代码解读解读
101裸机代码特点定义与核心概念典型代码结构(以赛曙科技为例)裸机代码直接运行在硬件上,不依赖操作系统,需手动管理处理器状态、内存、外设等资源。它通常由启动代码、主循环和中断服务程序(ISR)构成,适用于资源有限的嵌入式系统。轮询系统:主循环依次执行任务,无中断介入。前后台系统:中断触发后台任务标志位,主循环检测并执行。时间片轮询:通过定时器中断实现多任务调度,优化CPU利用率。
2裸机代码特点典型代码结构(以赛曙科技为例)轮询系统:主循环依次执行任务,无中断介入。前后台系统:中断触发后台任务标志位,主循环检测并执行。时间片轮询:通过定时器中断实现多任务调度,优化CPU利用率。
3裸机代码特点
4分析本次任务代码
5分析本次任务代码在这里定义却不在这里使用
6梳理本次任务代码我们要将对应硬件剥离出来,设置好接口,供主线程调用。我们需要创建modbus接收和发送任务,数据更新推送任务我们需要编写供modbus调用的rtt串口驱动,矩阵键盘扫描驱动,lcd显示驱动裸机代码梳理所以:
05RTT初步移植
1BSP的移植移植大致关键步骤基于同厂商不同型号的移植视频教程将同型号MCU板子的BSP包board,application内的定制文件剔除。Kconfig剔除增添部分。不同型号MCU板子的BSP包涉及libraries的修改,scons脚本更改更正Keil内配置关闭menuconfig内上一个板子开启的奇奇怪怪的选项处理报错和警告,跑通内核。
2BSP的移植基于同厂商不同型号的移植视频教程
3Kconfig编写与Scons构建想要达成的效果驱动文件要条理分明,不能全塞进一个文件或者全部都在一个文件夹。受Kconfig管理配置可配置参数,类似于BIOS
4Kconfig编写与Scons构建想要达成的效果Scons编写脚本,和Kconfig绑定。Kconfig开启对应选项,加入编译启用硬件。
5初步的裸机驱动切割想要达成的效果驱动之间互不影响,只有对硬件的操作,提供对外的数据接口,但不直接操作外部别的函数的数据。将混杂在驱动文件内,有关执行矿机任务程序部分剖离出来。剖离的过程便是梳理程序的过程,为后续重构代码打下基础。一切报错都有迹可寻,要会找错误
6驱动规范化纵向看是各类派生继承关系。从下到上不断抽象、屏蔽下层差异,体现了面向对象的抽象的思想。子类受到父类的接口约束,子类各自实现父类提供的统一接口,又体现了面向接口编程的思想。从驱动层到驱动框架层,再从设备驱动框架层到IO设备管理接口层,