【问题标题】:Advice needed for ARM Cortex M3 beginnerARM Cortex M3 初学者需要的建议
【发布时间】:2011-04-19 22:03:57
【问题描述】:

我将很快通过官方培训(CPU 方面)加入 ARM Cortex M3 行列。

现在,我之前做过一些 Arduino 和 AVR,并且有一些电子学基础知识,但我主要是一名软件开发人员。我已经阅读了这里的大多数主题以及其他关于可用工具的相当多的主题,它们真的很有帮助。我需要的是将所有这些答案元素连接在一起。

我想为自己配备一个足够通用的入门套件,让我能够继续前进,并且至少可以让我尝试不同的硬件/软件组合(步进器、CAN-Bus、SPI 等)。我正在查看以下列表(请随时添加更多项目!):

  • Cortex M3 芯片
  • 评估板
  • 工具链
  • JTAG 工具

对于芯片,我希望高端型号之一能够尝试一切。 NXP LPC1768 似乎是一个不错的选择,但也需要考虑 STM 和 Stellaris。

目前该板的有趣候选者是 Keil MCP1760、STM3210E-EVAL,但我担心供应商锁定,因为我希望能够在单个板上尝试各种工具链。 mBed 非常有吸引力,但由于它是在线编译器,所以不适合(除非也可以使用常规编译器)

对于工具链,我对 IAR,Rowley Associates 有一种“感觉”。与开源相比,我更喜欢易用性/完善性,最好是可用于多个目标的工具。

我真的需要 JTAG 单元吗?如果它看起来像一个“标准行业工具”,我至少想获得一些经验。这似乎是供应商锁定的另一个来源。我是使用我自己熟悉的外部设备还是只使用评估板上的设备更好?

基本上,在为上述类别选择获胜组合时,我需要帮助。有没有可能,还是我太天真了,应该考虑节省成本,因为我最终会买一个?

谢谢。

结果:我点了什么:

我终于买了 Joseph Yiu 的《ARM Cortex-M3(嵌入式技术)权威指南》,找到了一些针对 CortexM3 平台(即将推出)的培训,并购买了 STMicro 套件:STM3210C-Eval,它有一堆传感器内置并且不是供应商锁定到特定的软件环境。我还购买了一些带有板载 JTAG 的 STm32vl-Discovery 板(来自 digikey 的 13 美元!)。我现在正在玩 Keil 的 uVision IDE 的评估版 (32K),我可以说我真的印象深刻!我能够在一天内重新构建 Discovery 的固件,将其加载回来,并使用调试器逐步完成它!

谢谢大家!

【问题讨论】:

  • 你可能想在electronics.stackexchange.com上提问
  • 谢谢,很棒的网站,又一个书签!
  • 我有 stm32vl 发现,但刚刚得到 stm32f 发现。 168Mhz、i 和 d 缓存、浮点单元、加密、哈希、相当数量的内存、大量闪存等,价格为 20 美元或更少。 mbed 将进入存储空间,这些都留在我的桌子上。 github.com/dwelch67/stm32vld/tree/master/stm32f4d

标签: embedded arm toolchain cortex-m3


【解决方案1】:

llvm 和 gcc 都很好,不需要购买任何软件。这里提供免费帮助的大多数人都是 gcc 用户。 Codesourcery 是获取更新/更好的 gcc(用于 arm)的当前位置。精简版完全没问题。滚动你自己的 gcc 是一件相对容易的事情,但也许不是你喜欢的事情。 llvm 的一个好处是它始终是一个交叉编译器,并且预构建通常具有多个/所有目标。

我还有 Stellaris 和 mbed 以及其他 cortex-m3 示例。我喜欢 Stellaris,不是 lpc 的粉丝,避免 expresso,mbed 其实还不错。疯狂的亮蓝色 LED 给了我一个偏头痛,所以我用绿色代替了它们,否则它工作得很好,易于使用。伊戈尔是对的,您并没有像使用 expresso 那样被锁定在他们的沙箱中,我有一个示例使用 gcc 闪烁 LED 以在某处编译。您只需将 .bin 文件复制到看起来像闪存拇指驱动器的东西上,然后按重置按钮即可加载新文件。

sparkfun.com 的 stm32 头板价格低于 50 美元,外加 mbed,谁知道还有什么。 Stellaris 板的价格在 100 美元以下,非常好。我不小心做了警告说不应该做的事,几乎立即把我的 811 弄坏了。以错误的方式转动了我的 jtag gpio 引脚,然后……游戏结束。 1968 和其他非 811 系列要么不可变砖,要么不那么容易变砖。 Stellaris 板使用板载外围设备处理所有 io,这在一段时间内很有趣,但如果您想做的不仅仅是如何使用这些外围设备,那就不行了。如果您使用的是 stm32 标头(避免使用 stm 引物),您将需要一个 jtag wiggler,amontek 是一个很好的,jtag-tiny 和 olimex 应该可以正常工作,但我实际上不知道我曾经把我的盒子。理论上,一个 Stellaris 板可以用作另一个或其他 cortex-m3 的 jtag wiggler。如果你有一个 Stellaris 板,你就不需要任何其他东西,你需要的一切都在一个价格的盒子里,如果你不想使用那个工具链,那么你可以下载上面列出的一个。

