问题标签 [arm7]

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 投票
1 回答
459 浏览

assembly - 在复位时,ARM 处理器会使用 0x00 加载 pc,那么如何调用 lpc 2148 中位于 0x7FFFD000 的引导加载程序代码?

在 ARM7 中,当处理器复位时,它会在复位时从 0x00000000 地址开始执行代码,但在基于 ARM7 的 lpc214x 中,复位时引导加载程序会执行,其 lpc2148 的起始地址为 0x7FFFD000,因此在复位时如何将该起始地址加载到 pc。然后 pc 将如何加载 0x00 地址?

在下图中,给出了 lpc2148 的内存映射。

0 投票
1 回答
1555 浏览

arm - Why does ARM have 64KB Large Pages?

The ARM720T user manual mentions small and large pages. Since the ARM 720T requires a 64KB page table entry to be duplicated 16 times in the page table, why not place 16 small page (4KB) entries to mimic a 64KB page entry instead of using a large page in the first place?

0 投票
2 回答
1283 浏览

gcc - 尝试打印到 UART 时 ARM7 printf 挂起

我在使用各种打印命令时遇到问题。
每次我尝试调用 printf() 时,我的系统都会挂起或有时会重置。
我有工作的 UART,我可以用 UART_PutChar() 打印到我的控制台就好了。
fprintf 适用于仅打印纯字符串的简单情况,fprintf(stdout, "test\n");
但是格式化的字符串会挂起我的系统fprintf(stdout, "test %d\n", 1);
当我尝试从 .data 部分打印数据时也会发生挂起

当我打印换行符时 printf 会起作用printf("\n");
printf 只会在我执行类似的操作 时打印换行符

在某些情况下,当 fprintf 失败时,它会返回 EOF(现在不记得了,如果相关,明天将提供它们)
(f)printf 似乎正在调用 putchar,我已将其重新定位到 UART。
奇怪的是,我认为它应该是 newlib-nano 提供的调用_write_write_r例程(而 printf 没有调用它们)。
作为 IDE,我使用 EmBitz 和它提供的工具链(arm-none-eabi)。我使用的 CPU 是 at91sam7x128。我无法使用 JTAG 调试我的程序,所以我只需要尝试使用 UART 进行调试。

更新 启动脚本:SAM7.s

链接器脚本

更新 2 我对系统调用的快速而肮脏的重新实现。

0 投票
0 回答
57 浏览

plot - 绘制 ARM 通用寄存器

我一直在寻找一些能够模拟 ARM7 指令并随时间绘制寄存器值的应用程序。我尝试了 µVision IDE 5,但似乎不可能。你有什么应用建议吗?

0 投票
1 回答
74 浏览

arm - 从 Thumb 模式调用外部中断 (IRQ) 时 ARM7TDMI 链接寄存器的 LSB

假设中断发生时ARM7TDMI处于Thumb模式,一旦进入ISR,r14_irq的LSB是否=1?

0 投票
1 回答
107 浏览

exception - 在 arm7tdmi 中,当 FIQ 和 RIQ 同时发生时,如何按顺序执行,首先是 FIQ,然后是 IRQ?

在 arm7tdmi 中,假设正在执行指令并且同时 FIQ 和 IRQ 都同时发生。现在根据优先级 FIQ 将被处理然后 IRQ 但我的问题是它将如何处理从 FIQ 返回后的 IRQ 我的意思是什么在 FIQ 返回时完成的过程以及在 FIQ 处理程序的返回语句之后如何将控制转移到 IRQ 处理程序?

示例:地址 => 指令

; 假设在 0x00000108 处正在执行指令并且 FIQ 和 IRQ 在时间被提升

0 投票
2 回答
12505 浏览

c++ - 发送后无法确定 GDB 版本:arm-none-eabi-gdb --version,响应:

我正在尝试使用 GDB PEMicro 接口调试在 Kinetis Design Studio 上调试项目,但出现此错误:“启动 myProject”遇到问题。发送后无法确定 GDB 版本:arm-none-eabi-gdb --version,响应:

我格式化我的电脑有几天了。并且有另一台计算机进行相同的设置,并且运行良好。

我的设置:

Eclipse 首选项 -> C/C++ -> 构建 -> 全局工具路径

  • 构建工具文件夹:(空)
  • 默认工具链:用于 ARM Embedded 的 GNU 工具
  • 工具链文件夹:/opt/Freescale/KDS_v3/toolchain/bin

