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.
我可以解决使用多个延迟调用的问题。 仅供参考。 文档错误或存在错误。
根据 SPRUHV7C 中的表5-4–2014年7月–2018年7月修订
void _delay_cycles (unsigned int cycles); 针对指定的周期数改变 PRU 执行的延迟时间。
周期数必须是常数。
任何超过 int32_MAX (有符号整型)的值都会导致64位翻转错误。
警告! 第106行:[W0001]常数值超出范围,
将被截断为32位
LDI32 r0923372035781033983
在截断后、这会导致不正确的等待时间。
工具链版本号
PRU C/C++编译器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU EABI C/C++解析器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++文件合并 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++优化器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C/C++代码生成 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 汇编器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 嵌入实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C 源代码接口 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 链接器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 绝对列表器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 符号去除实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU XREF 实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU C++还原器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 十六进制转换器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 名称实用程序 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 目标文件显示 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
PRU 归档器 v2.3.3
内部版本号1TKVO-2LI-UASAR-TAR-C08D
要重现的示例代码
#include <stdint.h> const uint32_t MAX_CYCLES_WITHOUT_ERROR = INT32_MAX; void main(void) { __delay_cycles(MAX_CYCLES_WITHOUT_ERROR); __delay_cycles(MAX_CYCLES_WITHOUT_ERROR+1); }
感谢您提交该示例代码。 当我建立它,我看不到一个类似...
Unknown 说:警告! 第106行:[W0001]常数值超出范围,
将被截断为32位
LDI32 r0923372035781033983
对于确实会看到此诊断的源文件、 请按照 如何提交编译器测试用例一文中的说明进行操作。
谢谢。此致、
-乔治
George
我使用的是独立的 Linux 工具链。 我仍然看到相同的警告。
TI_CGT_PRU_2.3.3_Linux-x64
readme.txt 提示
TI PRU C/C++代码生成工具
2.3.3版本说明
2019年11月
从编译器目录中编译示例文件。
无选项
$ bin/clpru -i 包含 main.c
"/tmp/TIDny1tPjK5、警告! 在第76行:[W0001]常数值超出范围,
将被截断为32位
LDI32 r0923372035781033993
无装配错误、1个装配警告
CCS 和独立版本可能会有所不同。
我将查看链接并重新提交测试用例。 不确定它是否比我目前拥有的简单。
Linux x86 PRU 交叉编译器2.3.3
CGT link 软件开发 ti_cgt_pru_2.3.3_linux_installer_x86.bin
在主目录中安装编译器工具
选项设置将警告发出为错误(-pdew)
Makefile
CC := "${HOME}/ti/ti-cgt-pru_2.3.3/bin/clpru" #----------------------------------------------------------------------------- # Name the object files #----------------------------------------------------------------------------- OBJS := main.obj #----------------------------------------------------------------------------- # Develop C_OPTS: The compiler build options #----------------------------------------------------------------------------- C_OPTS := -I${HOME}/ti/ti-cgt-pru_2.3.3/include -k -ss -al --gen_preprocessor_listing -pdew #----------------------------------------------------------------------------- # Link build rule #----------------------------------------------------------------------------- test_case.out : $(OBJS) $(CC) -z -i${HOME}/ti/ti-cgt-pru_2.3.3/lib --rom_model $(OBJS) -llibc.a -o=$@ #----------------------------------------------------------------------------- # Compile build rule #----------------------------------------------------------------------------- %.obj : %.c $(CC) -version $(CC) $(C_OPTS) $<
源文件
#include <stdint.h> const uint32_t MAX_CYCLES_WITHOUT_ERROR = INT32_MAX; void main(void) { __delay_cycles(MAX_CYCLES_WITHOUT_ERROR); __delay_cycles(MAX_CYCLES_WITHOUT_ERROR+22); }
感谢您提交测试用例。 我可以重现相同的行为。 这是几年来第一次在 Linux 上出现问题。 我没想到会这样。 我提交了 EXT_EP-11231 来对此进行调查。 我们欢迎您通过这个链接来了解这一点。
谢谢。此致、
-乔治