99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

Rust 嵌入式學習會遇到的挑戰

語法和基本概念

Rust 的基本語法的入門并不難,如常見的基礎變量定義、表達式、判斷邏輯、循環邏輯、函數等基礎語法基本上與其他語言相似,看過一兩個代碼后就能習慣 Rust 的語法。因此基礎語法并不會有太多障礙。熟悉基礎語法后就能編寫一些簡單命令工具、數據處理工具等,甚至基于一些開源GUI框架編寫一些GUI應用。

對于 Rust 高級的知識,如范型、異步、生命周期等概念則需要去深入理解。Rust 的學習曲線因人而異,不同背景的人對于 Rust 語言的一些概念理解接受速度不同。比如

  • C 語言背景,對堆、棧、生命周期的概念理解可能比較快,但對范型、范式編程、異步Future、零成本抽象等概念理解就稍微難。
  • 對于Java:對 trait,范型、錯誤處理、并發編程的理解比較快,而對堆棧概念理解較弱
  • 對于Python來說,模塊化編程、類概念有優勢。

陳天老師有個總結 Rust 學習曲線圖,可以看出 Rust 從入門到精通需要經過三個奔潰時刻,在學習的過程中會發現對 Rust 的掌握不深,不要擔心,在嵌入式 Rust 開發中,通常不會要求完全掌握這些 Rust 技能,在日常學習中,通過與編譯器不斷斗爭中,會慢慢加深對這些概念的理解,直至豁然開朗。

Rust 學習之路

單片機外設使用

在熟悉 Rust 基礎語法后,理解一些常用庫的的使用、常用開源 crate 的功能后,就可以開始入門單片機的外設開發。

由于目前嵌入式 Rust的生態并不太豐富,大多數的芯片公司僅提供傳統的 C 版本的外設庫,可喜的是,目前仍然有一些常見的單片機已經提供了 Rust 的外設庫,如 STM32ESP32GD32NRF52XX 等。如果你喜歡的單片機沒有提供 Rust 外設庫,也不用擔心,可以自己編寫一些外設庫,甚至也能使用寄存器級別的開發(請放心,哪怕是寄存器級別的開發,也能保證一定安全和高效, 比同等級別的 C 寄存器級的開發簡單更多)。

個人建議可以從已經支持的 Rust 外設庫的單片機入門,如NRF52840STM32rp2040等。通過調用廠商提供的外設庫接口,快速熟悉 Rust 的編程風格、API風格,感受與 C 嵌入式編程的差異。

在拿到單片機開發板后,快速根據庫文檔搭建編譯和下載環境,然后打印hello world、點亮 led 燈。這些 Rust 例程跑起來的難度也許比C的例程更加低, 還算比較新手友好。在這個階段的學習中,你會發現 Rust 外設驅動庫的實現方式與C相差非常大,甚至你有很多疑問,不太明白為什么驅動要這樣設計,不明白不用太焦慮, 這一階段你只要能了解外設接口怎么使用即可,能讓各個外設正常的工作起來。

在下一個階段中,你需要去了解pac(外設訪問控制接口)的使用,制作原理、可以嘗試自己利用 svd2rust 工具自己制作一個單片機的 pac crate。然后自己嘗試通過 pac crate 接口來讀寫芯片的寄存器。然后可以了解單片機是怎么從復位后運行到 Rust 的 main函數,具體你需要去閱讀 cortex-m-rtcortex-m。你會發現 Rust 的啟動過程竟然與C如此相似,但讓一個單片機能運行起來更加簡單。如果你很細心,你會繼續探究 build.rs 代碼的功能和編寫邏輯,發現 Rust 工具的奧秘,從而能基于這些知識來開啟下一個階段。

在第三個階段中,你可以嘗試自己去編寫一些芯片的 Rust 外設驅動庫,如果國產的一些芯片,先模仿NRF52840ESP32STM32等芯片的庫,再次感受驅動設計的思想。開始可以基于一些簡單的芯片,如 Cortex-M0 內核的芯片,方便快速完成整個芯片驅動庫的編寫。最后將你編寫的Rust 外設庫開源出去,通過大家的意見、不斷改善和優化,

生態

很多人對 Rust 嵌入式的生態持較悲觀的態度,認為 Rust 目前沒有太多的輪子,需要自己去造。然后我個人在兩年的 Rust 嵌入式開發中感受到,目前 Rust 的生態已經足夠大部分的工程實踐了。在crate.io 上有大量優秀的開源 crate 能被工程中所使用。一些單片機的外設庫、傳感器驅動庫、LCD驅動、圖形顯示框架、IIC/SPI/UART 通信驅動、操作系統等都有比較好的開源 crate, 且質量還不錯, 加上 Rust 官方對嵌入式的支持,開放了一些抽象庫,讓驅動移植變得非常簡單便捷,例如傳感器庫能輕松的在不同單片機中使用。

另外對于書籍文檔類資源,Rust 嵌入式也開始有很多詳細的公開資料,如ESP32 的 rust 資料非常詳細,足以支撐 Rust 嵌入式的學習和開發了。

總結

對于這些挑戰,其實跨越他們并不困難,一定要有信心去面對,同時也要適當放下困難、不要力圖一下理解某些概念,要講究循序而漸進,自然豁然而開朗。

附錄

svd2rust

awesome-embedded-rust

cortex_m_quickstart

Embedded Rust on Espressif

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 2
關注 14
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 一区不卡 | 蜜臀av免费一区二区三区久久乐 | 丰满的熟女爽死你 | 国产成人精品区一区二区不卡 | 伊人狠狠干 | 日韩在线看片免费人成视频播放 | 亚洲第一香蕉视频 | 狠狠色丁香婷婷综合潮喷 | 青青青青草视频 | 综合自拍亚洲综合图区高清 | 青青草视频4 | 国产一级大毛片 | 特级毛片爽WWW免费版 | 91免费看网站 | 久久99久久99精品免视看看 | 韩国激情高潮无遮挡hd | 久久精品人妻无码专区 | 爱情岛论坛自拍亚洲品质极速福利 | av人摸人人人澡人人超碰小说 | 成人免费在线视频播放 | 666av视频导航| 日本三级美女 | 欧美区国产区 | 国产精品久久久久久久久吹潮 | 国产无套激情在线视频 | 一区二区三区精品视频免费播放 | 裸体女人高潮毛片扒开一一区 | 久久婷婷五月综合色首页 | 欧美日韩免费观看视频 | 国产精品香蕉在线观看网 | 蜜桃视频网站在线观看 | 国产精品天干天干 | 亚洲综合成人婷婷五月在线观看 | 精品日产一区二区三区手机 | 91男生福利| 日韩视频区| 欧美xvideosexo另类| 久久天堂av综合色无码专区 | 奇米首页777 | 乱爱性全过程免费视频 | 狼人无码中文在线观看 |