前言
目前大形勢(shì)影響,芯片價(jià)格日益上漲,采購周期變長,導(dǎo)致國產(chǎn)芯片替代進(jìn)口芯片成為大趨勢(shì),該文章記錄了使用國民技術(shù)的N32替換STM32的操作流程。
話不多說,上步驟。
一、工程配置
1.安裝硬件庫
硬件庫為廠家提供的資料,如下圖所示,雙擊安裝,使得keil能夠找到該芯片。
2.更改J-Flash配置
由于Keil官方?jīng)]有對(duì)該芯片的支持,所以J-Link下載時(shí)也無法找到該芯片,所以需要手動(dòng)添加芯片。更改步驟官方提供有說明文檔。
主要步驟是:
修改JLinkDevices配置文檔
添加Nationstech的JFlash 工程文件
添加解鎖Nationstech芯片讀保護(hù)L1 等級(jí)的應(yīng)用程序
進(jìn)行如上步驟后,啟動(dòng)J-Flash就能夠掃描并連接到芯片,但是有可能keil鏈接的J-Flash和安裝的J-Flash不是一個(gè)路徑,所以將配置好的J-Flash文件替換keil下Keil5ARMSegger目錄文件,就能夠正常下載調(diào)試。
3.更改芯片
4.添加驅(qū)動(dòng)文件
將N32的底層驅(qū)動(dòng)庫拷貝到工程目錄下,并將include路徑添加進(jìn)去。
5.更改全局變量
6.將啟動(dòng)文件和驅(qū)動(dòng)文件替換為N32庫文件
7.將所有的stm32l1xx替換為n32g45x
二、底層驅(qū)動(dòng)函數(shù)接口對(duì)照表
更改代碼,將STM32的驅(qū)動(dòng)函數(shù)替換為N32的驅(qū)動(dòng)函數(shù),這部分比較繁瑣,需要慢慢替換,下面是我整理的替換對(duì)照表。
三、踩坑記錄
經(jīng)過上面的替換,應(yīng)該可以編譯過去了,但是這指示開始,后面悲劇的踩坑大戰(zhàn)才剛剛開始。
1.仿真卡死
程序仿真卡死,單步調(diào)試發(fā)現(xiàn)卡死在OSInit()函數(shù)里面,這個(gè)函數(shù)是OS的初始化函數(shù),所以應(yīng)該是OS配置的問題,排查下來發(fā)現(xiàn)是啟動(dòng)文件里面的OS啟動(dòng)項(xiàng)沒有更改,更改如下:
2.DMA配置出錯(cuò)
程序能夠進(jìn)入到任務(wù)中后,調(diào)試發(fā)現(xiàn)無法進(jìn)入到串口接收中斷,但是示波器中有數(shù)據(jù),而且中斷都沒有進(jìn)入,應(yīng)該是卡死在優(yōu)先級(jí)高的中斷中,排查發(fā)現(xiàn),是DMA發(fā)送中斷的配置有問題,導(dǎo)致一直卡死在DMA中斷中。下面是DMA部分的配置。
3.Flash配置
由于國民芯片和STM32芯片的FLASH劃分有區(qū)別,所以FLASH的替換是比較費(fèi)事的部分,先對(duì)比一下兩個(gè)片子的區(qū)別:
STM32L151的flash部分:
N32G455芯片的flash部分:
可以看出STM32單獨(dú)有EEPROM的劃分,而N32是沒有的,只有flash部分。所以要注意兩點(diǎn):
Flash空間的問題,STM32可用空間要比N32的空間大;
底層接口函數(shù),STM32有操作EEPROM的函數(shù),而N32沒有,只能使用flash操作函數(shù)。
下面是flash部分的操作:
4.bootloader移植
由于本項(xiàng)目采用bootloader引導(dǎo)主程序的方式,因此要注意燒寫空間的配置,配置點(diǎn)在下面位置:
當(dāng)單獨(dú)調(diào)試其中的程序時(shí),燒寫程序需要將整個(gè)flash擦除,要不運(yùn)行不正常。
5.OS初始化卡死
又遇到程序卡死問題,這次是主程序,而且主程序起始地址為0x8000000時(shí)單獨(dú)運(yùn)行良好,但是改成0x8007000用bootloader跳轉(zhuǎn)過去就卡死,也是卡死在OS的初始化中。因?yàn)閱为?dú)運(yùn)行良好,所以排查起來困難些。最終定位是堆棧和堆的空間設(shè)置太大了,設(shè)置小了后就可以運(yùn)行。更改該空間的位置如下:
而且問題還不是堆棧的空間不夠用,是空間設(shè)置太大了。有點(diǎn)無語。
6.程序跳轉(zhuǎn)后運(yùn)行不正常
這是最后的問題,程序能夠從bootloader跳轉(zhuǎn),但是運(yùn)行不正常,咨詢了廠家技術(shù)人員,技術(shù)人員反饋可以采用分散加載的方式進(jìn)行排查,也就是讓芯片直接在主程序燒錄的位置啟動(dòng),分散加載的教程網(wǎng)上比較多,主要需要設(shè)置燒錄域和啟動(dòng)域地址,還有VTOR寄存器,
配置如下所示:
需要編寫*.ini文件更改VTOR,ini文件編寫如下:
在keil中加載,使得軟件啟動(dòng)后先配置單片機(jī):
配置好后可以實(shí)現(xiàn)分散加載,能夠是程序在燒錄位置啟動(dòng),發(fā)現(xiàn)程序分散加載可以運(yùn)行正常,但是bootloader跳轉(zhuǎn)不正常,因此需要排查跳轉(zhuǎn)部分的問題。最終定位STM32在主程序啟動(dòng)時(shí)不會(huì)重啟向量表,而N32會(huì)重啟向量表,在主程序啟動(dòng)位置更改如下:
跳轉(zhuǎn)部分代碼如下:
CSDN德瑪西亞吳彥祖
原文鏈接:https://blog.csdn.net/zhang421412170/article/details/116779169
審核編輯 :李倩
-
芯片
+關(guān)注
關(guān)注
459文章
52474瀏覽量
440510 -
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364662
原文標(biāo)題:國產(chǎn)芯片N32替換STM32的步驟
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AN_國民技術(shù)通用MCU RT_Thread設(shè)備注冊(cè)應(yīng)用筆記V1
AN國民技術(shù)_N32G43x_N32L43x_N32L40x系列低功耗應(yīng)用筆記V1
活動(dòng)回顧丨國民技術(shù)攜N32 MCU新成員N32G430 亮相電機(jī)驅(qū)動(dòng)與控制技術(shù)研討會(huì)

N32 MCU新成員N32G430,創(chuàng)Arm Cortex-M4F業(yè)內(nèi)性價(jià)比新標(biāo)桿

國民技術(shù)N32 MCU產(chǎn)品榮獲IEC/EN/UL 60730功能安全認(rèn)證
國民技術(shù)N32H47/8系列MCU連續(xù)獲得三項(xiàng)行業(yè)獎(jiǎng)

SGS授予國民技術(shù)IEC/EN/UL 60730功能安全認(rèn)證證書
國民技術(shù)N32 MCU通過IEC/EN/UL 60730功能安全認(rèn)證

評(píng)論