本帖最后由 raspRun 于 2025-6-24 14:23 编辑
#申请原创# #每日话题# #有奖活动# #技术资源#
前段时间在摸索G32A14xx芯片配套MCAL的应用平台,接下来对MDK开发环境的搭建和使用过程做以下记录,供大家参考学习。
1 MDK(KEIL)安装Ø MDK版本建议使用V5.36及以上版本,编译器使用V6.16版本,安装过程一路默认安装即可。 Ø 安装芯片pack包Geehy.G32A1xxx_DFP.1.0.2.pack:打开已安装好的KEIL,点击如下图红色框所示的图标,进入pack安装界面 Ø 进入pack安装界面,点击File->Import Ø 在弹出的对话框中选择pack包,然后点击打开即可 2 Jlink驱动安装 建议安装7.96i版本及以上的Jlink驱动,因为从这个版本开始支持了G32A14XX系列的平台。安装过程没有特别要注意的,一路默认安装即可。 3 MDK使用说明根据项目需求将FEE、GPT 、WDG、SPI、LIN 、CAN、ADC、PWM 和 ICU 模块集成创建应用项目,具体创建MDK工程的步骤此处不再赘述,可查询相关资料。工程创建完毕后,配置如下文件。其中G32A1445_App.bat和G32A1465_App.bat用于项目芯片平台配置文件切换,关于其实现方法,在接下来的帖子中陆续分享给大家。
3.1 工程配置打开工程后,进入KEIL工程界面,默认打开的是G32A1445平台,如果要切换到G32A1465平台,可以点击下图中的标号1对应的红色框中的图标,然后在下拉框中选择G32A1465即可。点击下图中的标号2对应的红色框中的图标进入对用平台的配置界面: Ø 进入Device配置界面,选择芯片型号: Ø 进入Target界面,配置编译器类型等: Ø 进入C/C++界面添加全局宏定义和引入头文件路径,用户模式需添加宏MCAL_ENABLE_USER_MODE_SUPPORT: Ø 进入Asm界面: Ø 进入Linker界面,配置链接文件: Ø 进入Debug界面,选择调试器,然后点击Settings进入调试器配置界面: Ø 进入调试器配置界面,在弹出的Debug界面中选择SWD调试 Ø 进入Flash Download界面,配置烧录算法等: 选择烧录算法后,点击确定,完成工程所有配置。
3.2 编译和下载Ø 在工程界面的工具栏中编译、烧录和调试相关的内容如下图所示: Ø 编译过程中输出的log信息,可以在Build Output中查看: 3.3 平台切换配置 Ø 点击工程界面中如下图标号1对应的方框,在下拉框中选择要切换的平台: 如要切换到G32A1465平台,则选择G32A1465,切换后如下图: Ø 然后在工程目录中双击运行G32A1465_App.bat批处理文件,完成Config目录中的配置文件的切换: Ø 以上两步操作完成后,就实现了工程从G32A1445平台到G32A1465平台的无感切换,关于芯片平台切换的实现方法,在接下来的帖子中陆续分享给大家。 3.4 链接脚本使用及编写根据使用芯片平台,需在工程中配置对应的链接脚本。 G32A1445存储资源分配: Ø 512KB Flash根据需求可将其分为以下段资源,根据项目开发需求可做动态调整。 LR_FLASH0x00000000 0x00080000{ // 定义总的闪存区域,从0x00000000开始,大小为0x80000(512KB) ER_flash_rsvd1_region0x00000000 FIXED 0x00000008 { * (.rcw +First) // 固定位置的启动配置区域,存放重启配置字等 }
ER_flash_rsvd2_region0x00000400 FIXED 0x00000010 { *(.flash_config) // 固定位置存放闪存配置数据 }
ER_flash_rsvd_fls_region0x00000410 FIXED 0x00000080 { *(.acfls_code_rom) // 固定存放FLS(Flash Security)相关的代码 }
ER_flash_rsvd_eep_region0x00000490 FIXED 0x00000158 { *(.aceep_code_rom) // 固定存放EEPROM相关的代码 }
ER_app_code_region0x000005e8 FIXED { * (.mcal_text*) * (.text*) *(InRoot$$Sections) .ANY (+RO) // 应用程序的只读代码区,包括MCAL代码、普通代码段以及根目录中的段 }
ER_app_ro_data_region+0 { * (.rodata*) *(.mcal_const_cfg*) * (.mcal_const*) // 只读数据区,如常量和配置 }
ER_app_startup_region+0 { * (.startup) * (.systeminit) // 系统启动相关的初始化代码 }
ER_iram_intvec_region0x1FFF8000 0x3C2 { *(.intc_vector*) // 中断向量表存放区 }
ER_app_data_region0x1FFF83D0 NOCOMPRESS { * (.mcal_data*) * (.data*) // 应用数据区(初始化数据) }
ER_app_ram_code_region+0 { * (.ramcode) // RAM中的代码区域 }
ER_app_bss_no_cache_region+0 { *(.mcal_bss_no_cacheable) // 不可缓存的BSS段(未初始化全局变量) }
ER_app_data_no_cache_region+0 { *(.mcal_data_no_cacheable) // 不可缓存的数据段 }
ER_app_bss_region+0 { * (.mcal_bss*) * (.bss*) // BSS段(未初始化全局变量) }
ARM_LIB_STACK0x20006E00 -0x00000400 { * (.stack_main*) // 栈区,大小0x400(1024字节) }
;ARM_LIB_HEAP +0EMPTY 0x00000400 { ;} // 堆空间 Ø 60KB SRAM根据需求可将其分为以下段资源,根据项目开发需求可做动态调整。 ER_iram_rsvd_fls_region0x20006E10 EMPTY 0x00000060 { // RAM中的FLS区域 }
ER_iram_rsvd_eep_region0x20006E70 EMPTY 0x00000158 { // RAM中的EEPROM区域 }
ER_iram_results_region0x20006FC8 EMPTY 0x00000038 { // RAM中的结果存储区 }
ER_iram_end_region0x20007000 EMPTY 0x00000000 { // RAM区域结束标志 } }
至此MCAL基于MDK的开发环境搭建及其项目应用解析完毕,可正常在MDK上开发项目。
|