问题标签 [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.
linker - 合并 2 个或更多 ELF 文件的最简单方法
我正在为当前(根据要求)创建许多 srec 文件并合并它们的类项目编写一些嵌入式代码。我希望能够将此代码加载到 QEMU 中,但它通常只对 ELF 文件感到满意。合并原始 ELF 文件而不是 srecs 的最简单方法是什么?也可以接受,一种将 srec 转换回 ELF 并使生成的文件可加载的方法(objcopy 似乎会产生相当损坏的文件(没有其他架构)。这些工具必须能够处理 m68k 二进制文件,但是主机系统是普通的 x86。
embedded - Coldfire 上的高分辨率计时器 (MCF5328)
我继承了一个嵌入式项目,该项目需要一些简单的按功能进行性能分析。它由运行 uClinux (2.6.17.7-uc1) 的 Coldfire (MCF5328) 组成。
我不是 Coldfire 或 uClinux(或 Linux)方面的专家,所以请原谅我的无知。
在 Windows 中,我会简单地使用QueryPerformanceCounter
来访问 x86 高分辨率计时器。记录前后的计数器并比较差异。
我了解到 Linux 在 QueryPerformanceCounter 上有许多变体:
- clock_gettime/res
- 得到时间
- ktime_x
甚至可以通过以下方式访问时间戳计数器
- get_cycles
这些都不适用于此设备正在运行的 uClinux 版本。因此,操作系统似乎没有高分辨率计时器访问权限。
这是否意味着 Coldfire 本身没有提供这样的功能?或者 uClinux 移植的作者是否将它们排除在外?硬件上是否有我可以使用的东西,以及如何使用它?
embedded-linux - 在 Coldfire uCLinux 上调试页面分配失败
我有时会在我的 Coldfire uCLinux 系统上得到以下崩溃输出。如何找出导致问题的原因?
c++ - 为什么 Codan 找不到 size_t
我刚刚开始使用 Eclipse Indigo(来自 Galileo),每次使用 size_t 时,我都会在排水沟中发现小红虫。
代码编译没有问题,但我怀疑我必须明确添加包含目录的路径。我已经有通常的嫌疑人在那里了。我正在使用 Gnu 工具链为 ColdFire 处理器进行交叉编译,因此除了来自芯片制造商的标准包含之外,我还拥有 m68k-elf 下的包含
更新
我注意到这个工具链的唯一位置 stddef.h 是在一个lib
目录中
我添加了该路径,父路径和\include-fixed
来自父路径,但问题仍然存在。
测试注意事项
在测试什么有效,什么无效时,我注意到了几件事
- 修改代码分析首选项设置时不会重新触发代码分析,我仍然需要更改编辑器(只需添加空格即可)
- 关闭代码分析设置
Symbol is not resolved
不会使错误消失。 - 关闭所有
Syntax and Semantic Errors
,触发分析,返回并重新打开它们,然后关闭Symbol is not resolved
可以防止错误再次出现。
firefox - ColdFusion ColdFire 项目死了吗?
我无法让当前版本 (1.9.207.249) 与 Firefox 14.0.1 和 Firebug 1.10.2 一起使用。
我认为它已损坏,因为该插件尚未针对 Firebug 1.10 的发布进行更新。
有没有人使用这些设置?
c - 如何为 Coldfire 工具链编译程序?
我正在尝试编译一个简单的 hello world 应用程序以在 uCLinux (2.4) 上运行,该应用程序在带有飞思卡尔 Coldfire (MCF5280C) 处理器的板上运行……我不太确定在这里做什么。
我知道我需要使用来自飞思卡尔的正确版本/工具进行编译以针对此硬件,因此我下载并安装了 Coldfire 工具链并验证我拥有的工具链适用于我的目标:
我尝试了一个简单的gcc "file"
类型命令:
这根本不起作用..所以它显然比这更复杂。输出几乎看起来像是要我在使用它之前构建工具链?以前有人做过吗?不知道我需要做什么,或者我是否只需要一些标志。
c - 使用堆栈跟踪在 GDB (Eclipse) 中的 Coldfire MCF5235 上调试未知程序异常
在通过第三方库使用 CAN 控制器时,在我的 C 应用程序中的某个时刻(运行裸机,监督模式),发生了非法指令错误,该错误被 ISR 捕获;到那时,ISR可用的异常堆栈帧中的程序计数器,故障和返回地址已经为0。当我第一次遇到它时,我能够备份堆栈,看到这样的堆栈跟踪:
其中 0x40000000 是此处理器的 IPSBAR。
我以可以快速重现此问题的已知状态多次运行该应用程序,通常在跳转到 0x0 之前的中断/异常时下降到完全相同的堆栈跟踪/保存的指令。通过测试,我注意到跳转只会发生在中断被禁用后重新启用之后的指令上,或者发生在没有屏蔽中断的代码段中。因此,我认为这一定是导致问题的用户中断,尽管我不确定为什么它似乎会尝试调用在掩码中未启用中断时未设置的处理程序。我不是 100% 确定 IPSBAR 范围内地址的含义,之前和 ISR 被调用,但因为它们对于该 ISR 的每次调用都是相同的,
因此,在添加正常处理程序并再次运行应用程序之前,我向中断控制器 0 上的所有中断向量添加了一个默认中断处理程序 - 你瞧,当该可疑中断被触发时,默认处理程序中设置的断点被命中(例如,堆栈看起来像这样):
观察那个函数中SWIACK0的值,我看到中断源是100(用户中断36,PIT0中断)。好吧,它已经有一个 ISR(上面的堆栈中的 timerInterrupt() )。接下来,我检查了保存 ISR 函数指针的 RAM 区域,以查看定时器中断处理程序函数指针是否已损坏,但在设置所有中断处理程序的时间与默认处理程序中的断点被命中之间没有变化。
我还注意到,如果我将 CAN 控制器的中断处理程序的中断级别设置为 7(同一个中断处理所有 18 个 FlexCAN 中断源),则不会出现问题。我还不确定该怎么做,但这个问题确实表明 CAN 库或控制器存在问题。
编辑-此时我不确定哪个 ISR 正在处理中断,但我已将单独的处理程序添加到最初怀疑的中断源中,并且它始终是中断源 63-根据文档,这是一个未使用的中断,最后一个在中断控制器 0 上。
编辑 2:我想到 SWIACK0 中的活动中断源实际上是正确的,但可能还有另一个问题,比如向量基地址可能被重写。不幸的是,我不确定如何将其读回,因为它是只写值。我最初认为 PIT0 的中断源在该寄存器中,因为默认中断处理程序是从定时器中断处理程序中调用的,但如果定时器中断不在堆栈中,它也会被指示。参考手册表明片上调试设备可用于回读控制寄存器和 VBR,但我在调试手册中没有看到任何信息来执行此操作。
长话短说,我想找出跳转到超空间的来源,或者我可以使用什么信息来获取它。
IPSBAR 范围内的地址被推入堆栈是什么意思?
由于那些寻址似乎完全与它们的源相关联,有没有办法使用堆栈中的值(例如,第一个示例中的 0x41f42200)来确定将
其推入堆栈的中断/异常的源?我会完全错了吗?我非常乐意
放弃所有这些想法。
感谢您提供任何帮助或见解,当我可以将两个脑细胞揉在一起时,我会用更多(简洁的)信息来更新它。
linux - 交叉编译时 ucLinux libbzip2 reloc 类型错误
我一直在尝试编译包含 libCurl 的 ucLinux,但是任何时候我在配置中包含 curl 时都会在尝试编译 libbzip2 时出错。
我正在为冷火 68K 处理器交叉编译它。
它说 PIC 不支持重定位类型,但我不知道如何解决这个问题。我的印象是所有的库都需要编译为 PIC。
这是输出:
c - 给定一个 32 位无符号运行 num,如何在一定范围内操作值 [低,高]?
正如标题所说,我在飞思卡尔 Coldfire 芯片上使用随机数生成器,它返回一个 32 位无符号值。据我所知,没有办法配置生成器来限制范围。将数字控制在可接受范围内的最佳方法是什么?
我正在考虑通过高范围值修改数字,但我仍然必须处理下限。
assembly - 用于冷火的交叉编译代码 (MCF5225X)
我目前正在为冷火 V2 架构构建处理器模型,但我在测试它时遇到了问题,主要是因为我似乎无法编译任何冷火代码。我为 GNU 找到的所有交叉编译器都针对 68k,这与冷火架构不同(它们属于同一个通用系列,但每个特定的 ISA 绝对不同,因此许多指令会引发错误)。有谁知道任何可以工作的 GNU 工具链?
GNU 本身说它提供了针对这些架构的支持,但是当我使用 -march=5225 标志时它不起作用(只是说所有指令都未知)