人妻蜜と1~4中文字幕月野定规 ,国产精品成人va在线播放,色优久久久久综合网鬼色,WWW插插插无码视频网站

【ARM】Keil MDK處理器PACK的制作流程

一、文檔背景

隨著嵌入式系統(tǒng)的快速發(fā)展,基于ARM架構的微控制器在工業(yè)控制、物聯網、消費電子等領域的應用日益廣泛。作為主流的嵌入式開發(fā)工具鏈之一,Keil MDK(Microcontroller Development Kit)通過其PACK(Software Pack)生態(tài)系統(tǒng)為開發(fā)者提供了便捷的設備支持、中間件集成和代碼模板管理功能。處理器PACK包作為MDK工具鏈的核心擴展組件,能夠將特定處理器的硬件描述、啟動代碼、外設驅動、調試配置等信息進行標準化封裝,從而簡化開發(fā)流程并提升開發(fā)效率。

當前,半導體行業(yè)不斷推出新型處理器架構與定制化芯片,及時為開發(fā)者提供適配的PACK支持包已成為芯片廠商及生態(tài)合作伙伴的重要任務。通過規(guī)范化的PACK包制作流程,開發(fā)者可以快速在MDK環(huán)境中集成目標處理器,確保工具鏈對硬件資源的完整支持,同時降低項目移植與維護成本。

本文檔旨在為PACK包開發(fā)工程師提供一套完整的制作指南,涵蓋處理器PACK包的規(guī)范定義、工具鏈適配、配置流程及驗證方法,幫助開發(fā)者高效完成從硬件描述到工具支持的標準化封裝工作,最終推動軟硬件生態(tài)的無縫協(xié)同與快速部署。


二、 解決的問題或者進行問題分析

本文檔通過規(guī)范化的PACK包制作流程,旨在解決上述問題:

● 統(tǒng)一硬件抽象:通過PDSC(Pack Description File)和SVD(System View Description)文件,將處理器硬件信息結構化封裝,實現MDK工具鏈的自動識別與配置。

● 標準化工具接口:集成調試配置、Flash算法和啟動代碼,確保開發(fā)環(huán)境開箱即用,減少手動干預。

● 生態(tài)兼容性設計:支持CMSIS標準、第三方中間件和用戶代碼模板的集成,提升資源復用率。

● 版本可控性:通過PACK版本管理和依賴聲明,確保工具鏈與硬件/軟件的同步更新。


三、 Keil MDK的處理器PACK的制作流程

1. 創(chuàng)建一個處理器PACK制作的工作目錄,如E:KeilMDKPackDevicePack。

2. 將“Pack_with_Device_Support.zip”解壓后的“01_Basic_Pack”目錄下的文件復制到工作目錄,(注:去掉Files目錄的只讀屬性)如圖3-1所示:

圖3-1

3. 從“C:UsersPeterAppDataLocalArmPacksARMCMSIS5.7.0CMSISUtilities”目錄及子目錄下,把“

packChk.exe、PACK.xsd、SVDConv.exe”文件復制到工作目錄下:,如圖3-2所示:

圖3-2


4. 打開“MyVendor.MVCM3.pdsc”文本,在“<devices>”部分添加如下內容,如圖3-3所示:

<devices>

<family Dfamily="MVCM3 Series" Dvendor="Generic:5">

<processor Dcore="Cortex-M3" DcoreVersion="r2p1" Dfpu="0" Dmpu="0" Dendian="Little-endian"/>

<description>

The MVCM3 device family contains an ARM Cortex-M3 processor, running up to 100 MHz with a versatile set of on-chip peripherals.

</description>

<!-- ************************ Sub-family 'MVCM3100' **************************** -->

<subFamily DsubFamily="MVCM3100">

<processor Dclock="50000000"/>

<!-- ************************* Device 'MVCM3110' ***************************** -->

<device Dname="MVCM3110">

<memory name="IROM1" access="rx" start="0x00000000" size="0x4000" startup="1" default="1"/>

<memory name="IRAM1" access="rw" start="0x20000000" size="0x0800" init ="0" default="1"/>

</device>

<!-- ************************* Device 'MVCM3120' ***************************** -->

<device Dname="MVCM3120">

<memory name="IROM1" access="rx" start="0x00000000" size="0x8000" startup="1" default="1"/>

<memory name="IRAM1" access="rx" start="0x20000000" size="0x1000" init ="0" default="1"/>

</device>

</subFamily>

<!-- ************************ Sub Family 'MVCM3200' **************************** -->

<subFamily DsubFamily="MVCM3200">

<processor Dclock="100000000"/>

<!-- ************************* Device 'MVCM3250' ***************************** -->

<device Dname="MVCM3250">

<memory name="IROM1" access="rx" start="0x00000000" size="0x4000" startup="1" default="1"/>

<memory name="IRAM1" access="rw" start="0x20000000" size="0x0800" init ="0" default="1"/>

