问题标签 [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.
c - C中的结构位域编译问题
使用架构:Xtensa-LX6
我有以下定义:
然后我在代码的某处有一行:
此行由 xtensa gcc 编译为以下汇编代码(美化):
如您所见,汇编程序完全忽略了寄存器字段的其余部分,它只是假设将写入低 16 位,并在那里写入 16 位值。问题是 xtensa 架构中的寄存器总是 4 位宽并且如此对齐。因此,如果我们以二进制形式写入寄存器内容: REGISTER1: 0b----------------1111111111111111
,“-”部分将被删除,而不是保留其值。寄存器被损坏,并且发生了大量错误。
这可以通过插入__attribute__((packed))
结构声明来避免:
现在汇编器知道我们在寻找什么,得到的汇编是(美化的):
问题解决了!伟大的。但..
真正的问题从这里开始:
我的寄存器定义中可以有许多结构:
如何打包结构,以便保留整个 typedef 中的对齐方式,并正确编译每个位域操作?到处放置__attribute__((packed))
可能会起作用,但它会破坏对齐 - sizeof
typedef 的整体大于要求。
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”如何获取寄存器值。
assembly - 如何在 Xtensa LX7 的寄存器中左移一个量
在 Xtensa 装配中执行以下操作的正确方法是什么:
a4 = ( 1 << a5 )
其中 a4 和 a5 是寄存器,a5 可以包含值 0 到 3(将来可能是 0 到 7,但现在不必太担心。)
我敢肯定这一定很简单,但似乎很棘手。
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
安装路径吗?
任何人都可以解释一下吗?