STM32MP157 的 Linux 系統處理器 -- 第一步建立開發編譯環境

STM32MP157開發板的資料非常多,本文主要是抓出建立一個開發環境的重點部分。MP157 晶片有兩顆ARM Cortext-A7核心800MHz和一顆Cortext-M4核心209MHz,其中A7運行Linux核心。由於其多核的架構適用於處理複雜的任務,比如智能家居、環境監控、安防、自動控制系統、智慧醫療監測等嵌入式的Linux應用。

首先認識啟動過程,當晶片通電啟動後,先跑TF-A(STM的安全開機流程),接著運行uboot開機程式(俗稱bootloader),此時uboot會載入Linux核心到SRAM,最後再運行Linux系統,周邊設備的驅動會被Linux系統帶起來,呈現給我們的就是Linux操作介面。

由於是ARM為基礎的晶片,編譯過程需要用ARM官方的編譯工具,也就是tool-chain。正點原子建議使用gcc-arm-9.2-2019.12-x86_64-arm-none- 版本,這是2019年底出的9.2版本,有分為LinuxWindows版。同時,STM官方有提供TF-AubootLinux內核的原始碼,為了避免編譯原始碼產生錯誤,最好用同一編譯版本9.2版,因為無法確認新版本編譯工具是否能成功編譯原始碼。最後留意一點,如果要修改ubootLinux內核驅動的話,最好在Ubuntu的環境底下進行原始碼的編譯。

Cross Compiler交叉編譯器

如果安裝到Windows環境,選Windows (mingw-w64-i686) hosted cross compilers底下的AArch32 target with hard float (mingw-w64-i686-arm-none-linux-gnueabihf.tar.xz)。然後,用WinRAR工具將它解壓縮到某一目錄下,接著在CMD視窗進到bin目錄後,敲入“arm-none-linux-gnueabihf-gcc  -v”查看gcc的版本號,如下圖。


如果安裝到Ubuntu環境,選x86_64 Linux hosted cross compilers底下的AArch32 target with hard float (x86_64-arm-none-linux-gnueabihf.tar.xz)。然後將它解壓縮到 /usr/local/arm目錄下,並且修改 /etc/profile 檔案內容,新增編譯的路徑,如下
export PATH=$PATH:/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
然後在Ubuntu的終端機敲入“arm-none-linux-gnueabihf-gcc  -v ”就能看到編譯器的版本號。
 
LED
        試著控制板子上的LED燈,DS1是使用者可以用來操控的,我們在/sys/class/leds/user-led目錄下查到幾個文件(brightnesstrigger),就是用來控制燈號的。板子上的蜂鳴器控制方式也跟LED一樣,透過brightness來設定。

所謂開啟文件的方式來控制LED,如下面的範例所示,再以寫入brightness文件的方式設定LED亮或滅。


GPIO介面


按鍵事件
試著控制板子上的兩顆按鍵(Key0Key1),我們先查看系統所註冊的輸入設備,檢視這個檔案/proc/bus/input/devices內容,如下圖。一個名稱來自gpio的按鍵,對應到event0編號,因此我們要開啟/dev/input/event0這個文件來讀取實際按鍵的狀態,如下圖所示。



 ADC介面
試著控制板子上的ADC,先查看/sys/bus/iio/devices目錄,如下圖,底下有兩個設備編號,一個是ADC,另一個是DAC。再進到iio:device0的目錄底下,列出很多個參數名稱。我們開啟設備文件in_voltage19_rawin_voltage19_scale,並讀取內容數值後進行轉換,便能計算出電壓值。



TFT-LCD軟排線接到開發板上,軟排的金屬面朝下,組裝後,我們看到的樣貌,如下圖所呈現。USB-TTL的接口連到電腦的終端機,通訊鮑率115200bps 8-N-1,終端機上面會印出系統訊息。如果連網路的話,可以用SSH連線方式,登入名稱為root

留言

匿名說…
saudaçẽos a todos, eu moro no brasil e estou estudando o STM32MP157, eu comprei a plca ATK-DLMP157M com CLMP157B e LCD de 7, eu gostaria de aprededer fazer o build na imagem, eu tentei más não consegui fazer ainda, você poderia me ajudar com algumas dicas?
漢亞科技說…
1) you need to set up toolchains for compiler in Linux. 2) try to compile one sample code to verify

此網誌的熱門文章

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[筆記] 整理控制器 STM32 與無線晶片 ESP32 資料

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

初學 ESP32-S3 攝像模組的開發

[概念] 兩個程序以 IPC 方式建立一個能互相通訊的共享空間