stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植
背景介紹:
關(guān)于“虛擬串口” Sugar 發(fā)過(guò)一篇《RT-Thread 使用 CubeMX 的 VCP(虛擬串口)》
《軟件架構(gòu)訓(xùn)練計(jì)劃》選擇 CubeMX 生成代碼和 RT-Thread 內(nèi)核及設(shè)備代碼的原因是:給小白鋪路,減小“多層次”學(xué)習(xí)內(nèi)容給新人帶來(lái)的壓力。
按 《怎樣掌握 RT-Thread(RTOS 該怎么學(xué))》中所述,訓(xùn)練選擇 CubeMX 生成代碼和 RT-Thread 代碼結(jié)合,一個(gè)目的是:在了解 RT-Thread 的同時(shí)補(bǔ)好裸機(jī)編程的基礎(chǔ)。
然而,訓(xùn)練歸訓(xùn)練,真正做代碼 Sugar 還是追求代碼統(tǒng)一的。最終 Sugar 開(kāi)源的訓(xùn)練代碼會(huì)越來(lái)越靠近 RT-Thread,并且未來(lái)目標(biāo)是帶讀者回歸 RT-Thread 大集體中去。
虛擬串口是 Sugar 特別常用的調(diào)試手段,先從這個(gè)功能的代碼級(jí)移植開(kāi)始邁出回歸 RT-Thread 的第一步。
虛擬串口的幾個(gè)重要文件
usb_common.h、usb_device.h、ringbuffer.h
ringbuffer.c、core.c、usbdevice.c、cdc_vcom.c
未來(lái) Sugar 會(huì)把 Git 的 Log 記錄做成一本“活”的參考書(shū),不會(huì)使用 Git 的讀者可以在 MultiMCU EDU 公眾號(hào)內(nèi)回復(fù) git 得到 Sugar 錄的教學(xué)視頻。
本篇代碼的 github 地址是:https://github.com/code-structure-train/pandora_vcom ? ? ? ?
一、加入編譯的文件
二、RTT新加入的文件(來(lái)自 RT-Thread 官方 master 源碼)
三、CubeMX 生成的裸機(jī)代碼有哪些改動(dòng)
代碼級(jí)移植有啥好處
寫軟件最基本的兩件事:一、寫代碼;二、代碼文件。
當(dāng)想到“這個(gè)軟件究竟是怎么回事兒”這個(gè)問(wèn)題的時(shí)候,要直接回到最基本的兩個(gè)點(diǎn)上去找答案。
一、對(duì)學(xué)習(xí)的好處:
1、明確目標(biāo)功能的代碼;
2、熟悉 RT-Thread 代碼文件,能夠體會(huì)“分”得好而產(chǎn)生的“管理”的美;
3、鍛煉讀代碼能力,從優(yōu)秀代碼中學(xué)到優(yōu)秀架構(gòu)的實(shí)現(xiàn)方法(要“悟”才能收獲)。二、對(duì)產(chǎn)品的好處:
1、明確 RT-Thread 目標(biāo)功能代碼,是將目標(biāo)功能整合進(jìn)自己產(chǎn)品的第一步;
2、對(duì)于中小型項(xiàng)目,往往幾個(gè)文件就可以搞定一個(gè)功能,省去配置 Kconfig 和 Scons 的麻煩。
項(xiàng)目代碼管理
中小型項(xiàng)目:一顏一心。
中大型項(xiàng)目:一顏多心。
一、中小型
小型、部分中型項(xiàng)目通常不輕易換硬件平臺(tái),因此叫“一心”。軟件項(xiàng)目核心是代碼,STM32 硬件平臺(tái)在當(dāng)下完全可以做到:只維護(hù)代碼,不維護(hù)項(xiàng)目工程。對(duì)于小型、中型項(xiàng)目,Sugar 自己使用 project-generator 來(lái)維護(hù)軟件,因此其自動(dòng)生成工程的依賴文件(yaml 配置文件)就是代碼管理的“一顏”。
本文第一張圖就是 yaml 文件的對(duì)比,一眼看出工程所需的全部文件和文件位置。二、中大型
部分中型、大型項(xiàng)目很多都是要適配多種平臺(tái)的,以 RT-Thread 為例,其除了 STM32 之外還支持很多其他硬件平臺(tái),因此叫“多心”。這種情況下想讓在不同平臺(tái)上使用相同習(xí)慣管理代碼,就會(huì)復(fù)雜很多。官方使用的 env 環(huán)境就是借助了 KConfig 和 Scons,相應(yīng)的配置文件分布在代碼當(dāng)中。
env 的 menuconfig 就是被統(tǒng)一好的“一顏”,通過(guò)簡(jiǎn)單的配置就可以操控大型項(xiàng)目,用著爽。
Sugar 給小白的 RTT 入門之路
只提要點(diǎn),詳細(xì)內(nèi)容單獨(dú)推文。
一、基本原則:
1、從中小型項(xiàng)目入手,集中精力搞懂代碼(包括 RTT 內(nèi)核、設(shè)備驅(qū)動(dòng)和代碼管理)。
2、使用 project-generator 進(jìn)行項(xiàng)目管理,項(xiàng)目管理配置文件獨(dú)立,不分散在代碼里,對(duì)初學(xué)者非常友好(剛剛學(xué)習(xí),不要分心去搞 KConfig 和 Scons)。
二、做了哪些:
1、《軟件架構(gòu)訓(xùn)練計(jì)劃》
2、開(kāi)源基于 RT-Thread 的麥輪車項(xiàng)目。該項(xiàng)目用最簡(jiǎn)單易學(xué)的算法、最簡(jiǎn)單易學(xué)的架構(gòu)將編程的三大部分(邏輯、算法、參數(shù))從功能上統(tǒng)一起來(lái),同時(shí)在代碼管理(功能設(shè)計(jì)和文件管理)上獨(dú)立分離。
PS
現(xiàn)在好的開(kāi)源項(xiàng)目太多了,Sugar 認(rèn)為下一個(gè)時(shí)代值得探索的方向之一是:如何讓初學(xué)者能快速接入優(yōu)秀的開(kāi)源項(xiàng)目。
當(dāng)下大部分開(kāi)源項(xiàng)目對(duì)初學(xué)者來(lái)講都不算太友好:不是代碼多就是算法難,又或者是層次高。也正是因?yàn)椤岸唷薄ⅰ半y”和“復(fù)雜”才突顯了對(duì)優(yōu)秀架構(gòu)思想的需求。但是優(yōu)秀的架構(gòu)思想不僅僅是為“多”、“難”和“復(fù)雜”服務(wù)的,好思想對(duì)簡(jiǎn)單項(xiàng)目也適用。Sugar 在 github 貢獻(xiàn)融入優(yōu)秀思想的簡(jiǎn)單項(xiàng)目,目的是:讓小白先長(zhǎng)“老鳥(niǎo)”的心,減少積累“量變”的時(shí)間,推進(jìn)“質(zhì)變”速度。
對(duì)于 Sugar 的在線一對(duì)一付費(fèi)輔導(dǎo),詳情見(jiàn)公眾號(hào)“關(guān)于我”頁(yè)面。這里 Sugar 補(bǔ)充幾點(diǎn):
1、每個(gè)付費(fèi)學(xué)員最多提供累積 6 小時(shí)的入門輔導(dǎo)(目前大部分是選 3 個(gè) 2 小時(shí)這樣的搭配)。
2、再次強(qiáng)調(diào)有關(guān)推文內(nèi)容的問(wèn)題推薦在 github 上寫 issue,開(kāi)放平臺(tái)更容易獲得答案。
3、微信加好友問(wèn)問(wèn)題的,請(qǐng)多打幾個(gè)字說(shuō)清楚問(wèn)題(只甩 Sugar 一個(gè)截圖啥也不說(shuō),Sugar 一臉蒙圈回答不了)。
Sugar 鼓勵(lì)大家要有探索精神,自主學(xué)習(xí)提高。
關(guān)注作者
歡迎掃碼關(guān)注我的公眾號(hào)MultiMCU EDU。
提示:在公眾號(hào)“關(guān)于我”頁(yè)面可加作者微信好友。
喜歡本文求點(diǎn)贊,有打賞我會(huì)更有動(dòng)力。
總結(jié)
以上是生活随笔為你收集整理的stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 多元线性回归_Python
- 下一篇: fastreport文本字数太多换行_F