STM32MP157A-DK1開發(fā)板評(píng)測(cè)
ST公司的產(chǎn)品雖然本身就很豐富, 但是最有人氣, 對(duì)市場(chǎng)影響力最大的當(dāng)然是Cortex-M系列. 從幾K Flash的Cortex-M0系列到高性能的Cortex-M7系列, 還穿插著無線系列,低功耗系列, 外掛SPI Flash作為Code空間的跨界系列, 幾乎都是相應(yīng)市場(chǎng)上的佼佼者。
作為藍(lán)蝴蝶粉的一員, 我也總結(jié)過STM32脫穎而出的原因:
1. 以市場(chǎng)中心的產(chǎn)品迭代速度, 敏銳地抓住了Cortex-M內(nèi)核替代8位,16位內(nèi)核的機(jī)會(huì)。
2. 產(chǎn)品多樣性, 各種應(yīng)用場(chǎng)景幾乎都有針對(duì)性的產(chǎn)品。
3. 開發(fā)生態(tài)建立, 包括軟件庫的匠心制作, 開發(fā)平臺(tái)的革命性創(chuàng)新(CubeMX這個(gè)工具節(jié)省了我大量開發(fā)時(shí)間)。
這中間第三點(diǎn)最重要, 算是競(jìng)爭(zhēng)力壁壘, 應(yīng)該是能占據(jù)市場(chǎng)第一的最主要的因素。
當(dāng)然STM32MP1推出之前, ST公司在MPU市場(chǎng)是缺位的. 之前最高性能的H7系列可以跑到400多MHz, 可以外掛SPI Flash。但是不能運(yùn)行復(fù)雜操作系統(tǒng), 天花板由Cortex-M內(nèi)核本身的定位決定, 依然不能算是MPU。所以MP1系列的推出, 填補(bǔ)了這一缺憾。因?yàn)镾T公司在STM32產(chǎn)品上積攢的開發(fā)生態(tài)經(jīng)驗(yàn)和優(yōu)勢(shì), 使得程序員們對(duì)MP1抱有更高的期望。要知道嵌入式芯片從來不是以絕對(duì)的硬件參數(shù)論英雄的。我們見過很多硬件參數(shù)非常優(yōu)秀的芯片, 在市場(chǎng)上表現(xiàn)一般。原因無非就是開發(fā)難度大, 公開資料不全, 配套的工具不友好等等。所以我稱STM32MP1為強(qiáng)化的STM32,就是希望ST公司在填補(bǔ)自己產(chǎn)品版圖的同時(shí), 同時(shí)提高整個(gè)嵌入式開發(fā)群體的開發(fā)技能與效率,共同合作創(chuàng)造更有意義的產(chǎn)品。
還是按照俗套先來看看板子
(點(diǎn)擊圖片可放大查看)
這個(gè)系列板子有兩個(gè)版本: STM32MP157A-DK1和STM32MP157C-DK2, 本文主角是前者. 兩者差別:
1.1 ?157A/157C的Cortex-A7最高頻率為650MHz。
1.2??157A缺少157C擁有的: AES/DES/RSA硬件加密單元, SecureBoot功能.
3. DK2的板子上焊接有WiFi/Bluetooth模塊, DK1這里是空的。
除此之外兩個(gè)板子基本是一樣的, 板子的布局也是相同的。如果有焊接高手可以換兩個(gè)板子的主控芯片也是可行的。所以兩者的Demo程序絕大多數(shù)也是可以共用的。
這個(gè)芯片的資源比較豐富, 定位是工控/高端消費(fèi)類應(yīng)用。這里作者也不照抄數(shù)據(jù)手冊(cè)了,感興趣的可以去下載看看,它的主要內(nèi)核是雙Cortex-A7+Cortex-M4,還有Neon, FPU, GPU等等。MP1主要是使用Cortex-A7, Cortex-M4可以算是一個(gè)從MCU,因?yàn)樾酒旧硎菦]有Flash的, 需要Cortex-A7把可執(zhí)行代碼載入到Cortex-M4可以訪問的RAM空間。板子上的NV空間是TF卡, 內(nèi)存主空間是512Mbyte的DDR. 考慮到使用這個(gè)芯片的同學(xué)有一大部分是從STM32的以前的用戶, 簡(jiǎn)要介紹些內(nèi)核.目前的ARM內(nèi)核主要有三個(gè)系列Cortex-A, Cortex-R, Cortex-M。
Cortex-M系列
大家都很熟了, 特點(diǎn)是只能支持Thumb/Thumb2指令集, 沒有MMU. 主要面向中低端應(yīng)用, 比如疫情期間的體溫槍就有很大一部分是STM32的方案. 這當(dāng)中又有Cortex-M0/M1, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-M35等內(nèi)核, 面向不同復(fù)雜度的應(yīng)用。
Cortex-R系列
是面向?qū)崟r(shí)應(yīng)用的內(nèi)核. 比如車載ECU, 電梯控制器, 高精度電機(jī)控制等等. 目前沒有看到ST公司的這個(gè)系列的產(chǎn)品. 支持ARM指令和Thumb/Thumb2指令.可以看作ARM7的升級(jí)產(chǎn)品。
Cortex-A系列
就是面向復(fù)雜應(yīng)用的內(nèi)核. 通俗點(diǎn)講就是跑Linux/Android的內(nèi)核. 大家熟知的高通/海思芯片都是這個(gè)系列的內(nèi)核. 這個(gè)板子的Cortex-A7是其中比較低功耗的內(nèi)核. 但不是最低的, 還有Cortex-A5是最低端的A系列內(nèi)核. 注意, Cortex-A7是ARM v5架構(gòu), 而且Cortex-A7是Cortex-A9之后推出的內(nèi)核. 跟Cortex-M0是Cortex-M3之后推出的類似. 當(dāng)然這些細(xì)節(jié)并不重要.
系統(tǒng)方面, Cortex-A系列的芯片當(dāng)然可以跑任何主流系統(tǒng), 或者根本不跑系統(tǒng). 但是這種芯片主要跑Linux/Android. 考慮到具體的運(yùn)行頻率和定位的應(yīng)用場(chǎng)景, Linux應(yīng)該是大多數(shù)的選擇. 本文也是假定大家用它來跑Linux.
開發(fā)STM32MP1這個(gè)開發(fā)板分幾個(gè)層次, 難度逐次增加, 但是并不是一定要開發(fā)到最底層才算”最硬核”. 實(shí)際上很多工業(yè)中的產(chǎn)品都是二次開發(fā)甚至N次開發(fā)的成果. 最關(guān)鍵還是設(shè)計(jì)與代碼的質(zhì)量, 以及產(chǎn)品所創(chuàng)造的價(jià)值.
就本開發(fā)板而言, 開發(fā)者可以:
1.? ?? ?在提供好的Linux鏡像上做開發(fā), 把這個(gè)開發(fā)板子當(dāng)做一個(gè)Mini工控電腦.
2.? ?? ?利用OpenSTLinux提供的SDK, 開發(fā)自己的應(yīng)用程序.
3.? ?? ?利用開源的OpenSTLinux源代碼, 定制自己的內(nèi)核和鏡像.
4.? ?? ?不要Linux,從Baremetal出發(fā), 移植/運(yùn)行其他OS,或者干脆不用OS.
如果是要涉及到上述第二層之后的開發(fā), 最好準(zhǔn)備一臺(tái)Linux開發(fā)機(jī)器, 最好是跑Ubuntu 18.04的本地Linux機(jī)器. Windows上跑虛擬機(jī)+鏡像也是比較方便的組合.Windows10的WSL2也可以.
板子拿到手之后會(huì)有配套的已經(jīng)制作好的啟動(dòng)TF卡,插入. 并且把板子背面的啟動(dòng)選項(xiàng)開關(guān)配置成(1,1).
配制成第一種(0,0)時(shí)是強(qiáng)制DFU,?是用來燒寫板上存儲(chǔ)器用的,?本文暫不展開,?但是必須要提出的是STLink Utility不能用于這個(gè)目的.?要使用STM32CubeProgrammer.配置好從SD卡啟動(dòng)后,插上電源即可啟動(dòng).?板子上的幾個(gè)接口如下:
1.電源接口, Type C供電,?任何Type C的Source都可以供電.?注意本板子不支持向外供電.?作者使用的是Think Pad的Type C電源,?華為/小米的Type C電源應(yīng)該都可以.?或者插在電腦也可以.
2.千兆網(wǎng)口,?建議插在自己家中的路由器上.?因?yàn)?/span>DK1沒有無線網(wǎng)絡(luò)連接,?所以這個(gè)是唯一的網(wǎng)絡(luò)接口.
3.TF卡槽, DK1/DK2板子上沒有NandFlash/NorFlash/eMMC,這是唯一的NV存儲(chǔ).?如果要用其他卡做起動(dòng)盤,?建議最少16G.
4.帶麥的音頻接口.?基本上任何耳機(jī)都可以.
5.STLink V2-1接口.?除了STLink?還有一個(gè)虛擬串口.
6.HDMI接口,?基本上任何帶HDMI的顯示器都可以.?出廠自帶Linux鏡像有GUI界面.
7.USB接口,?這個(gè)口是板子的USB Device口,?可用作DFU.
8.USB Host接口,?可以接4個(gè)USB Device.?作者試驗(yàn)過鍵盤,鼠標(biāo).?包括無線的鍵鼠都能用.
登入板上的Linux,?從操作的角度三種途徑:
1. STLink的虛擬串口,?如果要在uboot那里停下來做操作這也是唯一的選項(xiàng)了.
2.?把鍵盤/鼠標(biāo)/顯示器都接上,?直接使用OpenSTLinux的Xterm.
3. ssh登陸.
這一章節(jié)我們先利用已有的Linux鏡像上玩玩,?做幾個(gè)實(shí)驗(yàn).
1.?播放網(wǎng)絡(luò)音頻
保證你的開發(fā)板可以訪問要播放的網(wǎng)絡(luò)資源.?可以先ping一下子.
如果ping不通,?先把網(wǎng)絡(luò)問題解決.
利用已有的工具mpg123來播放音頻是板子自帶的輸出口,?可以插上耳機(jī)或者音箱欣賞.?如果想調(diào)整音量.用這個(gè)命令: alsamixer
用方向鍵調(diào)整音量.
如果想把音頻下載到本地后面再聽:
2019底2020初疫情牽動(dòng)著萬千人的心,?即使目前國(guó)內(nèi)的情況基本好轉(zhuǎn),?但是全球的情況依然令人揪心.?這里通過板子獲取全球最新的確診/疑似/死亡數(shù)據(jù).?如果再花點(diǎn)時(shí)間,?增加圖形界面,?配上LCD或者大屏幕,?可以做成一個(gè)展示板子.?這里只獲取到數(shù)據(jù),?獲取之后的數(shù)據(jù)的GUI部分有興趣的可以動(dòng)手做一做,?或者以后有時(shí)間再來發(fā)貼.
首先要找一個(gè)數(shù)據(jù)源,?這里使用美國(guó)約翰霍普金斯大學(xué)的一個(gè)數(shù)據(jù)源,?使用curl可以拉取所有數(shù)據(jù):
輸入上述命令后, console會(huì)打印最新的數(shù)據(jù).?全球所有地區(qū)基本上都覆蓋了.?但是這數(shù)據(jù)比較多,?需要做一點(diǎn)處理.?比如僅僅打印目前中國(guó)境內(nèi)的各地區(qū)確診數(shù)據(jù):
將上述腳本存為源代碼,再運(yùn)行:
完成這個(gè)實(shí)驗(yàn)包含兩部分:
1.從網(wǎng)絡(luò)獲取數(shù)據(jù),?如果用C/C++,可以使用curl的API.?如果是python,?標(biāo)準(zhǔn)庫有內(nèi)建的urllib等庫;
2.結(jié)果的解析,?如果使用C/C++有很多開源的json庫可用.?如果是python則標(biāo)準(zhǔn)庫有內(nèi)建的json支持.
如果涉及到圖形化展示數(shù)據(jù),?則還有Qt, GTK,?或者tkinter.
這個(gè)實(shí)驗(yàn)使用系統(tǒng)內(nèi)置的GPIO控制程序來做流水燈實(shí)驗(yàn).?控制板子上的LD5, LD6, LD7這幾個(gè)LED.?其中LD5, LD6是低邏輯點(diǎn)亮, LD7是高邏輯點(diǎn)亮.LD8是Linux本身已經(jīng)使用了,?用戶程序不能控制.
Ctrl+Z或者Ctrl+C都可以退出.
因?yàn)榘遄优艿氖?/span>Linux,?工具鏈可以使用開發(fā)機(jī)本身的包管理工具來安裝.?如果要使用板上特有的庫,?還需要配置OpenSTLinux的SDK和BSP.?這里我們只是打印Hello World.?使用標(biāo)準(zhǔn)的開發(fā)工具鏈即可.
在開發(fā)機(jī)上安裝g++工具鏈:
隨便在電腦上找一個(gè)原來寫的C++測(cè)試代碼:
編譯連接:
如果沒有帶參數(shù)的話, build的輸出為a.out
把這個(gè)a.out通過網(wǎng)絡(luò)或者拷貝弄到開發(fā)板上的文件系統(tǒng)中,?添加可執(zhí)行屬性即可運(yùn)行:
請(qǐng)復(fù)制粘貼網(wǎng)址到外部瀏覽器進(jìn)行瀏覽:
STM32 MPU Wiki:?
https://wiki.st.com/stm32mpu/wiki/Main_Page
STM32 MP1 Product Page:
https://www.st.com/en/microcontrollers-microprocessors/stm32mp157.html#
STM32 MP1 DK1 Page:
https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-discovery-kits/stm32mp157a-dk1.html
飛機(jī)上一般是什么操作系統(tǒng)?
高速CAN、容錯(cuò)CAN、LIN總線有什么區(qū)別?
大佬終于把鴻蒙OS講明白了,收藏了!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!