[開箱文] 帶有AI算力的正點原子 STM32N647 開發板
STM32N647晶片是單核Cortex-M55,其內部工作頻率為800MHz(超頻),內建的記憶體大小約4.2MB,與其他STM32Fx系列的晶片不同,它沒有內建Flash,程式碼必須燒錄在外部的Flash。此外,晶片內建NPU,具備小量的AI加速算力,還有JPEG/H.264編碼器。順帶提一點,若有製作板卡的需求時,得由專業的PCB廠商來處理,推薦 JLCPCB https://jlcpcb.com/hk。
開發環境
過去習慣用Keil IDE開發STM32的板子,但是N647只能在Keil編譯,而無法進行燒錄與debug,因此只能用官方的STM32Cube IDE進行step debug,燒錄則用STM32Cube Programmer工具,將程式碼燒到外部的Flash記憶體。
影片連結【【正点原子】手把手教你学STM32CubeIDE开发【真人出镜】STM32CubeIDE开发视频教程 单片机 嵌入式】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=3&share_source=copy_web&vd_source=c4accd27d29c32708912d15f0b5f15ce
開機模式
晶片的開機模式透過兩根pin腳切換,如下表,有三種模式:開發階段的開機、Flash開機、序列方式開機。一般開發階段的開機就是透過STM32Cube IDE環境來運行程式碼,一旦reset後程式碼就消失了。Flash開機就是將程式碼燒錄到外部Flash,晶片透過SPI介面讀取程式碼運行。另一種是透過USB或UART序列方式讀取程式碼來運行。
在開發板的軟體包裡面,有個External_Loader目錄,裡面包含MX25UM2565G記憶體的下載程式碼的演算法(MX25UM25645G_ATK-CNN647B_ExtMemLoader.stldr),將這個檔案複製到STM32Cube Programmer工具的bin目錄底下。
外部擴展定址
底下的表格是N647晶片透過XSPI介面擴展到外部的記憶空間,晶片定址所對應的範圍。外部的Flash或SRAM記憶體或外部晶片所對應的位址,有四大區塊的起始位址:0x60000000、0x70000000、0x80000000、0x90000000。目前正點原子STM32N647開發板的外部Flash(型號: MX25UM25645GXDI00)對應到0x70000000,外部Hyper SRAM(型號: W958D8NBYA5I) 對應到0x60000000。
STM32Cube IDE開發套件必須搭配Cube MX工具一起使用,先從Cube MX選定晶片型號,再來載入晶片的HAL函數庫軟體包,最後根據設定生成一個IDE project專案,如下圖所示。
載入專案:在Cube IDE套件裡,File選單 à Import載入專案檔,如下圖所示。
新增檔案到專案
實體複製:直接打開電腦的檔案總管(Windows Explorer),將 LED 或
STM32_MW_ISP 資料夾複製到你項目的實體路徑下(例如放進 Drivers/BSP/ 或 Middlewares/ 底下)。
重新整理項目:回到 STM32CubeIDE,在項目名稱(352_IMX335_Appli)上點擊右鍵,選擇 Refresh (F5)。這時 IDE 就會偵測到新加入的資料夾並顯示在 Project Explorer 中。
遇到被編譯排除的檔案,如下圖。點選該檔案或目錄,按滑鼠右鍵彈出視窗後,將Exclude from build的選項uncheck,這樣該目錄就會被選用了。
設定Includes路徑
開啟專案的屬性,如下圖所示。左邊視窗切到Settings選單,再來右邊設定編譯的Include paths。
配置程式碼空間
編譯後,進行組譯時,我們要提供程式碼配置在記憶體的排列方式,因此要設定 *.ld 檔案,如下圖所示,同樣在Settings選單裡,切到Linker配置,右邊選擇一個Linker Script檔案。
範例的專案裡,已經有幾個script (.ld)檔案,如下圖,檔名LRUN是指運行在內部SRAM,而ROM是指程式碼配置在外部Flash。檔名的xspi1或xspi2是指配置到外部的記憶空間。以正點原子的開發板為例,我們要燒錄程式碼應該要選ROMxspi2或ROMxspi2_RAMxspi1.ld。
最後重要的一點,要燒錄到外部Flash的程式碼必須是Release編譯的hex,不可用Debug模式的編譯。
Cube Programmer
燒錄階段,必須將Boot模式切到開發模式,然後將Cube Programmer與ST-Link連接成功。等待燒錄完成後,再將Boot模式切到Flash開機模式。
由於每塊STM32開發板上面的Flash型號不見得相同,需要搭配合適的下載算法。如下圖,選擇正點原子的下載檔案MX25UM25645G_ATK-CNN647B_ExtMemLoader.stldr,然後切換到燒錄頁面,選好下載的hex檔之後,按下燒錄即可。
Bootloader
Bootloader是指開機載入程式碼,在軟體包裡面有提供一個bootloader範例程式,放在目錄\STM32N647\Software_Package\FSBL底下。在HAL函數庫的安裝包裡面,也有範例程式,在目錄\STM32CubeMX\Repository\STM32Cube_FW_N6_V1.3.0\Projects\STM32N6570-DK\Applications\OpenBootloader。










留言