【问题标题】:Microcontroller and flash memory chip programming development and simulation微控制器和闪存芯片编程开发与仿真
【发布时间】:2013-02-02 09:43:38
【问题描述】:

我刚开始学习微控制器编程,入门似乎有很多麻烦,尤其是模拟部分。

这是一个我需要编写的应用程序:我需要在闪存芯片中存储几个波形文件,并使用 Cortex-M0 从闪存中读取音乐,并组合播放它们,或者运行对它们进行一些基本的信号处理。

我正在寻找一个支持端到端模拟的 IDE。我查看了 CoIDE(因为如果我在谷歌上搜索免费的 Cortex IDE,那是第一个出现的),在确定 Cortex 之前,我还查看了 MPLAB,但我没有看到任何支持闪存芯片模拟的软件。我似乎能够正确模拟芯片,但我没有看到构建虚拟闪存芯片的方法。

我错过了什么吗?非常感谢。

【问题讨论】:

    标签: embedded emulation microcontroller simulator flash-memory


    【解决方案1】:

    首先 - MPLAB 是 Microchip 产品的 IDE,而 Microchip 没有任何 ARM 芯片,所以这个 IDE 根本帮不了你。

    至于 CooCox - 这个 IDE 基本上是 Eclipse + GCC 工具链,据我所知,网络上可用的大多数工具链都不启用模拟器,即使它们启用了,这也只是一个指令模拟器(可能不适合你的架构,但我不确定),所以你也可以在 PC 上编写你的软件,在那里测试它,然后将它移动到真正的硬件 - 算法真的会工作相同(如果你使用可移植代码,所以在 64 位桌面上使用“int”不是一个好主意,最好对所有内容都使用类型)。

    只有像 IAR 或 Keil 这样的大型商业 IDE 和工具链可能为您的芯片提供模拟器(但这也可能有问题,因为这些都是相当新的),您只需要几千欧元就可以了。

    我的建议 - 在进行嵌入式工作时忘记模拟器。

    出现这种情况的原因可能很简单——不可能准确地模拟真实的硬件。要实现这样的目标,您首先必须拥有设备的完整 IP 内核,以及芯片内所有连接和外围设备的准确 VHDL(或类似的东西)描述。我只是没有看到所有供应商都将此类信息提供给任何愿意创建 IDE 的公司(;然后您需要一个用于 VHDL(或其他任何东西)的实时模拟器,能够模拟具有大量外围设备的非常大的芯片. 这可能是可能的,所以让我们转移到另一点。在现实世界中,芯片不是在真空中运行,它连接到具有真实现象和真实信号的真实硬件。你无法准确地模拟它。一个简单的按钮根据数百万种条件(年龄、力、温度、湿度、走线长度、尺寸、PCB 质量、组装质量……),可以以数百万种不同的方式运行。

    您的项目是上述问题的一个很好的例子。您可能会找到 ARM Cortex-M0 芯片的模拟器,但无法模拟连接到微控制器的外部闪存芯片。你不妨停止寻找,因为我向你保证,你不会找到类似的东西。顺便说一句 - 您的芯片没有外部存储器总线,因此您必须完全在软件中操作存储器(外部存储器的内容不会映射到您芯片的某个地址范围)。

    最后一点 - 缺少模拟器不是问题 - 你有一个调试器(它可以做一些你可以使用模拟器的事情),你有多种类似调试的方法(闪烁的 LED,printfs() , ...),你有硬件工具来检查系统(万用表,示波器,逻辑分析仪,...),所以还不错(;

    关于 CooCox 的另一件事。对我来说,这个想法有点可疑——它是免费的,它基于免费组件,那么为什么它不是开源的(有些地方声称它是开源的,那么源代码在哪里)?过去还有其他类似的“免费”环境,结果证明“免费”意味着“让我们暂时使用免费的 beta 测试人员”,当项目达到一定程度的成熟度时,它就变得商业化或在免费版本... Atollic TrueStudio 是这种策略的一个很好的例子(人们喜欢它免费的时候 - 每个人都推荐它 - “不要打扰 GCC,使用 atollic,它是免费的并且没有限制”) .不知道CooCox的未来会是什么样子,但是这个软件有时候有点奇怪,有时候bug很大,而且不支持所有芯片,所以先看看它是否“喜欢”你选择的芯片。哦——而且是中国人做的。

    嵌入式工作可能看起来很像为 PC 编写代码,但实际上在您认为的方式上是一个很大的转变......

    【讨论】:

    • 嗨弗雷迪,感谢您的长篇回复(再次!)。我理解您投票支持极简主义方法,尽管我仍然更喜欢 IDE(这样我就不必从头开始编写 makefile,也不必担心要包含的标头、开关、不同的架构等)。看来你推荐 Eclipse + OpenOCD + GDB?
    • 您不需要从头开始编写 makefile - 只需下载我的 ARM 示例项目之一,您就可以开始了 - 您需要更改最多 10 行代码才能开始您自己的项目.无论您使用什么,您仍然需要担心开关、不同的架构和要包含的标题 (;
    • 另一个愚蠢的问题,JTAG 到底是做什么的?我的理解是,它是硬件和 PC 上正在开发的代码之间的桥梁——您可以在板上单步执行您的代码,并在 PC 上查看变量信息?
    • 是的,你基本上是对的。 JTAG 是 PC 上的调试器(如 GDB)用来控制微控制器内核的接口。这允许您 - 正如您所提到的 - 单步执行代码,查看变量,还可以更改内存内容(不仅查看),更改内核状态(例如通过更改内核寄存器),它还用于对闪存进行编程内存(或通常用于将固件上传到设备)。
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多