打印
[G32A]

基于MDK环境的G32A14xx MCAL项目开发应用

[复制链接]
29|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
raspRun|  楼主 | 2025-6-26 08:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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使用说明
根据项目需求将FEEGPT WDGSPILIN CANADCPWM ICU 模块集成创建应用项目,具体创建MDK工程的步骤此处不再赘述,可查询相关资料。工程创建完毕后,配置如下文件。其中G32A1445_App.batG32A1465_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上开发项目。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

8

帖子

0

粉丝