背景
在進行bsp適配的時候,在bsplpc55sxxlpc55s36_nxp_evk下輸入命令scons —dist,
等待導(dǎo)出成功,然后以dist文件下的工程開始開發(fā),注意此時dist文件夾可以放置在任意地方,此時在distproject下scons編譯,會出現(xiàn)如下錯誤,為了更清楚的復(fù)現(xiàn)報錯,這里并沒有使用多線程編譯
發(fā)現(xiàn)問題
當(dāng)然對至于這樣的報錯。必然先確認在dist下是否真的存在這個文件,結(jié)果是沒有的,那就去bsp下尋找,這里使用了everything搜索工具
在查找到文件之后,復(fù)制過去到dist下,然后接著編譯,會繼續(xù)發(fā)現(xiàn)報錯缺少其他文件,而且很顯然,這些文件都在一個文件夾下,即bsplpc55sxxLibrariesCMSISCoreInclude,那么可以肯定的是,同時對比dist目錄,可以肯定的是,CMSIS整個文件夾都沒有被scons —dist打包出去
那么到這里基本就明確了問題,現(xiàn)在有兩個思路可以去解決這個問題:
修改env中的scons —dist腳本,這樣就不用動CMSIS目錄,不用去修改控制文件編譯的SConscript腳本
移動CMSIS文件夾的位置,然后需要修改SConscript文件才可以編譯成功,這樣就不用動env
那么這兩種方案呢,修改env需要考慮到其他bsp的導(dǎo)出問題,同時需要考慮頂層的設(shè)計,這里呢,僅僅把env中控制scons —dist的位置指明,具體位置在 這里 ,而且其他bsp沒有出現(xiàn)這個問題,足以證明是改bsp出現(xiàn)了問題,就此可以確定我們需要修改的是CMSIS的路徑
如何解決
修改CMSIS文件夾的位置
那么現(xiàn)在確定了我們將要移動CMSIS文件夾,那么把它移向哪里呢,顯然我們目前不知道,怎么辦,看stm32
嗯就是這么直接,stm32放哪里我們放哪里,可以明確看到CMSIS是在drivers下的,那么很直接,我們復(fù)制過去同樣的位置就可以了,將兩個路徑都放出來了,我們可以對比一下
到此是不是就結(jié)束了呢,顯然并不是,還需要編譯一下去測試才可以提交pr,誒這個時候我們會發(fā)現(xiàn)編譯通不過了,仍然找不到”core_cm33.h”文件,讓我們想想是哪里出了問題,現(xiàn)在文件有了,我們是不是該考慮一下編譯器為什么找不到,很顯然我們應(yīng)該去看SConscript腳本了,在那里為編譯器尋找文件指明了路徑,但是那么多的SConscript腳本,我們應(yīng)該去尋找哪一個,這里呢,筆者的想法是找最近的,顯然lpc55sxxLibrariesdriversSConscript最近,遂,看!?。。?/p>
看來里邊是沒有的,全是對.c文件的控制,等等,我們CMSIScoreinclude下的可都是.h文件,我們應(yīng)該從上層向下尋找,來到bsp根目錄下
這里我就直接用vscode打開了SConscript,大家注意看路徑,是bsp根目錄下,很顯然這個SConscript就是 了,第五行很明顯確定了CMSIS的路徑,(這里是我修改之后的),那么接下來開始編譯
解決一個問題是沒有那么容易的,這里(LPC55sxx里)還有其他使用CMSIS的bsp,他們的SConscript腳本我們也需要一并修改了
到此呢,就真的結(jié)束了見 pr,我還不小心將CMSIS下的LICENSE.txt文件刪掉了,又加了一個commit才解決這件事情,最后的pr長這樣
在滿鑒霆大佬和楊熙大佬的建議下,最終的解決辦法采用了另一種解決方案
修改sdk_dist.py文件
sdk_dist.py文件在bsplpc55sxxtools下,env在接受到scons —dist之后會調(diào)用該腳本
只需要在腳本里添加一句話即可
print("= > copy bsp CMSIS")
bsp_copy_files(os.path.join(library_path, 'CMSIS'), os.path.join(library_dir, 'CMSIS'))
然后scons —dist的效果是這樣的
然后編譯測試一下
到這里就真的結(jié)束啦.
-
控制器
+關(guān)注
關(guān)注
112文章
16214瀏覽量
177478 -
LPC
+關(guān)注
關(guān)注
8文章
136瀏覽量
77606 -
STM32
+關(guān)注
關(guān)注
2266文章
10876瀏覽量
354922 -
CMSIS
+關(guān)注
關(guān)注
0文章
39瀏覽量
11874
發(fā)布評論請先 登錄
相關(guān)推薦
評論