</device>

<!-- ************************* Device 'MVCM3260' ***************************** -->

<device Dname="MVCM3260">

<memory name="IROM1" access="rx" start="0x00000000" size="0x8000" startup="1" default="1"/>

<memory name="IRAM1" access="rw" start="0x20000000" size="0x1000" init ="0" default="1"/>

</device>

</subFamily>

</family>

</devices>

圖3-3


5. 將“Pack_with_Device_Support.zip”解壓后的“02_System_and_Startup”目錄下的內容復制到工作目錄的Files目錄下,如圖3-4所示:

圖3-4

6. 在“MyVendor.MVCM3.pdsc”文件的<conditions>部分添加如下內容,如圖3-5所示:

<condition id="MVCM3 CMSIS-Core">

<!-- conditions selecting Devices -->

<description>MyVendor MVCM3 Series devices and CMSIS-Core (Cortex-M)</description>

<require Cclass="CMSIS" Cgroup="Core"/>

<require Dvendor="Generic:5" Dname="MVCM3*"/>

</condition>

<condition id="Startup ARM">

<description>Startup assembler file for ARMCC</description>

<require Tcompiler="ARMCC"/>

</condition>

<condition id="Startup GCC">

<description>Startup assembler file for GCC</description>

<require Tcompiler="GCC"/>

</condition>

<condition id="Startup IAR">

<description>Startup assembler file for IAR</description>

<require Tcompiler="IAR"/>

</condition>

圖3-5


7. 在“MyVendor.MVCM3.pdsc”文件的<components>部分添加如下內容,如圖3-6所示:

<component Cclass="Device" Cgroup="Startup" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">

<description>System Startup for MyVendor MVCM3 Series</description>

<files>

<!-- include folder -->

<file category="include" name="Device/Include/"/>


<file category="source" name="Device/Source/ARM/startup_MVCM3xxx.s" attr="config" condition="Startup ARM" version="1.0.0"/>

<file category="source" name="Device/Source/GCC/startup_MVCM3xxx.S" attr="config" condition="Startup GCC" version="1.0.0"/>

<file category="source" name="Device/Source/IAR/startup_MVCM3xxx.s" attr="config" condition="Startup IAR" version="1.0.0"/>


<file category="source" name="Device/Source/system_MVCM3xxx.c" attr="config" version="1.0.0"/>

</files>

</component>

圖3-6

8. 在“MyVendor.MVCM3.pdsc”文件的中添加一個新版本信息,如圖3-7所示:

圖3-7

9. 將“Pack_with_Device_Support.zip”解壓后的“03_SVD_File”目錄下的內容復制到工作目錄的Files目錄下,如圖3-8所示:

圖3-8

10. 打開“FilesSVD”目錄下的“MVCM3xxx.svd”文件,修改如圖3-9的內容:

圖3-9


11. 在工作目錄下運行:SVDConv.exe FilesSVDMVCM3xxx.svd --generate=header –-fields=macro,沒有出錯,如圖3-10所示:

圖3-10

12. 把生成的 MVCM3xxx.h移到工作目錄的DeviceInclude目錄下,如圖3-11所示:

圖3-11

13. 在“MyVendor.MVCM3.pdsc”文件中添加如圖3-12的內容:

圖3-12

14. 將“Pack_with_Device_Support.zip”解壓后的“04_Flash_Programming”目錄下的內容復制到工作目錄下,如圖3-13所示:

圖3-13

15. 把“ _Template_Flash”目錄下的“NewDevice.uvproj”修改為“MVCM3XXX_16.uvproj”,如圖3-14所示:

圖3-14

16. 打開“MVCM3XXX_16.uvproj”工程,在選項配置的“Output”中,把執(zhí)行文件名稱修改為“MVCM3XXX_16”,如圖3-15所示:

圖3-15

17. 在Keil MDK中修改“FlashDev.c”中的一個參數,通過構建工程創(chuàng)建“MVCM3XXX_16.FLM”文件(在具體芯片的PACK開發(fā)中,需要調整FlashPrg.c文件中的編程算法。)如圖3-16所示:

圖3-16

18. 把“MVCM3XXX_16.FLM”文件移到Files目錄下新建的Flash目錄下,如圖3-17所示:

圖3-17

19. 通17與18步,再生成MVCM3XXX_32.FLM,并移到Files目錄下新建的Flash目錄下,在“MyVendor.MVCM3.pdsc”文件中添加如圖3-18的內容:

圖3-18

20. 在“MyVendor.MVCM3.pdsc”文件中添加新的版本信息,如圖3-19所示:

圖3-19

21. 將“Pack_with_Device_Support.zip”解壓后的“05_Device_Properties”目錄下的內容復制到工作目錄Files目錄下,如圖3-20所示:


圖3-20

22. 在“MyVendor.MVCM3.pdsc”文件中添加其他通用屬性,如圖3-21所示:

圖3-21

