工具/软件:Code Composer Studio
我在使用SimpleLink BLE项目使用的双"应用程序和堆栈"开发方法时遇到了一些令人上瘾的链接器问题。 我认为这个问题与此没有具体的关系,所以我是在这个论坛上发表意见。 我正在将CCS7与BLE SDK 2.2 和TI-RTOS 2.18 .0.31 0.3 配合使用。 我开始使用SimpleBLEPeripheral示例项目进行开发,并在保持"堆栈"部分不变的同时显著修改了"应用程序"部分。 为了便于更轻松地包含在修订控制系统(Git)中,我将唯一的源文件和项目文件移动到我的工作区,并链接到SDK中保留的通用,未修改的文件。 在对项目属性进行一些调整后,我能够在我的工作空间中构建单独的应用程序和堆栈项目,特别是包括堆栈项目生成的CCS_Linker_defines.cmd ,应用程序使用它来查找BLE堆栈函数入口点并设置可用的闪存/RAM限制。 例如:
/*
**堆栈边界生成器1.1 0 (2016年05月16日 20:46:03.19.4万)
****警告-自动生成的文件。 修改可能会丢失!
*/
--defe=icall_ram0_start=0x2000.4368万
--defe=ICALL_STACK0_START=0xf000
--defe=ICALL_STACK0_ADDR=0xf001
这必须在正常命令文件 C:\ti\simplelink\ble_SDK_2_02_01_18\common\cc26xx\cs\cc26xx_app.cmd之前按链接顺序发生
在我的应用程序项目中,我创建了一个名为stack_PROJ_LOC的新链接资源路径变量,我给了该变量的值${workspace_LOC}\ble_stack,并将其用于查找 CCS_Linker_defines.cmd。 CCS_Linker_defines.cmd和cc26xx_app.cmd在 项目的顶层目录中显示为链接文件。 另外,在“属性”->“生成”->“链接顺序”下,我添加了这两个文件,并对它们进行了排列,使CCS_Linker_defines.cmd位于顶部。 生成项目时生成ccsObjs.opt,如下所示:
“C:/workspace_ccs7/ble_stack/cs_linker定义.cmd”“C:/ti/simplelink/ble_SDK_2_00_31/src/common/cc26xx/CCS/cc26xx_app.cmd""./Drivers/PIN/PIN/PIN_CC26XX.OBJ/驱动程序".OBJ/If/ible/If/ip_lib_If/ip/ip/ip/ip/ip_lib/ip/ip/ip/ip_.ob_.obl/ip/ip/ip/ip/ip/ip/ip_lib_.
生成的输出正确受内存限制,并与堆栈构建正确链接(和运行)。
接下来,为了包含在Git中,我们决定将stack目录移动到app项目目录下,作为子模块。 在移动文件后,我使用了“文件”->“从文件系统打开项目...”来打开新的嵌套结构。 CCS打开了两个项目(带有Git标记),堆栈显示为不同的项目,但也作为应用程序项目内的目录(也带有Git标记)。 我将STACK_PROJ_LOC更改为${PROJEMENT_LOC}\ble_STACK,以匹配CCS_LINKER_REFLOES.cmd的新位置。 我还必须从构建中排除stack目录以避免错误。 所有内容都保持不变,包括链接顺序设置。 当我现在生成项目时,它会生成ccsObjs.opt,如下所示(我的重点是添加的):
"C:/ti/splelink/ble_SDK_2_02_00_31/src="/common/CC26xx/CS/CC26xx_app.cmd"./Drivers/PIN/PIN/PIN-26XX.""./Drivers/RF/RF.obj/RF.obj/lib_ART_lib/ip/ible/ip/ip/ip_obl/ac_./ip/ip/ip_.obl/ip/ip/ip/ip/ip/ip/ip/ip/ip_.
生成的输出未与BLE堆栈软件正确链接,并且无法正常工作。 我尝试了移动文件和重命名的各种组合,但结果是相同的。 特别是,链接顺序设置似乎根本没有任何影响。 我要做的唯一一件事(并匹配我原来的双目录项目)就是将 cc26xx_app.cmd复制到ble_stack目录中,并更改其名称,使其按字母顺序出现在CCS_Linker_defines.cmd之后(在这种情况下,它最终出现在链接行的末尾,但至少在cmd_CCS_defines.linker之后)。
链接顺序不工作是否有某些原因? 是否不允许使用嵌套这些项目的方法?
感谢您提供的任何帮助。
戴夫


