问题标签 [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.
assembly - 在复位时,ARM 处理器会使用 0x00 加载 pc,那么如何调用 lpc 2148 中位于 0x7FFFD000 的引导加载程序代码?
在 ARM7 中,当处理器复位时,它会在复位时从 0x00000000 地址开始执行代码,但在基于 ARM7 的 lpc214x 中,复位时引导加载程序会执行,其 lpc2148 的起始地址为 0x7FFFD000,因此在复位时如何将该起始地址加载到 pc。然后 pc 将如何加载 0x00 地址?
在下图中,给出了 lpc2148 的内存映射。
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?
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 我对系统调用的快速而肮脏的重新实现。
plot - 绘制 ARM 通用寄存器
我一直在寻找一些能够模拟 ARM7 指令并随时间绘制寄存器值的应用程序。我尝试了 µVision IDE 5,但似乎不可能。你有什么应用建议吗?
arm - 从 Thumb 模式调用外部中断 (IRQ) 时 ARM7TDMI 链接寄存器的 LSB
假设中断发生时ARM7TDMI处于Thumb模式,一旦进入ISR,r14_irq的LSB是否=1?
exception - 在 arm7tdmi 中,当 FIQ 和 RIQ 同时发生时,如何按顺序执行,首先是 FIQ,然后是 IRQ?
在 arm7tdmi 中,假设正在执行指令并且同时 FIQ 和 IRQ 都同时发生。现在根据优先级 FIQ 将被处理然后 IRQ 但我的问题是它将如何处理从 FIQ 返回后的 IRQ 我的意思是什么在 FIQ 返回时完成的过程以及在 FIQ 处理程序的返回语句之后如何将控制转移到 IRQ 处理程序?
示例:地址 => 指令
; 假设在 0x00000108 处正在执行指令并且 FIQ 和 IRQ 在时间被提升
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
我该如何解决?
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 是可能的,因为它是如此基本的东西。
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 版本吗?
谢谢,非常感谢。
swift - Xcode 8 Swift 3 架构 armv7 的未定义符号
由于我不允许对几个重复的问题添加答案,所以我会问这个问题并给出一个答案;-)
未定义的符号是对自写的 swift 函数的调用。该函数位于一个只有“全局”函数的 swift 文件中(该文件中没有类)。该函数是从几个类中调用的,直到今天早上一切都很好。
在生产发布产品时突然收到此链接错误消息。有趣的是,它只用于一个函数调用。所有其他调用都没有错误,当我注释掉这个特定的函数调用时,一切都很好。这个功能非常简单。只有一个函数参数 (Int64),它返回一个 CLocationCoordinate2D。
我检查了这里和网络上其他地方找到的所有可能的解决方案。我什至将函数 1:1 复制为类中的本地函数.. 没有任何效果。
最终的解决方案是用于优化的编译器标志。对于发布版本,“Swift Compiler - Code Generation”中的标志设置为“Fast, Whole Module Optimization”。
将其更改为“快速、单模块优化”后,一切正常......
我认为这只是优化引擎中的一个错误。
..也许这会帮助其他类似情况的人。