23. 在“MyVendor.MVCM3.pdsc”文件的<components>部分添加如下內容,如圖3-22所示:

<component Cclass="Device" Cgroup="HAL" Csub="GPIO" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">

<description>GPIO HAL for MyVendor MVCM3 Series</description>

<files>

<file category="header" name="Device/Include/GPIO.h"/>

<file category="source" name="Device/Source/GPIO.c"/>

</files>

</component>


<component Cclass="Device" Cgroup="HAL" Csub="ADC" Cversion="1.0.0" condition="MVCM3 CMSIS-Core">

<description>ADC HAL for MyVendor MVCM3 Series</description>

<files>

<file category="header" name="Device/Include/ADC.h"/>

<file category="source" name="Device/Source/ADC.c"/>

</files>

</component>


<component Cclass="CMSIS Driver" Cgroup="I2C" Cversion="1.0.0" condition="MVCM3 CMSIS-Core" maxInstances="3">

<description>I2C Driver for MVCM3 Series</description>

<RTE_Components_h>

#define RTE_Drivers_I2C0 /* Driver I2C0 */

#define RTE_Drivers_I2C1 /* Driver I2C1 */

#define RTE_Drivers_I2C2 /* Driver I2C2 */

</RTE_Components_h>

<files>

<file category="source" name="Drivers/I2C/I2C_MVCM3.c"/>

<file category="header" name="Drivers/I2C/I2C_MVCM3.h"/>

</files>

</component>


<component Cclass="CMSIS Driver" Cgroup="UART" Cversion="1.0.0" condition="MVCM3 CMSIS-Core" maxInstances="5">

<description>UART Driver for MVCM3 Series</description>

<RTE_Components_h>

#define RTE_Drivers_UART0 /* Driver UART0 */

#define RTE_Drivers_UART1 /* Driver UART1 */

#define RTE_Drivers_UART2 /* Driver UART2 */

#define RTE_Drivers_UART3 /* Driver UART3 */

#define RTE_Drivers_UART4 /* Driver UART4 */

</RTE_Components_h>

<files>

<file category="source" name="Drivers/UART/UART_MVCM3.c"/>

<file category="header" name="Drivers/UART/UART_MVCM3.h"/>

</files>

</component>

圖3-22

24. 在“MyVendor.MVCM3.pdsc”文件的 <examples>部分添加如下內容,如圖3-23所示:

<examples>

<example name="Dummy" doc="Abstract.txt" folder="Examples/dummy">

<description>Dummy project</description>

<board name="MVCM3 Starter Kit" vendor="MyVendor"/>

<project>

<environment name="uv" load="dummy.uvprojx"/>

</project>

<attributes>

<category>Getting Started</category>

</attributes>

</example>

</examples>

圖3-23

25. 在“MyVendor.MVCM3.pdsc”文件中添加新的版本信息,如圖3-24所示:

圖3-24

26. 安裝解壓工具7-Zip ,打開“gen_pack.bat”文件,修改“PackChk.exe”文件的路徑,如圖3-25所示:

圖3-25

27. 在命令行下運行“gen_pack.bat”,可以看到“Emdoor.MyPack.1.0.4.pack”的生成,如圖3-26所示:


圖3-26

四、驗證處理器PACK的功能

1. 雙擊“MyVendor.MVCM3.1.0.4.pack”安裝MVCM3的PACK包。

2. 創(chuàng)建一個新工程,驗證處理器名稱,如圖4-1所示:



圖4-1

3. 打開“Manage Run-Time Environment”,驗證啟動代碼與HAL部分,如圖4-2所示:


圖4-2

4. 找開選項配置部分,驗證SVD部分,如圖4-3所示:



圖4-3

5. 打開Flash下載窗體,驗證Flash部分,如圖4-4所示:


圖4-4

五、討論分析

1. 添加多個發(fā)布版本信息后,會無法生成PACK。

答:最新版本必須放在最前面。

2. 在PDSC文件中處理器的屬性說明,如“<book name="Docs/dui0552a_cortex_m3_dgug.pdf" title="Cortex-M3 Generic User Guide"/>”,不能隨意放。

答:需放在“<processor Dcore="Cortex-M3" DcoreVersion="r2p1" Dfpu="0" Dmpu="0" Dendian="Little-endian"/>”之后。


六、結論

經過完整的開發(fā)流程,基于CMSIS-Pack標準規(guī)范成功完成了Cortex-M處理器的Keil MDK Pack包制作。該軟件包嚴格遵循ARM架構技術規(guī)范,集成了目標處理器的完整設備支持文件(DFP),包含關鍵組件:寄存器定義頭文件、系統(tǒng)啟動代碼(Startup Code)、Flash編程算法。通過MDK工具鏈的自動化驗證測試,確認了Pack包在器件識別、代碼編譯、燒錄調試等環(huán)節(jié)的功能完整性。


注:

該文檔還需要完善,先發(fā)出供大家參考與交流。