Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread STM32 虚拟串口代码级移植
发布于 2019-11-09 14:53:26 浏览:1363
订阅该版
[tocm] * 本帖最后由 Sugar 于 2019-11-9 14:56 编辑 * > 背景介绍: > 关于“虚拟串口” Sugar 发过一篇[《RT-Thread 使用 CubeMX 的 VCP(虚拟串口)》](https://mp.weixin.qq.com/s/szryD2jNI1YHg0OeZ135cA) > [《软件架构训练计划》](https://mp.weixin.qq.com/s/6wM1kMKWpOJxBatzTNxShQ)选择 CubeMX 生成代码和 RT-Thread 内核及设备代码的原因是:给小白铺路,减小“多层次”学习内容给新人带来的压力。 > 按 [《怎样掌握 RT-Thread(RTOS 该怎么学)》](https://mp.weixin.qq.com/s/nrbyRCrxmeu1hPdDCFf3Yg)中所述,训练选择 CubeMX 生成代码和 RT-Thread 代码结合,一个目的是:在了解 RT-Thread 的同时补好裸机编程的基础。 > 然而,训练归训练,真正做代码 Sugar 还是追求代码统一的。最终 Sugar 开源的训练代码会越来越靠近 RT-Thread,并且未来目标是带读者回归 RT-Thread 大集体中去。 > 虚拟串口是 Sugar 特别常用的调试手段,先从这个功能的代码级移植开始迈出回归 RT-Thread 的第一步。 虚拟串口的几个重要文件 --- > usb_common.h、usb_device.h、ringbuffer.h > ringbuffer.c、core.c、usbdevice.c、cdc_vcom.c 未来 Sugar 会把 Git 的 Log 记录做成一本“活”的参考书,不会使用 Git 的读者可以在 MultiMCU EDU 公众号内回复 git 得到 Sugar 录的教学视频。 本篇代码的 github 地址是: https://github.com/code-structure-train/pandora_vcom 一、加入编译的文件 ![](https://github.com/SuWeipeng/img/raw/master/12_RT-Thread/vcom_1.jpg) 二、RTT新加入的文件(来自 RT-Thread 官方 master 源码) ![](https://github.com/SuWeipeng/img/raw/master/12_RT-Thread/vcom_2.jpg) 三、CubeMX 生成的裸机代码有哪些改动 ![](https://github.com/SuWeipeng/img/raw/master/12_RT-Thread/vcom_3.jpg) 代码级移植有啥好处 --- > 写软件最基本的两件事:一、写代码;二、代码文件。 > 当想到“这个软件究竟是怎么回事儿”这个问题的时候,要直接回到最基本的两个点上去找答案。 一、对学习的好处: 1、明确目标功能的代码; 2、熟悉 RT-Thread 代码文件,能够体会“分”得好而产生的“管理”的美; 3、锻炼读代码能力,从优秀代码中学到优秀架构的实现方法(要“悟”才能收获)。 二、对产品的好处: 1、明确 RT-Thread 目标功能代码,是将目标功能整合进自己产品的第一步; 2、对于中小型项目,往往几个文件就可以搞定一个功能,省去配置 Kconfig 和 Scons 的麻烦。 项目代码管理 --- > 中小型项目:一颜一心。 > 中大型项目:一颜多心。 一、中小型 小型、部分中型项目通常不轻易换硬件平台,因此叫“一心”。软件项目核心是代码,STM32 硬件平台在当下完全可以做到:只维护代码,不维护项目工程。对于小型、中型项目,Sugar 自己使用 project-generator 来维护软件,因此其自动生成工程的依赖文件(yaml 配置文件)就是代码管理的“一颜”。 本文第一张图就是 yaml 文件的对比,一眼看出工程所需的全部文件和文件位置。 二、中大型 部分中型、大型项目很多都是要适配多种平台的,以 RT-Thread 为例,其除了 STM32 之外还支持很多其他硬件平台,因此叫“多心”。这种情况下想让在不同平台上使用相同习惯管理代码,就会复杂很多。官方使用的 env 环境就是借助了 KConfig 和 Scons,相应的配置文件分布在代码当中。 env 的 menuconfig 就是被统一好的“一颜”,通过简单的配置就可以操控大型项目,用着爽。 Sugar 给小白的 RTT 入门之路 --- > 只提要点,详细内容单独推文。 一、基本原则: 1、从中小型项目入手,集中精力搞懂代码(包括 RTT 内核、设备驱动和代码管理)。 2、使用 project-generator 进行项目管理,项目管理配置文件独立,不分散在代码里,对初学者非常友好(刚刚学习,不要分心去搞 KConfig 和 Scons)。 二、做了哪些: 1、[《软件架构训练计划》](https://mp.weixin.qq.com/s/6wM1kMKWpOJxBatzTNxShQ) 2、开源基于 RT-Thread 的麦轮车项目。该项目用最简单易学的算法、最简单易学的架构将编程的三大部分(逻辑、算法、参数)从功能上统一起来,同时在代码管理(功能设计和文件管理)上独立分离。 PS --- 现在好的开源项目太多了,Sugar 认为下一个时代值得探索的方向之一是:如何让初学者能快速接入优秀的开源项目。 当下大部分开源项目对初学者来讲都不算太友好:不是代码多就是算法难,又或者是层次高。也正是因为“多”、“难”和“复杂”才突显了对优秀架构思想的需求。但是优秀的架构思想不仅仅是为“多”、“难”和“复杂”服务的,好思想对简单项目也适用。Sugar 在 github 贡献融入优秀思想的简单项目,目的是:让小白先长“老鸟”的心,减少积累“量变”的时间,推进“质变”速度。 Sugar 鼓励大家要有探索精神,自主学习提高。 关注作者 --- 欢迎扫码关注我的公众号`MultiMCU EDU`。 ![](https://github.com/SuWeipeng/img/raw/master/gongzonghao.jpg) ### `提示:在公众号“关于我”页面可加作者微信好友。` ### 喜欢本文求点赞,有打赏我会更有动力。
查看更多
1
个回答
默认排序
按发布时间排序
fc55726298
2019-11-10
这家伙很懒,什么也没写!
软文广告,公众号?
撰写答案
登录
注册新账号
关注者
0
被浏览
1.4k
关于作者
Sugar
这家伙很懒,什么也没写!
提问
3
回答
3
被采纳
0
关注TA
发私信
相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部