【讨论】:

  • 从评估板中取出芯片确实是我的中期目标。从一个装满小工具的板子开始真的很吸引我,因为我可以专注于学习 CPU 而不是如何互连事物。那个 stm32 Header 确实看起来不错! PS:JTAG 和 wiggler 有什么区别?如果有的话?
  • 同样的事情。我所说的 wiggler 是有点撞的 jtag,而不是专门设计的 jtag 接口。以前用并口,现在用usb转并口型芯片。
【解决方案2】:

您可能想查看Atmel ATSAM3U-EK dev kit(约$200 from Digi-Key)。它具有 LCD 触摸屏、加速度计、温度传感器、模拟输入、JTAG、两个串行端口和 USB 2.0(内置于 SAM3U)。

我喜欢 SAM3 系列的地方在于它易于启动。它具有板载 ROM 以及用于程序存储的闪存。在出厂时,它启动 ROM(您稍后将其更改为从闪存启动),启动 USB 端口,该端口声明自己是 USB 通信设备类 (CDC),并运行 SAM-BA 启动监视器。它还有一个片上 ERASE 引脚,可以将整个设备重置为出厂设置。

因此,要从头开始重新编程,您所要做的就是:

  • 通电时跳线 ERASE 至少 200 毫秒
  • 重置电路板并将其插入 USB 端口
  • 在 Windows 或 Linux 上运行 Atmel 的 SAM-BA 程序
  • 选择串口
  • 启用闪存写入
  • 选择您的二进制文件并发送它
  • 将其设置为从闪存启动
  • 松开 USB 并再次点击重置。

不需要加密狗或 JTAG 盒。我知道通过 IAR 通过 JTAG 重新编程可能需要更少的步骤,但我喜欢知道如果其他工具出现故障,有一种方法可以进入已知状态。

IAR 工具链支持 SAM3 系列,并且有一个 port of FreeRTOS to SAM3U + IAR(我现在正在尝试将其移植到 SAM3U + GCC,因为 IAR 的 5000 美元许可证对我们来说太丰富了)。

SAM3U-EK 的另一个巧妙之处是:它有一个板载 NAND 闪存,如果您在运行演示时将该板插入计算机,它会将闪存作为“闪存驱动器”安装在您的计算机上。在此闪存中,您将找到 GCC、IAR 和 Keil 工具链的文档、原理图、演示程序和库,以及用于将演示程序恢复到板上的说明和文件(如果您认为自己损坏了某些东西,这很有用)。

【讨论】:

  • 这看起来真的很不错。不过,如果我有一个加载板,以太网和 CANbus 是我的优先事项列表,这里不存在。
【解决方案3】:

就我而言,我喜欢用于 LPC1768 的 LPCXpresso 板。它有一个内置的 USB JTAG 接口和一个免费版本的 Code Red IDE(基于 Eclipse)。我发现 JTAG 交互式调试在学习使用该芯片时非常有帮助。通常我在编程时不会使用交互式调试,但是对于嵌入式编程我发现它越来越重要了。

整个东西在 DigiKey 上只需 33 美元。

【讨论】:

    【解决方案4】:

    我最初也是一名软件开发人员。我使用了几个不同的工具包,但我发现最容易使用和使用最多的是mbed。您可以在打开盒子后的五分钟内启动并运行它。无需从 CD 安装任何 IDE,无需 JTAG 加密狗,无需翻阅数据表 - 只需编写代码、编译和运行即可。
    是的,有些人抱怨它与在线编译器“绑定”。但我只从没有实际尝试过的人那里听说过。这只是不正确 - 您仍然可以使用任何其他可以为 LPC1768 生成二进制文件的工具链:IAR、Keil、CodeSourcery、Yagarto 或您自己的工具链。我自己还没有找到一个案例,但这当然是可能的。
    mbed 的最大缺点可能是它不公开 JTAG 接口,因此您无法进行交互式调试。到目前为止,我还没有发现这很重要,但如果你做了很多低级工作,它可能很重要。

    【讨论】:

    • cortex-m3 的一个大缺点是 ARM 更改为使用更少引脚的 jtag 接口(即使 jtag 已经是串行的,也有一些串行的东西)并且他们不会在没有NDA,至少我今年早些时候尝试过的情况是这样。因此,使用诸如 mbed 或 Stellaris 之类的东西,您不会被锁定在沙盒中,但有一种加载程序的方法对于 cortex-m3 来说是可取的。
    • 实际上,SWD(两线 JTAG)是 Cortex-M3 上的一个选项,不是必需的。例如,LPC17xx 仍然具有完整的四线 JTAG(但 LPC11xx 和 LPC13xx 确实是 SWD-only)。 SWD 文档在没有保密协议的情况下绝对可用,但您可能需要在 arm.com 上注册才能下载它们。
    • mbed 本来是我家庭项目的首选,主要是因为价格。我目前正在看 Doulos 的培训,并最终希望制造一些定制板以节省成本。在一次学习经历中,我正在考虑使用全套装备(深入的 M3 学习、jtag、源代码调试等)。也许我现在不应该排除它?
    • 以后肯定可以降级。使用 mbed,您可以从提供的 C++ 类开始,然后切换到直接寄存器访问/您自己的中断处理程序(可能使用 mbed/在线编译器),然后例如使用 LPC1768 制作您自己的板。您甚至可以重复使用为 mbed 制作的固件。另请参阅mbed.org/users/chris/notebook/prototype-to-hardware
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-31
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多