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.
工具/软件:TI C/C++编译器
使用编译器版本15.2 .................5 LTS,我尝试将信号处理(TI的报头将其定义为指向对象的连接指针)置于连接结构中以进入闪存。 如果初始化赋值是另一个const数据类型,编译器似乎做了错误的事情,并将整个结构置于RAM中。 该文件是C++文件。
typedef ti_SysBIOS_KNL_semaphore_Object* ti_SysBIOS_KNL_semaphore_handle; const ti_SysBIOS_KNL_semaphore_handle my_SEM =&sum_semaphore; struct myt { ti_SysBIOS_KNL_structionore_handle handle;const //放置在.sem = mystruct mystruct <={= mystruct mystruct mystruct mystruct <= mystrut/mystrut}中
在C中,您可以这样做,但C++确实允许const表达式赋值。 问题是SYS-BIOS将其定义为const表达式
const ti_SysBIOS_KNL_semaphore_handle my_SEM =(ti_SysBIOS_KNL_semaphore_handle)((ti_SysBIOS_KNL_semaphore_handle)&ti_SysBIOS_KNL_semaphore_Object__table_V[2]);
因此,我不能按您描述的方式使用它,而是必须使用SYS-BIOS提供的句柄。
作为对这个主题的回应,我在SDOWP系统中提交了两个条目。 一个是文档中的错误。 另一个则要求改进编译器。
Entry CodeGen-2354是ARM编译器手册中的一个错误。 手册指出.const部分中有一个标记为const的变量(少数例外)。 这适用于C ,但不适用于C++。 在C++中,等号右侧的表达式可以不仅仅是简单常量或地址。 发生这种情况时,变量不会放在.const部分中。 例如...
Kaveh Vaghofi 说:.handle = my_SEM
表达式my_SEM不是地址,而是内存位置。 无法在构建时对其进行评估。 因此,y不会放在.const中。
条目 代码Gen-2355不报告错误,但要求改进。 在这种情况下,如果my_sem可以替换为&some信号量,那么y可以放置在.const中。
欢迎您使用我签名中下面的SDOWP链接关注这些条目。
谢谢,此致,
-George
太好了,感谢您清除这些信息并提交这些条目。 我对您所指的地址和内存位置之间的区别仍然很好奇。 从编译器的角度来看,我认为它将地址视为与您所说的'存储位置'有根本不同的东西。 我假设'mory loca'只是被当作一个32位整数,编译器不知道它的实际地址,所以它不把它当作是这样的。 是这样吗?
听起来,如果实现CodeGen-2355,它将执行此处所需的操作。 从根本上说,我尝试将静态创建的SYS-BIOS对象引用存储在闪存中,而不是存储在RAM中(这在嵌入式环境中似乎是一件合理的事情)
我将使用比您的示例简单的示例进行解释,但在重要方面是相同的。
const int *global_ptr =变量(&variable;
...可以在构建时进行评估。 请将其与...
const int *global_ptr = another _ptr;
表达式another _ptr不是地址。 它是必须读取的内存位置。 这只能在运行时发生。 C中不支持此功能 ,但C++中支持此功能。
谢谢,此致,
-George
啊。 为了扩展您的示例,如果another _PTR是在编译时从某个地址声明的连接,那么为什么编译器不能以可传递的方式连接这两者?
const int * const another _ptr =&variable; //可以在构建时进行计算 const int *global_ptr1 =&variable; //不能在构建时进行计算? const int *global_ptr2 = another _ptr;
sys-bios声明`const ti_SysBIOS_KNL_semaphore_handle`是typedef指针。 为什么在编译时不能将const指针作为地址求值?
Kaveh Vaghofi 说:为什么编译时不能将const指针作为地址求值?[/QUOT]
这是编译器优化。 我提交CodeGen-2355以请求编译器实现它。
谢谢,此致,
-George