使用cmake进行无代码编译

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
阿伦Thirunavuk……
离线
最后看到:2个月1个星期前
加入:2020-06-22 13:06
使用cmake进行无代码编译

嗨,团队,

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

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

我认为你看到这是由于免费Keil IDE/Compiler的32kByte代码限制。在这个阈值之下,无代码不会链接。

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

//#if define (USE_AT_BINARY_MODE)&&define (__DA14531__) #if define (__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_CENTRAL //#define USE_AT_GAPSCAN //#define USE_AT_SLEEP # //#define USE_AT_SLEEP//#define USE_AT_PIN //#define USE_AT_FLOWCONTROL //#define USE_AT_CONPAR //#define USE_AT_BND //#define USE_AT_SEC

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

/ MHv

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

你好,

似乎我们需要定义USE_AT_CONPAR,因为当我注释掉它时,在user_at_commanddc中的“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周3天前
工作人员
加入:15 2013-12-06
我构建了数据泵变体

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

//#define USE_AT_BINARY_MODE &&define (__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_CENTRAL //#define USE_AT_GAPSCAN //#define USE_AT_GAPCONNECT //#define USE_AT_SLEEP//#define USE_AT_PIN //#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周3天前
工作人员
加入:15 2013-12-06
有很多东西可供选择

有很多东西可供选择。下面是一个例子:

//#define USE_AT_BINARY_MODE &&define (__DA14531__) #if define (__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_CENTRAL //#define USE_AT_GAPSCAN //#define USE_AT_GAPCONNECT #define USE_AT_SLEEP #defineUSE_AT_PIN //#define USE_AT_FLOWCONTROL #define USE_AT_CONPAR //#define USE_AT_BND //#define USE_AT_SEC #if !define (USE_AT_BINARY_MODE) #if !define (USE_SET_TWO) #define USE_AT_PRINT //#define USE_AT_HNDL //#define USE_AT_EVENT //#define use_at_broadcast //#define USE_AT_RANDOM //#define USE_AT_MAXMTU //#define USE_AT_PWM #ifCMD_LOCAL_SOURCE==CMD_UART #define USE_AT_BAUD #endif #elif define (USE_SET_TWO) #if (CMD_LOCAL_SOURCE//#define USE_AT_RSSI //#define USE_AT_HRTBT #define USE_AT_CMD #endif //!USE_AT_BINARY_MODE

/ MHv