标签: xtensa

for循环被忽略(优化?)out

我使用for/while循环来实现代码中的延迟.延迟的持续时间在这里并不重要,尽管它足够大而值得注意.这是代码片段.

uint32_t i;

// Do something useful

for (i = 0; i < 50000000U; ++i)
{}

// Do something useful
Run Code Online (Sandbox Code Playgroud)

我观察到的问题是这个for循环不会被执行.它可能会被编译器忽略/优化.但是,如果我i通过volatile 限定循环计数器,则for循环似乎执行,我确实注意到执行中所需的延迟.

对于使用/不使用volatile关键字的编译器优化的理解,这种行为似乎有点违反直觉.

即使循环计数器得到优化并存储在处理器寄存器中,计数器是否仍然可以工作,也许延迟较小?(因为内存提取开销被废除了.)

我正在构建的平台是Xtensa处理器(由Tensilica提供),C编译器是由Tensilica提供的,Xtensa C/C++编译器以最高级别的优化运行.

我尝试使用gcc 4.4.7with -o3和ofast优化级别.在这种情况下,延迟似乎有效.

c timedelay delay compiler-optimization xtensa

6
推荐指数
1
解决办法
1081
查看次数

Xtensa 指令:L32R - 加载了哪个地址?

我正在尝试阅读一些 xtensa 汇编代码,但被 L32R指令:

例如,给出以下行:

0000 2f04 <my_func>:
     2f0c:  ffef21          l32r    a2, 2ec8
Run Code Online (Sandbox Code Playgroud)

这会加载哪个地址?

memory embedded assembly processor xtensa

2
推荐指数
1
解决办法
2018
查看次数

xtensa dissembly 中的大括号

我正在反汇编和检查(主要是为了乐趣和学习)为 ESP8266 (Xtensa ISA) 生成的 Arduino 代码。

到目前为止,我一直在跟踪代码,没有出现任何问题,直到4010f4c2主函数中的大括号(位置):

4010f494 <main>:
4010f494:   90a092                  movi    a9, 144
4010f497:   c01190                  sub a1, a1, a9
4010f49a:   00a022                  movi    a2, 0
4010f49d:   236102                  s32i    a0, a1, 140
4010f4a0:   2261c2                  s32i    a12, a1, 136
4010f4a3:   2161d2                  s32i    a13, a1, 132
4010f4a6:   ffc2c5                  call0   4010f0d4 <print_version>
4010f4a9:   202110                  or  a2, a1, a1
4010f4ac:   001045                  call0   4010f5b4 <eboot_command_read>
4010f4af:   00d256                  bnez    a2, 4010f4c0 <main+0x2c>
4010f4b2:   024c                    movi.n  a2, 64
4010f4b4:   fee101                  l32r    a0, 4010f038 <_stext+0x38>
4010f4b7: …
Run Code Online (Sandbox Code Playgroud)

assembly arduino objdump esp8266 xtensa

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

微控制器(esp32)使用x86还是arm,我可以在这些MCU中安装Linux

我正在进入微控制器,所以我想知道像esp32和esp8266这样的微控制器和其他同类产品是基于x86还是arm架构?我尝试在互联网上搜索,但没有得到足够的线索

如果它使用这两种架构中的任何一种,是否有机会在这些控制器中安装Linux,我想到了这一点,因为freeRTOS说它是微控制器的操作系统,我认为它不是

但不知何故,如果它是一个操作系统,那么像Linux这样的其他操作系统呢,他们今天有机会安装在MCU中吗?或者甚至在未来五年内他们有机会吗?

microcontroller x86 operating-system arm xtensa

-1
推荐指数
1
解决办法
220
查看次数