使用cmake的无代码编译

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
6个岗位/ 0个新岗位
最后发表
阿伦Thirunavuk……
离线
最后看到:2个月1周前
加入:2020-06-22 13:06
使用cmake的无代码编译

嗨,团队,

我们正在尝试使用CMake在无代码SDK中构建无代码5xx项目。我们包含了必要的文件和代码,但在链接“内存区域LR_FREE的无效长度”时出现了错误。我该如何解决这个问题

MHv_Dialog
离线
最后看到:2周2天前
工作人员
加入:15 2013-12-06
我想你们已经看到了

我认为你看到这个是因为免费Keil IDE/编译器的32kByte代码限制。CodeLess没有低于这个阈值的链接。

尝试删除对一些无代码命令的支持,如下所示(user_at_commands.h的第44行以后):

//#if defined(USE_AT_BINARY_MODE)&&defined(__DA14531__) #if defined(__DA14531__) #define USE_AT_BDADDR #define USE_AT_IO #define USE_AT_GAPSTATUS #define nUSE_AT_ADVDATA #define nUSE_AT_ADVRESP #define USE_AT_ADVSTOP #define USE_AT_ADVSTART //#define USE_AT_GAPSCAN //#define USE_AT_GAPCONNECT //#define USE_AT_SLEEP //#define USE_AT_FLOWCONTROL //#define USE_AT_BND //#define use_at_bd_sec

并查看项目链接是否正确。

/ MHv

阿伦Thirunavuk……
离线
最后看到:2个月1周前
加入:2020-06-22 13:06
你好,

你好,

似乎我们需要定义USE_AT_CONPAR,因为当我注释掉它时,在user_at_commandc中的“user_at_maxmtu”函数中有一个错误,因为它有“conn_conf”这个依赖于USE_AT_CONPAR的参数。当我取消注释“USE_AT_CONPAR”时,发生了内存区域LR_FREE的无效长度错误。我们知道Keil有32KB的限制,所以我们使用CMake工具来构建我们的项目。我们可以从通用的“6.0.14.1114”SDK构建prox_reporter项目。但是,我们不能建立无代码项目。

MHv_Dialog
离线
最后看到:2周2天前
工作人员
加入:15 2013-12-06
我构建了数据泵的变体

我构建了CodeLess的数据泵变体,并假设您正在构建独立变体,当USE_AT_CONPAR被省略时会导致错误。尝试使用以下配置构建独立版本:

//#if defined(USE_AT_BINARY_MODE)&&defined(__DA14531__) #if defined(__DA14531__) #define USE_AT_BDADDR //#define USE_AT_IO #define USE_AT_GAPSTATUS #define nUSE_AT_ADVDATA #define nUSE_AT_ADVRESP #define USE_AT_ADVSTOP #define USE_AT_ADVSTART //#define USE_AT_GAPSCAN //#define USE_AT_GAPCONNECT //#define USE_AT_SLEEP //#define USE_AT_FLOWCONTROL #define USE_AT_CONPAR //#define USE_AT_BND //#define USE_AT_SEC

您使用的底层工具链是什么?我仍然怀疑您正在与32kByte的限制作斗争。

/ MHv

阿伦Thirunavuk……
离线
最后看到:2个月1周前
加入:2020-06-22 13:06
你好,

你好,

由于Keil不链接超过32KB的文件,我们使用CMake来创建makefile,并使用“gcc-arm-none-eabi-9-2020-q2-update”工具链来构建我们的项目。我们可以建造这个项目。我们还需要“USE_AT_ADVDATA”为我们的项目。你没有在上面的项目中使用。在您的文档中,您提到为了使用ADVDATA,我们需要删除其他AT命令。我们只需要基本和ADVDATA命令。那么,我们可以删除哪些命令而不影响功能呢?

MHv_Dialog
离线
最后看到:2周2天前
工作人员
加入:15 2013-12-06
有很多选择

有很多选择。这里有一个例子:

//#if defined(USE_AT_BINARY_MODE)&&defined(__DA14531__) #if defined(__DA14531__) #define USE_AT_BDADDR #define USE_AT_IO #define USE_AT_GAPSTATUS #define USE_AT_ADVDATA #define USE_AT_ADVRESP #define USE_AT_ADVSTOP #define USE_AT_ADVSTART //#define USE_AT_GAPSCAN //#define USE_AT_GAPCONNECT #define USE_AT_SLEEP #define use_at_appin //#define USE_AT_BND #define USE_AT_SEC #if !defined(USE_AT_BINARY_MODE) #if !defined(USE_SET_TWO) #define USE_AT_PRINT //#define USE_AT_HNDL //#define use_at_broadcast //#define USE_AT_MAXMTU //#define USE_AT_PWM #if CMD_LOCAL_SOURCE==CMD_UART #define USE_AT_BAUD #endif #elif defined (USE_SET_TWO) #if (CMD_LOCAL_SOURCE != CMD_SPI) #if !defined (CFG_SPI_FLASH_ENABLE) #define USE_AT_SPI #endif #endif //#define USE_AT_DLEEN //#define USE_AT_MEM //#define USE_AT_HOSTSLP //#define USE_AT_ADC //#define USE_AT_I2C//#define USE_AT_PWRLVL //#define USE_AT_RSSI //#define USE_AT_HRTBT #define USE_AT_CMD #endif //! USE_SET_TWO #endif //!USE_AT_BINARY_MODE

/ MHv