问题标签 [coldfire]
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.
math - Coldfire/m68k 跳转编码问题
所以我正在使用coldfire(mcf5225x系列)并且我遇到了跳转编码的一些问题,在这种情况下它具有与68k相同的二进制表示。
如您所见,jmp 指令的模式和寄存器为 111010,表示与 PC 的 16 位字扩展偏移量。16 位扩展是当前地址 8hex 的 8hex 偏移量。它应该导致 12 但是,我的数学表明我得到了 10。这里有什么问题,为什么似乎生成了错误的跳转地址?它在我正在设计的处理器模型中引起了一些问题。任何帮助将不胜感激!
assembly - 这个 bsr.l 指令有什么作用?
我正在玩冷火反汇编程序并找出这段代码:
我试图弄清楚那些 bsr.l 的需求是什么。对我来说,它只是跳跃本身。
usb - Coldfire 微处理器 MCF5272 USB 模块停止触发中断
这是我多年来一直试图解决的问题,定期花费 1-2 个月的时间。
我正在使用 Metrowerks IDE 和 ColdFire C 编译器 MCFCCompiler 4.0 版来构建使用 USB 模块与主机通信的嵌入式代码。带有这种硬件的产品已经推出了八年并且相当成功。然而,这些年来我们收到了来自现场的抱怨,称与主机的通信偶尔会挂断,操作无法恢复。
我使用 USB 嗅探器和 Coldfire 调试硬件跟踪了错误,这是我在其中找到代码的条件和场景。
通信中断发生在固件端,而不是主机上的驱动程序。
仅当从多个线程快速发送主机(Windows 7)的 USB 固件命令时才会发生挂起。每个固件命令都会回复主机。因此,通过 USB 端口的流量最大。
我正在使用摩托罗拉提供的实现,该实现在 USB-STAND-ALONE-DRIVER_V03.pdf 中有详细记录(谷歌会为您找到它)。有两个函数是我关注的重点,它们应该很好地配合使用:usb_in_service(由中断处理程序调用)和 usb_tx_data(启动传输,在某些时候会产生中断)。
实现了 usb_tx_data 函数,以便在 USB fifo 仍有数据要发送到主机时退出。但是等待fifo清除会使代码进入无限循环。
尽管 USB 模块的寄存器内容告诉我中断已启用,但此后不再发生中断。
我检查了 USB 模块没有收到重置事件,也没有挂起。
主要问题是错误是在 USB 模块硬件中还是在代码中。我没有发现任何指向这个问题的勘误表。如果是代码,那么逻辑没有考虑到的整体在哪里?
紧追不舍,因为我们正在制作基于相同固件的新产品线,在解决此问题之前我无法发布它。
microcontroller - 有没有办法从 MCF52235 ColdFire 微控制器读取/写入 9 个数据位、2 个停止位和 1 个奇偶校验位 UART 消息
我想在 MCF52235 ColdFire 微控制器和具有以下消息规范的特定单元之间进行通信 9 个数据位 2 个停止位 一个奇偶校验位
但是,MCF52235 ColdFire 微控制器数据表表示它支持“数据格式可以是 5、6、7 或 8 位,偶数、奇数或无奇偶校验”。我想知道是否有任何棘手的方法来解决这个问题。
谢谢
c - Coldfire 强制使用 RAM 而不是寄存器
我有一个用 C 语言编写的应用程序,它在 Coldfire 处理器上运行。
我需要强制它对所有局部变量(在函数中声明)使用 RAM,而不是使用寄存器;为了正确调试应用程序。
我该怎么做?
编辑以获取更多信息
有时,在主应用程序中,由于函数的返回值错误,我会收到错误消息。这种情况很少发生,我在 return 指令之前放置了一个检查和一个断点,但是许多变量使用相同的寄存器,我无法清楚地了解错误发生时的情况。如果我在函数的开头移动程序计数器并逐步执行结果是正确的。登记册的管理可能有问题,我想知道是什么。
提前谢谢你,问候。
cpu - 执行长字传输到 CPU 需要多少个和什么大小的周期
该任务适用于 ColdFire 处理器 MCF5271 架构:
我不明白执行到 CPU 的长字传输或字传输需要多少个和什么大小的周期。我正在阅读图表,但看不到连接是什么?任何意见都非常感谢。我附上了 2 个带有答案的示例。
embedded - 使用命令行使用 GHS 探针闪烁目标
我们正在使用 Greenhills Multi IDE 和Greenhills Debug Probe来编程和调试我们的目标系统(基于 Coldfire 的裸机系统)。目前我使用 IDE 调试器 GUI 刷新目标,但我更喜欢使用命令行界面来完成它。
该文档相当粗略,仅提供了一个非常简单的示例。据我所知,我应该能够将 grun 与 gflash 一起使用来执行此操作,但我很难弄清楚哪些 GUI 字段映射到哪些 grun 选项。有这方面经验的人吗?
基本上我需要能够指定(见上图):
闪存设备(我想这是我想出来的)
- 基址
- 图像文件(我们使用原始图像)
- 闪存中的偏移量
- 备用 RAM 基座
- 备用闪存实用程序
- 可能还有备用 MBS 脚本
有任何提示、技巧或指向比标准 GHS 更好的文档吗?将不胜感激!
assembly - 68k ASM 寻址模式
我在 Uni 学了一些 68k/Coldfire,并且很难理解更复杂的寻址模式(数字在取消引用的括号附近)。
我认为这里的例子是最好的:
谁能用简单的话向我解释每条指令中发生了什么?
如果需要,请详细说明(前/后增量等)。
谢谢!!;)
gdb - Qemu 问题中用于 m68k 的 GDB
我正在尝试使用 GDB 调试在 m68k 架构上运行的 Qemu。我正在尝试对 Qemu 源代码进行一些更改以向 m68k 支持添加一些功能,并且我正在尝试使用 GDB 来测试我当前所做的更改。需要注意的重要一点是,我使用的是 Qemu v5.2.0-rc1,因为这是我正在同时使用的更大系统中当前使用的 Qemu 版本。目前,我正在使用 qemu-system-m68k 在该架构上运行 buildroot(uClinux 内核),使用 gdb 的“-s -S”选项。在一个单独的终端中,我尝试使用在该远程目标上运行 GDB (gdb) target remote localhost:1234
,但我收到以下错误消息:
与 uClinux Qemu 内核的连接似乎没问题,但我无法连接到远程主机。
我已经尝试找到任何可能的解决方案来解决这个问题,包括设置 GDB 架构(目前说 i386,不确定这是否正确),但它不起作用。我不知道如何让 GDB 在这个 m68k Qemu 仿真 Linux 内核上运行,任何帮助都会很棒。谢谢!