问题标签 [xtensa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6720 浏览

c++ - 危险的重定位错误是什么意思?

我收到一个链接错误:

危险搬迁:l32r:使用后放置文字:

我仍在尝试调试;但是,我想更好地理解这个错误。我明白什么是搬迁;但是,我不确定它有多危险,并且正在寻找一些澄清。此外,一个可能产生此类错误的小代码片段也会有所帮助。

简而言之,什么是“危险搬迁”?

0 投票
2 回答
2129 浏览

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

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

例如,给定以下行:

这个加载哪个地址?

0 投票
1 回答
1831 浏览

c - for 循环被忽略(优化?)

我正在使用 for/while 循环在我的代码中实现延迟。延迟的持续时间在这里并不重要,尽管它足够大以至于可以注意到。这是代码片段。

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

这种行为似乎有点违反我对带有/不带有 volatile 关键字的编译器优化的理解。

即使循环计数器得到优化并存储在处理器寄存器中,计数器不应该仍然工作,也许延迟更小吗?(因为消除了内存获取开销。)

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

我对gcc 4.4.7with-o3和 ofast 优化级别进行了同样的尝试。在这种情况下,延迟似乎有效。

0 投票
1 回答
1141 浏览

linker-errors - Xtensa --- 危险的重定位:窗口化长调用跨越 1GB 边界

在编译过程中出现以下错误

(.sram.text+0x1283):危险的重定位:窗口化的 longcall 跨越 1GB 边界;返回可能失败:( UND +0xdeadcafe)

在其中一个功能中。

架构是 Xtensa,使用的工具链是为 Xtensa 构建的 GNU 工具链。此错误位于 binutils 源代码中文件 elf32-xtensa.c 中的函数 elf_xtensa_do_reloc() 内。

请让我知道此错误的原因以及任何可能的解决方案。

0 投票
0 回答
764 浏览

c - ESP8266 32 位对齐 memcpy

ESP8266 运行 xtensa 内核,要从闪存读取数据,所有访问都必须使用 32 位字执行。为此,我编写了以下方法:

这里有什么改变可以建议提高性能吗?

注意:这是特定于平台的,永远不会在任何其他平台/架构上使用,专门针对 xtensa 内核的程序集版本在这种情况下是完全可以接受的。

编辑

根据反馈/评论和谷歌,我想出了以下内容:

0 投票
1 回答
2302 浏览

ubuntu - 卢本图。/bin/sh: 2: xtensa-lx106-elf-gcc: 未找到

我是这个领域的初学者,我在编译ESP8266_NONOS_SDK-master的示例时遇到问题。
我一直按照文档中的ESP8266 SDK 入门指南中描述的步骤进行操作。 这意味着我下载了虚拟框 esp8266 映像(ESP8266_lubuntu_20141021.ova),我所了解的所有工具都必须在其中设置。但是在编译示例时,我得到了:

错误。

echo $PATH返回:/opt/xtensa-lx106-elf/bin:/usr/local/sbin:/usr/local/bin:/us‌​r/sbin:/usr/bin:/sbi‌​n:/bin:/usr/games:/u‌​sr/local/games:/snap‌​/bin

xtensa-lx106-elf-gcc -v返回Configured with ...gcc version 4.8.2 (crosstool-NG 1.20.0)

编译发生在esp8266/Share文件夹下。

有人能告诉我我错过了什么以及如何让 SDK “看到” xtensa-lx106-elf-gcc 吗?

Lubuntu 目录树图像:

0 投票
0 回答
106 浏览

assembly - 向处理器 lx106 添加新指令

在 xtensa 文档中有一段说可以使用一种 C 语言在处理器本身中“刻录”新指令。如何在汇编源程序中创建新指令或如何将此新指令链接到汇编源。例如,没有推送指令,我想创建一个。请注意,我不是在询问如何在我已经知道的堆栈中进行推送。

0 投票
1 回答
157 浏览

debugging - 为什么我在使用 Xtensa Tensilica OCD 时收到“调试域已关闭”错误消息?

我正在尝试通过在适当的目录中键入 xt-ocd.exe 来启动 Tensilica 的 Xtensa OCD 守护程序,但我不断收到一条警告,指出“调试域已关闭 (PWRSTAT:0x0)!” 随后出现一条错误消息,指出“调试模块关闭时无法设置 JTAG 可用位 (PWRSTAT=0x0)!”。我已确保我的外部调试器实际上已通电。似乎“调试域”(无论这意味着什么!)已关闭,我不知道如何打开它。几乎没有这方面的文档。

有没有人遇到过同样的问题,或者有人知道如何解决这个问题吗?提前致谢。

0 投票
1 回答
1122 浏览

c++11 - 如何配置 xtensa-lx106-elf 使用 nonos-sdk 为 esp8266 编译 c++ 代码?

我很难用 xtensa-lx106-elf 编译 c++ 代码。

我正在使用的芯片制造商(esp8266)提供了一个sdk(nonos-sdk)。该 sdk 中的库之一实现了在芯片中分配内存的功能:os_mallocos_realloc等。

编译c代码时,一切正常。编译c++时,目标文件已成功生成,但我从链接器收到很多错误消息,抱怨对abortfreemalloc的未定义引用以及对__gxx_personality_v0的一个非常奇怪的引用。

我的 make 文件是使用 cmake 创建的。下面是我与编译器一起使用的选项。

编译器错误:

引起我注意的是链接器似乎试图在路径中查找许多文件:“ /home/wjg/Repo/ ”,我可以确认它在我的计算机中不存在。无法理解这种行为。


工具信息:

操作系统:Ubuntu 16.04LTS

编译器:xtensa-lx106-elf-g++ (crosstool-NG crosstool-ng-1.22.0-60-g37b07f6) 4.8.5

CMake:cmake 版本 3.12.0-rc3

非操作系统 SDK:2.2.1

0 投票
1 回答
56 浏览

c++ - 为 Xtensa simcall 函数编写回调函数

我正在用 C++ 为 Xtensa 虚拟平台编写代码。我想使用simcall_callback的功能,从内部固件代码返回数据。我的 C++ 有点生疏了。

  1. 如何为回调的以下 typedef 构建回调函数:
  1. 用于设置此回调的函数是:

我应该如何正确调用set_simcall_callback,第二个和第三个参数应该是什么?

有关 Xtensa 回调函数的文档可以在以下链接中找到(Pg.282, 309)