Eclipse 首选项 -> C/C++ -> 构建 -> 工作区工具路径

  • 构建工具文件夹:空
  • 默认工具链:全局默认
  • 工具链文件夹:空

项目属性 -> C/C++ 构建 -> 工具路径

  • 空的

项目属性 -> C/C++ 构建 -> 设置 -> 工具链

  • 名称:用于 ARM 嵌入式的 GNU 工具
  • 架构:ARM
  • 前缀:arm-none-eabi-
  • 后缀:(空)
  • 工具链路径:/opt/Freescale/KDS_v3/toolchain/bin

项目属性 -> C/C++ 构建 -> 环境 -> PATH

  • 来源:构建系统

调试启动配置 -> 主选项卡

  • 项目:我的项目
  • C/C++ 应用程序:myProject/myProject.elf

调试启动配置 -> 调试器选项卡

  • GDB 客户端设置 -> 可执行文件:${cross_prefix}gdb${cross_suffix}
  • 命令:

设置 mem inaccessible-by-default 关闭

设置 tcp 自动重试

设置 tcp 连接超时 240

我该如何解决?

0 投票
1 回答
3003 浏览

assembly - 如何在 ARM(ARM7TDMI)上最有效地获得低 16 位半字?

假设我们在寄存器中有一个 32 位的值:r0 = 0x12345678; 任务是获取低半字部分,即 0x5678(或者使高半字无效)。就 C 代码而言,它相当于:r0 = r0 & 0xFFFF;

限制:它需要在单个 ARM7TDMI 指令中完成,而不使用其他寄存器。这是因为获得高一半只是一个正确的转变,例如LSR r0, r0, #16.

到目前为止,我可以通过 2 条指令来完成:左移 + 右移、旋转 + 移位;或者通过使用包含掩码 0xFFFF 和 AND-ing 的附加寄存器。

在 ARM7TDMI 上,不可能只与像 0xFFFF 这样的常数进行与运算,因为它不适合立即值方案。

此外,看起来现代 ARM-s 有“MOVT”,可以通过做来解决它MOVT r0, #0,但 ARM7TDMI 没有!

我想相信没有 MOVT 是可能的,因为它是如此基本的东西。

0 投票
1 回答
1448 浏览

c++ - 尝试为 ARM7 交叉编译 QtWebEngine

我在 AMD64 CPU 上运行 Ubuntu 16.04。我正在尝试为 ARM7 交叉编译 Qt5.7.1 代码,包括 QtWebEngine。

我已经成功地为 AMD64 本地编译了 Qt 库,并且还成功地编译了 QtCore 以制作一个在我的 ARM7 目标上运行的基本 Qt 应用程序。

我的问题是尝试交叉编译需要 OpenGLES2 的 QtWebEngine 组件。我正在尝试这样配置交叉编译:

这是引用的 Beaglebone qmake 文件:

我在我的 Ubuntu 安装中启用了多架构,并安装了 libgles2-dev 包的 armhf 版本,交叉编译器似乎对此很满意。

现在的问题是编译器似乎无法看到 opengles2 依赖的其他库 - 这是我目前得到的:

有没有人知道我需要做什么才能继续?我需要安装所有这些库的 armhf 版本吗?

谢谢,非常感谢。

0 投票
0 回答
300 浏览

swift - Xcode 8 Swift 3 架构 armv7 的未定义符号

由于我不允许对几个重复的问题添加答案,所以我会问这个问题并给出一个答案;-)

未定义的符号是对自写的 swift 函数的调用。该函数位于一个只有“全局”函数的 swift 文件中(该文件中没有类)。该函数是从几个类中调用的,直到今天早上一切都很好。

在生产发布产品时突然收到此链接错误消息。有趣的是,它只用于一个函数调用。所有其他调用都没有错误,当我注释掉这个特定的函数调用时,一切都很好。这个功能非常简单。只有一个函数参数 (Int64),它返回一个 CLocationCoordinate2D。

我检查了这里和网络上其他地方找到的所有可能的解决方案。我什至将函数 1:1 复制为类中的本地函数.. 没有任何效果。

最终的解决方案是用于优化的编译器标志。对于发布版本,“Swift Compiler - Code Generation”中的标志设置为“Fast, Whole Module Optimization”。

将其更改为“快速、单模块优化”后,一切正常......

我认为这只是优化引擎中的一个错误。

..也许这会帮助其他类似情况的人。