stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植
背景介紹:
關于“虛擬串口” Sugar 發過一篇《RT-Thread 使用 CubeMX 的 VCP(虛擬串口)》
《軟件架構訓練計劃》選擇 CubeMX 生成代碼和 RT-Thread 內核及設備代碼的原因是:給小白鋪路,減小“多層次”學習內容給新人帶來的壓力。
按 《怎樣掌握 RT-Thread(RTOS 該怎么學)》中所述,訓練選擇 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 ? ? ? ?
一、加入編譯的文件
二、RTT新加入的文件(來自 RT-Thread 官方 master 源碼)
三、CubeMX 生成的裸機代碼有哪些改動
代碼級移植有啥好處
寫軟件最基本的兩件事:一、寫代碼;二、代碼文件。
當想到“這個軟件究竟是怎么回事兒”這個問題的時候,要直接回到最基本的兩個點上去找答案。
一、對學習的好處:
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、《軟件架構訓練計劃》
2、開源基于 RT-Thread 的麥輪車項目。該項目用最簡單易學的算法、最簡單易學的架構將編程的三大部分(邏輯、算法、參數)從功能上統一起來,同時在代碼管理(功能設計和文件管理)上獨立分離。
PS
現在好的開源項目太多了,Sugar 認為下一個時代值得探索的方向之一是:如何讓初學者能快速接入優秀的開源項目。
當下大部分開源項目對初學者來講都不算太友好:不是代碼多就是算法難,又或者是層次高。也正是因為“多”、“難”和“復雜”才突顯了對優秀架構思想的需求。但是優秀的架構思想不僅僅是為“多”、“難”和“復雜”服務的,好思想對簡單項目也適用。Sugar 在 github 貢獻融入優秀思想的簡單項目,目的是:讓小白先長“老鳥”的心,減少積累“量變”的時間,推進“質變”速度。
對于 Sugar 的在線一對一付費輔導,詳情見公眾號“關于我”頁面。這里 Sugar 補充幾點:
1、每個付費學員最多提供累積 6 小時的入門輔導(目前大部分是選 3 個 2 小時這樣的搭配)。
2、再次強調有關推文內容的問題推薦在 github 上寫 issue,開放平臺更容易獲得答案。
3、微信加好友問問題的,請多打幾個字說清楚問題(只甩 Sugar 一個截圖啥也不說,Sugar 一臉蒙圈回答不了)。
Sugar 鼓勵大家要有探索精神,自主學習提高。
關注作者
歡迎掃碼關注我的公眾號MultiMCU EDU。
提示:在公眾號“關于我”頁面可加作者微信好友。
喜歡本文求點贊,有打賞我會更有動力。
總結
以上是生活随笔為你收集整理的stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 多元线性回归_Python
- 下一篇: fastreport文本字数太多换行_F