[学习笔记] 【杰发科技AC7840x测评】分享一些例程调试出错的解决方法

[复制链接]
5237|2
 楼主| lulugl 发表于 2023-11-27 08:12 | 显示全部楼层 |阅读模式
本帖最后由 lulugl 于 2023-11-27 08:16 编辑

#申请原创#
【前言】
官方的提供的例程当中,我看到对IAR的支持比较多一些,keil可能只支持v5的编译器,所以在使用AC6以上的版本会遇到一些编译上的问题。下面是我在使用中遇到的一些问题,问题描述、原因分析、以及解决办法分享如下,希望对大家使用中有些帮助。
【问题1】
debugout_ac7840x.c中报__FILE重复定义:
3b95100563939c6ea169767f4fc8a30a
【原因】:
_FILE在stdio.h中有定义,所以出现了重复定义的错误。
d385d61f88c8e5eb6af5169570fe4bc1
【解决方法】
直接注释debugout_ac7840.c中的结构体定义。
e67e22ffa6df7f3f37ab6acd0a875aa6
【讨论】
其实我也不知道这里重复定义这个是出于什么原因,还请官方来解释一下。
【问题二】
在i2c_master_dma_sample.c中出现在数组未定义的错误。
f74644341dfac6f1753742537330959e
【原因】
  1. #if    defined ( __ICCARM__ )        /* IAR Compiler */
  2. uint8_t g_rxBuff[I2C_RX_SIZE] @0x20000000 = {0};
  3. uint8_t g_txBuff[I2C_TX_SIZE] @0x20000000 = {0};
  4. #elif  defined ( __CC_ARM )        /* Arm Compiler */
  5. uint8_t g_rxBuff[I2C_RX_SIZE] __attribute__((at(0x20000000))) = {0};
  6. uint8_t g_txBuff[I2C_TX_SIZE] __attribute__((at(0x20000200))) = {0};
  7. #endif

在这个定义收发数组时,出于两个条件都不满足所以出现数组未定义,用AC5时,__CC_ARM是默认定义的,改为AC6后,就没有定义了,需要增加AC6的要件编译。
【解决方法】
增加条件编译:
  1. <span style="font-weight: normal;">#if    defined ( __ICCARM__ )        /* IAR Compiler */
  2. uint8_t g_rxBuff[I2C_RX_SIZE] @0x20000000 = {0};
  3. uint8_t g_txBuff[I2C_TX_SIZE] @0x20000000 = {0};
  4. #elif  defined ( __CC_ARM )        /* Arm Compiler */
  5. uint8_t g_rxBuff[I2C_RX_SIZE] __attribute__((at(0x20000000))) = {0};
  6. uint8_t g_txBuff[I2C_TX_SIZE] __attribute__((at(0x20000200))) = {0};
  7. #elif  defined (__clang__)        /* Arm V6 Compiler */
  8. uint8_t g_rxBuff[I2C_RX_SIZE] __attribute__((at(0x20000000))) = {0};
  9. uint8_t g_txBuff[I2C_TX_SIZE] __attribute__((at(0x20000200))) = {0};
  10. #endif</span>

【讨论】
由于mdk的版本升级导至有些条件编译不对,可能杰发的工程师大大们是老鸟,一直老版开发,所以没有考虑到新版本的keil编译器,所以出现这个问题,建议修复一下这个问题。

昨天我收到开发板后,跑了好一些例程,都出现一些问题,早上起来,感觉还是记录一下好。如果描述的问题以太原因不对,请及时联系我,并及时修正。
710966563da94de7e2.png
木偶ll 发表于 2023-11-27 10:10 | 显示全部楼层
本帖最后由 木偶ll 于 2023-11-27 10:11 编辑

嗯,是的,暂未对AC6进行适配问题一是AC5和AC6对printf重定向方法不一样导致,目前只内置了AC5的重定向
 楼主| lulugl 发表于 2023-11-27 15:50 | 显示全部楼层
木偶ll 发表于 2023-11-27 10:10
嗯,是的,暂未对AC6进行适配问题一是AC5和AC6对printf重定向方法不一样导致,目前只内置了AC5的重定向
...

可以在例程中的说明文档注明编译环境。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

844

帖子

12

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