實(shí)際開(kāi)發(fā)中,不同的人習(xí)慣用不同的開(kāi)發(fā)工具。比如,對(duì)于STM32開(kāi)發(fā)來(lái)說(shuō),可以用Keil、IAR、VSCode+GCC等。比如安富萊開(kāi)發(fā)板的例程中,常常都會(huì)提供有Keil及IAR的工程:
有沒(méi)有這樣子的一個(gè)工具:可以同時(shí)生成多種開(kāi)發(fā)環(huán)境的工程?有的,project_generator,就是干這事的。
project_generator簡(jiǎn)介
project_generator是一個(gè)嵌入式項(xiàng)目生成器,簡(jiǎn)稱(chēng)progen。我們可以編寫(xiě)一個(gè)特定語(yǔ)法的YAML文件用于管理我們的項(xiàng)目,并根據(jù)記錄中定義的規(guī)則來(lái)生成IDE項(xiàng)目文件。
progen官網(wǎng):
progen項(xiàng)目生成器目前支持生成以下工具(IDE、Makefile等)的項(xiàng)目:
uVision4 和 uVision5
IAR
生成文件 (GCC ARM)
生成文件 (ARMCC)
Cmake (GCC ARM)
CoIDE (GCC ARM)
Eclipse(帶有 GCC ARM 的 Makefile)
Sublime(帶有 GCC ARM 的 Makefile)
Visual Studio(帶有 GCC ARM 的 Makefile)
安裝project_generator
progen依賴于Python環(huán)境,所以需要首先搭建Python環(huán)境。可以安裝Python2.7.x的,也可以安裝Python3.x.x的,大家可以自行安裝。安裝好Python環(huán)境之后,使用pip工具安裝project-generator:
pip install project-generator
![5c6abfca-9e20-11ee-8b88-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/B8/0A/wKgZomWBLOOAGpmJAANxZubLpOk327.png)
安裝后得到:
project_generator實(shí)踐
官方給我們提供了一個(gè) baremetal blinky examples例子,我們基于這個(gè)例子實(shí)操一遍。
下載baremetal blinky examples得到:
projects.yaml就是管理我們工程的yaml文件,這個(gè)是總的yaml文件,其會(huì)引用到records中的的子yaml文件。通過(guò)projects.yaml引用的子yaml文件可以同時(shí)管理多個(gè)工程,如本例的projects.yaml內(nèi)容如:
projects: gpio_demo_frdmk64f: -records/frdm_k64f.yaml gpio_demo_frdmkl25z: -records/frdm_kl25z.yaml gpio_demo_frdmkl46z: -records/frdm_kl46z.yaml
這里同時(shí)管理著gpio_demo_frdmk64f、gpio_demo_frdmkl25z、gpio_demo_frdmkl46z三個(gè)工程,records下對(duì)應(yīng)有三個(gè)yaml文件:
下面通過(guò)progen工具來(lái)生成工程,因?yàn)閜rogen工具是存放在Python/Scrips路徑下,并且已經(jīng)加入到環(huán)境變量中,所以progen工具全局有效。我們?cè)赽aremetal blinky examples工程目錄下執(zhí)行對(duì)應(yīng)命令可生成工程。
1、生成gpio_demo_frdmk64f項(xiàng)目的Keil工程:
progengenerate-fprojects.yaml-pgpio_demo_frdmk64f-tuvision
-p參數(shù)指定工程名;-t參數(shù)指定生成的工程。
2、生成gpio_demo_frdmk64f項(xiàng)目的IAR工程:
progengenerate-fprojects.yaml-pgpio_demo_frdmk64f-tiar_arm
![5ca69054-9e20-11ee-8b88-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/B8/0A/wKgZomWBLOSAAesSAADD8qOs1BQ986.png)
![5cac6394-9e20-11ee-8b88-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/B8/0A/wKgZomWBLOSAYFPEAAAqG-tP9IE540.png)
3、生成gpio_demo_frdmk64f項(xiàng)目的gcc_arm工程:
progengenerate-fprojects.yaml-pgpio_demo_frdmk64f-tiar_arm
![5cb729c8-9e20-11ee-8b88-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/B8/0A/wKgZomWBLOSAIo_xAADNzFa8gPk807.png)
![5cbebd14-9e20-11ee-8b88-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/B8/0A/wKgZomWBLOSAMjmGAAA2xEi2bp0427.png)
我們知道,keil等工具起初支持的芯片都比較有限,比如需要安裝一些芯片支持包進(jìn)行擴(kuò)展,同樣的,progen也是一樣的,支持的開(kāi)發(fā)板及芯片有限,我們可自行添加目標(biāo)支持。路徑如:
C:Python27Libsite-packagesproject_generator_definitions arget
以上就是本次關(guān)于progen項(xiàng)目生成器的簡(jiǎn)要分享。這個(gè)工具也是我偶然間知道的,簡(jiǎn)單了解并實(shí)踐了一下,順道分享給大家,并且也是很淺的實(shí)踐分享。關(guān)于yaml里面的內(nèi)容本文并未提到,大家感興趣的可以自行去了解學(xué)習(xí)。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307857 -
STM32
+關(guān)注
關(guān)注
2272文章
10925瀏覽量
357708 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5125瀏覽量
98278 -
keil
+關(guān)注
關(guān)注
69文章
1214瀏覽量
167330 -
生成器
+關(guān)注
關(guān)注
7文章
320瀏覽量
21141
原文標(biāo)題:嵌入式項(xiàng)目生成器,有點(diǎn)意思!
文章出處:【微信號(hào):Linux大陸,微信公眾號(hào):Linux大陸】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
![](https://file.elecfans.com/web2/M00/35/09/poYBAGIob-eAPVAuAAE4K8SRNb4720.jpg)
臥槽,牛逼了!這是全網(wǎng)把Python生成器(Generator)講的最透徹的 - 2.Python生成器的使用
FIFO由多個(gè)版本的FIFO生成器生成會(huì)導(dǎo)致問(wèn)題嗎?
如何使用系統(tǒng)生成器生成sinc信號(hào)
python生成器
利用LabVIEW代碼生成器簡(jiǎn)化應(yīng)用項(xiàng)目
![利用LabVIEW代碼<b class='flag-5'>生成器</b>簡(jiǎn)化應(yīng)用<b class='flag-5'>項(xiàng)目</b>](https://file.elecfans.com/web2/M00/48/92/pYYBAGKhtA-AOmxKAAAMPPEoChg224.jpg)
如何使用Synergy項(xiàng)目生成器創(chuàng)建新的Synergy項(xiàng)目?
Xilinx LogiCORE IP塊內(nèi)存生成器的產(chǎn)品指南
![Xilinx LogiCORE IP塊內(nèi)存<b class='flag-5'>生成器</b>的產(chǎn)品指南](https://file.elecfans.com/web1/M00/D3/2C/o4YBAF_QgiuAS1azAADq-NNOWXw015.png)
python生成器是什么
使用嵌入式代碼生成器檢查復(fù)雜性
![使用<b class='flag-5'>嵌入式</b>代碼<b class='flag-5'>生成器</b>檢查復(fù)雜性](https://file.elecfans.com/web2/M00/4E/07/poYBAGK79OaAYSddAAEt40zaQYU538.png)
將使用代碼生成器生成的項(xiàng)目移植到與智能配置器一起使用的項(xiàng)目
![將使用代碼<b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的<b class='flag-5'>項(xiàng)目</b>移植到與智能配置器一起使用的<b class='flag-5'>項(xiàng)目</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
將使用代碼生成器生成的項(xiàng)目移植到與智能配置器一起使用的項(xiàng)目
![將使用代碼<b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的<b class='flag-5'>項(xiàng)目</b>移植到與智能配置器一起使用的<b class='flag-5'>項(xiàng)目</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用C2000?嵌入式模式生成器(EPG)進(jìn)行設(shè)計(jì)
![使用C2000?<b class='flag-5'>嵌入式</b>模式<b class='flag-5'>生成器</b>(EPG)進(jìn)行設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論