【資料圖】
前不久,廈門感芯科技的朋友寄給我?guī)滋?u>單片機(MC3172)板子,讓我玩玩。 收到貨當(dāng)天我跑了下例程試玩了一下,很有特點,和普通單片機大有不同。 最近空閑一點,又仔細研究了一下,感覺還不錯,所以特意寫一篇文章分享一下。
它(MC3172)有什么特點?這款 MC3172 單片機與我們使用的普通單片機有很多相同之處,比如包含GPIO、UART、SPI、USB、 CAN等常見外設(shè)。但它有一個非常獨特的功能:它是基于 RISC-VRV32IMC 指令集的并行多線程實時處理器。什么意思呢?它具備 RTOS的多線程功能,但它不是通過常規(guī)的 RTOS 軟件調(diào)度實現(xiàn),而是硬件級實時響應(yīng), 無需中斷服務(wù)程序。MC3172 最高支持 200MHz 主頻,最多支持 64 個線程。 其中,線程的工作頻率和堆棧空間可以通過“圖形化”工具進行配置: 這種圖形化的工具,新手可以快速上手,做項目可以快速搭建一個項目工程。 關(guān)于 MC3172 單片機更多介紹和特性,我這里就不再詳細介紹了。 附一張數(shù)據(jù)手冊截圖,包含主要特性: 挑戰(zhàn) RTOS上面介紹了 MC3172 單片機的獨特功能就是并行多線程實時處理器,它對標的就是 RTOS。 目的就是解決 RTOS 開發(fā)過程中底層繁雜的移植過程,調(diào)度耗時等這些問題,通過底層硬件級實時響應(yīng),能做到真正的“實時操作”。
void thread0_main(void){ while(1) { ///應(yīng)用代碼 }}void thread1_main(void){ while(1) { ///應(yīng)用代碼 }}void thread2_main(void)void thread3_main(void)······我們都知道 RTOS 底層調(diào)度線程會耗時數(shù)us(不同處理器耗時情況不同),但是 MC3172 處理器可以認為是0 耗時,就是說這些線程是以各自穩(wěn)定的頻率并行在運行,沒有切換開銷和抖動。 同時,外設(shè)響應(yīng)數(shù)據(jù)也是更加實時。比如:UART串口接收外部數(shù)據(jù),能多個線程并行接收并響應(yīng)串口數(shù)據(jù)。(普通單片機一般是中斷優(yōu)先級,會“暫?!表憫?yīng)低優(yōu)先級串口數(shù)據(jù),阻塞情況下,還會丟失數(shù)據(jù)) 線程之間通信可通過“共享數(shù)據(jù)空間”實現(xiàn)實時傳輸,簡單一點就是全局變量,復(fù)雜一點就是通過封裝線程接口實現(xiàn)數(shù)據(jù)傳輸。 總結(jié):MC3172 并行多線程實時性比市面常見 RTOS 更實時。新手體驗我拿到 MC3172 開發(fā)板,上手體驗整體還是不錯,開發(fā)難度相對還是比較低,有C語言、單片機基礎(chǔ)的人,基本就能很快上手。 1.開發(fā)環(huán)境MC3172 處理器使用國產(chǎn)集成開發(fā)環(huán)境:MounRiver Studio. MounRiver Studio 可能有些朋友不了解,但使用過南京沁恒MCU的讀者應(yīng)該比較了解。 不了解也沒關(guān)系,MounRiver Studio和許多 IDE 有一個共性,就是基于 Eclipse 環(huán)境,還是原來的配方,還是熟悉的操作界面。 2.配置和下載工具MC3172 有一個“線程配置工具”,可以分配存儲器、配置時鐘源、線程頻率、線程堆??臻g等。 還有一個編程下載工具,支持常規(guī)的下載(編程)、擦除、查詢等操作。 3.Demo例程官方提供了一些Demo例程,供大家快速上手: 4.寫代碼如果覺得一步一步創(chuàng)建工程比較麻煩,可以直接使用官方Demo,在其基礎(chǔ)上添加自己的應(yīng)用代碼。 64個線程,在“線程配置工具”配置需要用的線程,不需要的就默認“空閑”。 然后,在Demo中添加自己的應(yīng)用代碼:
void thread0_main(void){ while(1){ //線程 0 應(yīng)用代碼 } thread_end();}void thread1_main(void){ while(1){ //線程 1 應(yīng)用代碼 } thread_end();}最后MC3172單片機是我見到的國內(nèi)非常獨特的處理器,它打破了“傳統(tǒng)”,面向RTOS應(yīng)用,但又解決了RTOS存在的一些問題。 如果你使用RTOS,在開發(fā)過程遇到了因為線程間調(diào)度延時比較大的問題,不妨試試這款單片機。
審核編輯:湯梓紅
標簽: