This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我的项目的目标是能够在同一个芯片上运行两个明显不同的功能、这些功能可通过属性进行配置(然后进行电源复位)。 我目前已经制作了2个传感器控制器项目、因此现在我想以一种与 CCS 集成的方式将两者的源代码包括在内、并且根据在非易失性存储器中指定的项目编号(可通过蓝牙修改)、它包含相关的 SCIF 文件。
这是我第一次尝试为项目中的每个目录创建单独的目录、然后根据检查内存的 if 语句包含该特定的目录、 但这实际上不起作用、因为每当我尝试构建它时、它都会为所有传感器控制器函数提供"__已定义"的错误(可能是通过构建它来删除分隔两个项目文件的自定义目录?)。 我不太熟悉编译设置、但是否有方法同时编译和包含一个目录或另一个目录中的文件?
还值得注意的是、当芯片打开时、我不需要切换项目、我当然可以在更改要使用的项目后进行电源复位、以便包含正确的文件。
P.S. 我注意到、对于以下两个项目、传感器控制器输出文件中实际上只有3个文件彼此不同:scif.h、scif.c 和 sce.lst。 其余的相同、我可以保留其中一个副本、但这三个文件在项目之间是不同的、因此它们是我需要根据指定的项目包含的文件。
谢谢!
Ali
您好、Ali、
目标是合并两个项目、以便您只有一个项目同时具有这两个项目的代码吗? 特定构建所需的源取决于存储在器件闪存中的值?
如果是这样、需要记住的是一个具有两 个特定构建配置的项目。 每个配置都将指定一组特定的源文件和构建选项、这些文件和构建选项特定于特定的"项目编号"
在用例上、我仍然有点困惑。 我想您必须从目标上的闪存中读取"项目编号"值(如何操作? 使用 CCS 读取存储器?) 一旦知道了该编号、就可以对该编号使用关联的构建配置。。。 ? 这有道理吗?
谢谢
Ki
您好 Ki、
感谢您的回答。
是的、没错。 我想将两个传感器控制器(SC)项目合并到一个简单外设项目中、并且能够根据存储在器件闪存中的值使用任一 SC 项目。 但要说明的是、我们的目标是将所有这些内容下载到外设上、以便 CC2640R2F 能够根据我存储到存储器中的 BLE 特性值在 SC 工程和 SC 工程2之间切换。 例如、流程是芯片运行 SC 项目1、然后我从手机写入特征值、这个新值存储在内存中、然后下次芯片电源复位时、它将运行 SC 项目2。 希望这有道理。
我认为这是不同的。 见上文第点。 我的目标是更改编译的设置、以便两个 SC 工程可以共存(可能在不同的目录中?) 在一个构建项目中、因此在 SimplePeriphal.C 中、我可以执行类似的操作
if (MEMORY ==1)
#include SCproject1/scif.h
其他
#include SCproject2/scif.h
希望这一点能有所澄清。 现在、当我尝试执行此操作时、项目无法编译、因为它为 scif.h 中的所有方法提供了重新定义错误
谢谢!
Ali
[引用 user="Ali Mirzazadeh">但要说明的是、目标是将所有这些内容下载到外设中、以便 CC2640R2F 能够根据我存储到存储器中的 BLE 特性值在 SC 工程和 SC 工程2之间切换。 例如、流程是芯片运行 SC 项目1、然后我从手机写入特征值、这个新值存储在内存中、然后下次芯片电源复位时、它将运行 SC 项目2。 希望这是有道理的。[/引述]
根据我使用传感器控制器的长期经验、您想要做的并不是理想的。 如果您想在运行时使用另一个传感器控制器项目、则需要重新初始化传感器控制器、这意味着您需要重新初始化器件。
-kel
您好 Kel、重新初始化是否意味着关闭然后重新打开? 如果是、这是很好的。 我不需要立即执行另一个项目。 为了实现这一点、您做了什么?
谢谢!
Ali
您好!
我有一个具有2个传感器控制器程序文件的 CCS 工程、该工程存储在 CCS 工程的2个单独文件夹中。 构建时不包括其他未使用的传感器控制器文件夹。 此外、我还为正在使用的传感器控制器文件夹设置了包含选项。
原因是 CCS 工程可配置为适用于 Launchpad 和定制板。
-kel
尊敬的 Kel:
感谢您的快速响应。 我明白了。 这就是我想做的几乎完全一样的事情。 我有2个问题:
1.如何从编译中排除? 我在工作区的项目文件夹中创建了两个目录、 但是,即使我将 include 置于特定的主管,程序似乎正在尝试构建这两个程序...我觉得这可能是因为无论包含与否,编译设置都会自动在主项目文件夹中构建所有内容? 您如何设置目录以使其正确地从编译中排除?
2.如果我错了、请更正我、但我对您的方法的理解是、在构建和启动程序后无法切换、切换只能通过在 CCS 中设置包含选项来完成? 如果是、您是否知道在器件加电时进一步执行此操作并编译两个 SC 工程但排除/包含其中一个或另一个的方法? 如果不是、您的方式对我来说是第二个最佳选择、但如果可以这样做、那将是理想的选择。
非常感谢!
Ali
您好、Ali、
关于如何最好地设置您的项目、我请 Kel 回答。 但从通用工具的角度来看、以下内容:
[引用 user="Ali Mirzazadeh]1. 如何从编译中排除? 我在工作区的项目文件夹中创建了两个目录、 但是,即使我将 include 置于特定的主管,程序似乎正在尝试构建这两个程序...我觉得这可能是因为无论包含与否,编译设置都会自动在主项目文件夹中构建所有内容? 如何设置目录以使其正确地从编译中排除?
默认情况下、CCS 将假定将编译属于工程一部分的所有源文件。 但您可以显式 指定要从编译中排除的文件/文件夹。 此排除项适用于当前编译配置。 这就是我之前提到的构建配置的优点。 您可以有多个编译配置、这些配置排除不同的文件并具有不同的预处理器定义值
谢谢
Ki