小编Rob*_*obC的帖子

STM32 IAR 没有 ITM 跟踪输出,除非代码中包含 printf

我有一个小项目,我添加了自己的自定义调试功能,这样我就可以拥有一些额外的功能。他们一直工作得很好,并使用以下方法发送数据:

while(*bp)
  ITM_SendChar(*bp++);
Run Code Online (Sandbox Code Playgroud)

我终于开始切换所有 printf 语句以使用我自己的函数,并且所有输出都停止了。稍微玩了一下,我发现只要我编译了一个 printf 函数,无论在哪里,ITM_SendChar 都能正常工作。

当在项目中使用 printf 时,似乎编译了一些功能,允许 ITM_SendChar 工作。

这不是什么大不了的事,但我很好奇为什么会这样。是否有另一种方法可以初始化 ITM(仪器跟踪宏单元)系统,而不必插入虚拟 printf?

embedded printf stm32 iar cortex-m

5
推荐指数
1
解决办法
1280
查看次数

VHDL整数范围包括在内?FPGA与仿真的区别

我是FPGA的新手.我一直在做一些简单的测试,我发现了一个我不完全理解的问题.

我有一个50MHz的时钟源.

我有一个信号定义为:

SIGNAL ledCounter : integer range 0 to 25000000 := 0;
Run Code Online (Sandbox Code Playgroud)

当ledCounter达到25,000,000时,我切换LED并重置计数器.这在FPGA上直接起作用.

IF (rising_edge(CLK)) THEN
    ledCounter <= ledCounter + 1;

    IF (ledCounter = 25000000) THEN
        ledCounter <= 0;
        toggle <= not toggle;
        LED(0) <= toggle;
    END IF;
END IF;
Run Code Online (Sandbox Code Playgroud)

当在ModelSim内部运行时,当计数器达到25000000时,我得到一个错误.为了在模拟器中运行,我必须将范围定义为:

SIGNAL ledCounter : integer range 0 to 25000001 := 0;
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么会这样?代码在FPGA上运行良好,但如果没有上述修改,则无法在模拟器中运行.

编辑:modelsim错误是非描述性的:由于致命错误无法继续.HDL呼叫序列.停在C:/Users/robert/Documents/fpga/testsim/test.vhd 20 Process line__17

fpga vhdl modelsim intel-fpga

4
推荐指数
1
解决办法
772
查看次数

标签 统计

cortex-m ×1

embedded ×1

fpga ×1

iar ×1

intel-fpga ×1

modelsim ×1

printf ×1

stm32 ×1

vhdl ×1