12下一页
返回列表 发新帖我要提问本帖赏金: 30.00元(功能说明)

[G32A] G32A1465 Keil快速建立工程并RTTView输出日志

[复制链接]
 楼主| 泡泡无敌1111 发表于 2024-12-21 00:17 | 显示全部楼层 |阅读模式
网上申请的Greey车规级MCU G321465开发板终于收到了,之前供应商帮忙申请,反馈确实不好申请,之前公司用的APM32E103系列用于替代ST的103系列,从样板到上千的批量得到产品验证,因为产品是从0到1全过程参与,因此比较有很深的心得,不仅硬件上兼容,软件上也同样兼容,大大减少了开发周期和验证测试周期。以前用过其他家的国产MCU方案,硬件上号称pin to pin兼容,但是软件上并不是这样的,开发和移植起来比较费劲,或多或少都是有不少坑。
言归正传,拿到G321465开发板后,官网上下载对应评估板的原理图和说明书资料,了解外设资源,因为之前供应商给过SDK开发包,于是用keil开始从搭建一个完整的软件工程。
第1步:安装PACK工具
在Keil 上安装G321465的PACK工具,这个直接在官方的SDK文件夹中选择Geehy.G32A1xxx_DFP.1.0.1进行安装,前提是安装好Keil IDE,顺便提醒以下Keil个人使用,商业应用还是建议使用正版工具。
第2步:创建工程目录文件夹
说明:
App文件夹下主要是应用层的文件;
BSP文件下主要是外设驱动文件;
Common文件夹下是通用共用的文件;
FreeRTOS文件夹下是RTOS的源码文件;
G32A1XXX_SDK文件夹是G32A1XXX的官方标准SDK文件;
Middlewares文件夹是G32A的一些中间件文件;
Project文件夹是工程的文件;
RTT_LOG文件夹是RTT日志打印的文件,免去串口助手,方便调试;
TaskApp文件夹是应用层的任务文件;
Keilkill是脚本文件,主要用于删除编译过程产生的中间文件,便于Gitlab提交管理;
第3部分:Keil创建工程,添加GROUP和文件路径


备注:
这么预留的FreeRTOS的文件目录,暂时没有添加,这里打算用一个ThreadX的操作进行移植,后续添加。
初次编译,如果弹出如下错误:请修改Linker文件,不使用默认的,直接找到SDK中的进行加载即可




配置好产生bin文件的脚本命令,其实这里可以自己增加一个自定义脚本,例如增加bin文件的版本信息、校验信息CRC32和MD5等,
$K\ARM\ARMCLANG\bin\fromelf.exe --bin--output $L@L.bin [url=mailto:$L@L.axf]$L@L.axf[/url]
这里采用ARMCLANG 而且是相对路径,这比网上其他的很多是绝对路径好很多,因为在实际项目中多人使用一个工程共同开发,安装路径不同,带来不少麻烦。


接着配置好系统时钟、配置好GPIO输出、RTT初始化、这样一个可用的工程就创建好了。
接下来配置J-Link RTT Viewer选择G32A1465芯片即可,然后选择SWD,地址自动识别,Jlink就可以不仅实现下载,还能输出日志调试。





打赏榜单

21ic小管家 打赏了 30.00 元 2025-01-21
理由:优质评测

WhisperingTrees 发表于 2024-12-22 20:51 | 显示全部楼层
为啥很多都喜欢用脚本调试啊,直接用编译器不是更方便吗
 楼主| 泡泡无敌1111 发表于 2024-12-24 11:21 | 显示全部楼层
WhisperingTrees 发表于 2024-12-22 20:51
为啥很多都喜欢用脚本调试啊,直接用编译器不是更方便吗

一看就是从事嵌入式项目开发时间不长,而且开发项目相对简单的,没有从事网络4G\WIFI\ETH的https TLS加密 、远程OTA批量下载的经验的才会这样问。
盗铃何须掩耳 发表于 2025-1-8 16:58 | 显示全部楼层
泡泡无敌1111 发表于 2024-12-24 11:21
一看就是从事嵌入式项目开发时间不长,而且开发项目相对简单的,没有从事网络4G\WIFI\ETH的https TLS加密 ...

我也准备问为啥用脚本的,因为我也没从事过无线通信开发,感谢解惑
我只会加减乘除 发表于 2025-1-8 17:02 | 显示全部楼层
RTT Viewer窗口打印的字符是通过什么函数输出的
TimeRiddle 发表于 2025-1-9 17:42 | 显示全部楼层
学习一下RTT Viewer的使用。
51xlf 发表于 2025-2-4 16:20 | 显示全部楼层
装的 Pack 版本要和芯片实际情况相匹配,版本过旧可能缺少必要的驱动和配置文件,版本过新则可能存在兼容性问题。
iyoum 发表于 2025-2-4 17:59 | 显示全部楼层
在代码中,使用SEGGER_RTT_printf()或其他RTT提供的函数来代替传统的printf函数,将数据发送到RTT Viewer。
updownq 发表于 2025-2-4 19:07 | 显示全部楼层
在代码中添加必要的错误处理代码,当 RTT 初始化或日志输出出现错误时,能够及时输出错误信息,方便调试和排查问题。
hilahope 发表于 2025-2-4 22:30 | 显示全部楼层
目标板的电源稳定,避免因电源问题导致的日志输出不稳定。
pmp 发表于 2025-2-5 08:06 | 显示全部楼层
在工程设置中配置串口参数,包括波特率、数据位、停止位等。
jonas222 发表于 2025-2-5 08:35 | 显示全部楼层
RTT缓冲区大小足够,避免日志信息丢失。可以在初始化时调整缓冲区大小
abotomson 发表于 2025-2-5 10:15 | 显示全部楼层
正确配置J-Link RTT Viewer,以便能够通过SWD接口与单片机通信,并输出日志调试信息。
sanfuzi 发表于 2025-2-5 11:46 | 显示全部楼层
在输出日志时,应选择合适的日志等级(如debug、info、warn、error),并避免输出无意义的日志或不携带上下文信息的日志。
abotomson 发表于 2025-2-5 12:47 | 显示全部楼层
在程序代码中包含SEGGER_RTT.h头文件,并调用SEGGER_RTT_Init()函数来初始化RTT系统。
dspmana 发表于 2025-2-5 14:15 | 显示全部楼层
在代码中适当位置调用 RTT 初始化函数,并进行必要的配置,如缓冲区大小、通道号等。注意不要在中断或频繁调用的函数中使用 RTT,以免影响系统性能和日志输出的完整性。
wengh2016 发表于 2025-2-5 14:45 | 显示全部楼层
在主程序中初始化RTT,通常在系统初始化阶段进行。
lihuami 发表于 2025-2-5 15:44 | 显示全部楼层
选择合适的调试器(如 J-Link、ST-Link 等),并配置好调试器的参数,如接口类型、时钟频率等,确保能够正常连接芯片进行调试。
albertaabbot 发表于 2025-2-5 16:37 | 显示全部楼层
合理设置工程的头文件包含路径,要把芯片的标准外设库头文件、RTT(Real Time Transfer)相关头文件等所在目录添加到工程的包含路径中,这样 Keil 编译时才能找到所需的头文件。
wangdezhi 发表于 2025-2-5 18:20 | 显示全部楼层
通过调用SEGGER_RTT_ConfigUpBuffer()等函数来配置RTT的输出缓冲区(通道)。可以设置多个通道,每个通道有不同的用途。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部