问题标签 [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 投票
0 回答
95 浏览

c - C中的结构位域编译问题

使用架构:Xtensa-LX6

我有以下定义:

然后我在代码的某处有一行:

此行由 xtensa gcc 编译为以下汇编代码(美化):

如您所见,汇编程序完全忽略了寄存器字段的其余部分,它只是假设将写入低 16 位,并在那里写入 16 位值。问题是 xtensa 架构中的寄存器总是 4 位宽并且如此对齐。因此,如果我们以二进制形式写入寄存器内容: REGISTER1: 0b----------------1111111111111111,“-”部分将被删除,而不是保留其值。寄存器被损坏,并且发生了大量错误。

这可以通过插入__attribute__((packed))结构声明来避免:

现在汇编器知道我们在寻找什么,得到的汇编是(美化的):

问题解决了!伟大的。但..

真正的问题从这里开始:

我的寄存器定义中可以有许多结构:

如何打包结构,以便保留整个 typedef 中的对齐方式,并正确编译每个位域操作?到处放置__attribute__((packed))可能会起作用,但它会破坏对齐 - sizeoftypedef 的整体大于要求。

0 投票
0 回答
74 浏览

c - 手动为 xtensa 创建核心 elf 文件

一旦发生异常,我正在尝试为 Xtensa 创建一个 CORE ELF 文件。这适用于未连接硬件调试器的系统。

目前我有一个从 Xtensa GUI 生成的 CORE ELF 文件。此核心文件的信息如下所示。基本上我想添加相同的段并创建我的 CORE ELF 文件。

早些时候,我能够成功地为 ARM 系统创建 CORE ELF 文件,其中标题“NT_PRSTATUS”保留了“.reg”部分。但在这里,Xtensa gui 生成的核心文件中不存在“NT_PRSTATUS”。

我没有得到太多关于“.reg2”和“NT_FPREGSET”的信息。我想知道是否有人可以指导我添加“.reg2”和“NT_FPREGSET”以及在这种情况下命令“info register”如何获取寄存器值。

0 投票
1 回答
32 浏览

assembly - 如何在 Xtensa LX7 的寄存器中左移一个量

在 Xtensa 装配中执行以下操作的正确方法是什么:

a4 = ( 1 << a5 )

其中 a4 和 a5 是寄存器,a5 可以包含值 0 到 3(将来可能是 0 到 7,但现在不必太担心。)

我敢肯定这一定很简单,但似乎很棘手。

0 投票
0 回答
37 浏览

xtensa - Xtensa xt-xcc 许可证问题

我正在尝试使用 Xtensa 交叉编译器来构建一个简单的嵌入式应用程序。

我有两个神秘的问题。

第一个问题可能是许可证问题:

Xtensa 工具链总是报告以下错误:

这看起来像一个许可证问题。按照这里-5错误码的意思No such feature exists。但是没找到什么147意思。而且我不确定 FLEXnet 是如何工作的。这似乎是一种流行的许可机制。

但是我可以ping通xtensa03p.xxx.xxx.com服务器。所以我认为许可证服务器还活着。

第二个问题:

当我尝试检查交叉编译器xt-xcc版本时:

我收到以下警告:

我不知道它在哪里Xtensa registry entry。我应该修改它以匹配我的xt-xcc安装路径吗?

任何人都可以解释一下吗?