ARM Cortex M3初学者需要的建议

6
我很快就要加入ARM Cortex M3的行列,参加一次官方培训(CPU方面)。
现在,我之前稍微接触过Arduino和AVR,并且对电子学有一些基础,但我主要是软件开发人员。我已经阅读了这里的大部分主题,以及其他地方关于可用工具的内容,它们非常有帮助。我需要的是将所有这些答案元素连接在一起的东西。
我想装备自己一个入门套件,足够通用,可以让我开始实验不同的硬件/软件组合(步进电机、CAN总线、SPI等)。我正在考虑以下清单(请随意添加更多项目!):
- Cortex M3芯片 - 评估板 - 工具链 - JTAG工具
对于芯片,我希望选择其中一款高端型号,以便能够尝试各种功能。NXP LPC1768似乎是一个不错的选择,但也需要考虑STM和Stellaris。
现在对于董事会来说,有一些有趣的候选人,比如Keil MCP1760和STM3210E-EVAL,但我担心会被供应商束缚住,因为我希望能够在一个单板上尝试各种工具链。mBed非常吸引人,但由于它的在线编译器(除非也可以使用常规编译器),所以不在考虑范围内。
对于工具链,我对IAR和Rowley Associates有一种“感觉”。我更喜欢易用性/成熟度而不是开源,并且最好能够在多个目标上使用的工具。
我真的需要一个JTAG单元吗?如果它像看起来那样是一个“标准行业工具”,我至少想要一些经验。但它似乎又是另一个供应商束缚的来源。我是不是最好使用一个外部的JTAG单元,这样我就可以熟悉它,还是只使用评估板上包含的JTAG单元?
基本上,我需要在上述类别中选择一个成功的组合。这是否可能,或者我是不是太天真了,应该考虑节省成本,因为最终我会购买每种产品?
谢谢。 结果:我订购的内容: 我终于买到了Joseph Yiu的《ARM Cortex-M3(嵌入式技术)权威指南》,找到了一些关于CortexM3平台的培训(即将推出),还购买了一套STMicro的开发套件:STM3210C-Eval,它内置了一系列传感器,并且不受特定软件环境的限制。我还买了几块STm32vl-Discovery开发板(从digikey上只需13加元!),板载有JTAG接口。现在我正在使用Keil的uVision IDE的评估版(32K)进行实验,我可以说我真的非常印象深刻!我能够在一天内重新构建Discovery的固件,加载回去,并通过调试器逐步执行代码!
谢谢大家!

1
你可能想在http://electronics.stackexchange.com上提问。 - Kevin Vermeer
谢谢,很棒的网站,又加入了书签! - Zot Ditz Myo
我有stm32vl discovery,但刚刚得到了stm32f discovery。168Mhz,i和d缓存,浮点单元,加密,哈希,相当多的内存,大量闪存等等,而且价格不到20美元。mbed将被存放,而这些将留在我的桌子上。https://github.com/dwelch67/stm32vld/tree/master/stm32f4d - old_timer
4个回答

3

LLVM和GCC都很好,不需要购买任何软件。提供免费帮助的大多数人将使用GCC。CodeSourcery是获取新版/更好的GCC(用于ARM)的当前位置。Lite版本完全可以。自己编译GCC相对容易,但可能不是你喜欢的事情。LLVM的好处之一是它始终是一个交叉编译器,并且预构建版本通常具有几个/所有目标。

我还有stellaris和mbed以及其他cortex-m3示例。我喜欢stellaris,不喜欢lpc,避免使用expresso,mbed实际上还不错。疯狂的亮蓝色LED会让我头痛,所以我用绿色替换了它们,否则它完全正常,易于使用。Igor是正确的,您不像使用expresso那样被锁定在他们的沙盒中,我有一个使用GCC编译的闪烁LED示例。您只需将.bin文件复制到类似于闪存拇指驱动器的设备上,然后按重置按钮加载新文件即可。

sparkfun.com售价不到50美元的stm32引脚板,再加上mbed和其他什么东西。Stellaris板的价格在100美元以下,完全可以。我通过意外地做了警告中不应该做的事情,几乎立即砖化了我的811。将我的jtag gpio引脚朝向错误方向...游戏结束。1968和其他非811系列要么无法砖化,要么不那么容易砖化。stellaris板通过内置外围设备占用所有io,这在一段时间内很有趣,但如果您想做一些其他事情而不仅仅是如何使用这些外围设备,则不适用。如果您正在使用stm32引脚,则需要jtag wiggler(避免stm primer),amontek制作了一个很好的产品,jtag-tiny,olimex的产品也应该可以正常工作,但我实际上不知道我是否将其从盒子里拿出来过。理论上,一个stellaris板可以用作另一个或其他cortex-m3的jtag wiggler。如果您有一个stellaris板,您将不需要其他任何东西,您需要的一切都包含在一个价格的盒子中,如果您不想使用该工具链,则可以下载上面列出的工具链。


中期目标是从评估板上取下芯片,这是真的。从一个装满小工具的板子开始确实很吸引我,因为我能够专注于学习CPU而不是如何互连东西。不过那个 STM32 头文件看起来确实很棒!顺便问一下,JTAG 和 wiggler 有什么区别吗? - Zot Ditz Myo
同样的事情。我所说的wigglers是通过位操作(bit banged)来实现jtag接口,而不是使用专门设计的jtag接口。过去我们使用并行端口,但现在使用usb转并行端口芯片。 - old_timer

2

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

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


2
您可能想要查看Atmel ATSAM3U-EK开发套件(大约200美元从Digi-Key购买)。 它具有LCD触摸屏,加速度计,温度传感器,模拟输入,JTAG,两个串行端口和USB 2.0(内置于SAM3U中)。
我喜欢SAM3系列的原因是易于启动。它具有用于程序存储的ROM和闪存。出厂时,它会引导ROM(稍后更改为从闪存引导),这将启动USB端口,声明自己为USB通信设备类(CDC)并运行SAM-BA引导监视器。 它还具有一个芯片擦除引脚,可将整个系统重置为出厂设置。
因此,要从头重新编程,您只需要:
  • 打开电源后,在至少200毫秒的时间内跳线ERASE
  • 重置并将板子插入USB接口
  • 在Windows或Linux上运行Atmel的SAM-BA程序
  • 选择串口
  • 启用闪存编程
  • 选择二进制文件并发送
  • 设置从闪存启动
  • 拔掉USB并再次按下复位按钮

无需加密狗或JTAG盒。我知道通过IAR进行JTAG重新编程可能步骤更少,但我喜欢知道如果其他工具出了问题,有一种方法可以回到已知状态。

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

关于SAM3U-EK的另一个很棒的功能是:它板载了一块NAND闪存,如果您在运行演示时将板子插入电脑,它会将闪存挂载到您的电脑上,作为“闪存驱动器”。在这个闪存中,您将找到文档、原理图、演示程序和GCC、IAR和Keil工具链的库,以及恢复演示程序到板子上的说明和文件(如果您认为已经损坏了某些东西,则非常有用)。

这块板子看起来真不错。但是如果我要一个功能齐全的板子,以太网和CAN总线是我优先考虑的,而它们在这里并没有提供。 - Zot Ditz Myo

1

我也是一名软件开发人员。我用过几种不同的套件,但我发现最容易使用并且实现最多功能的是mbed。您可以从打开盒子到在五分钟内开始运行。无需从 CD 安装任何 IDE,无需 JTAG dongles,也无需翻阅数据表 - 只需编写代码、编译和运行。
是的,有些人抱怨它“被束缚”在在线编译器中。但我只听说过那些没有真正尝试过它的人这样说。而且这显然是不正确的 - 您仍然可以使用任何其他能够为 LPC1768 生成二进制文件的工具链:IAR、Keil、CodeSourcery、Yagarto 或自己的工具链。我自己还没有找到这样做的理由,但肯定是可能的。
mbed 最大的缺点可能是它不暴露 JTAG 接口,因此您无法进行交互式调试。到目前为止,我没有发现这很关键,但如果您要进行大量的低级工作,这可能很重要。


1
cortex-m3的一个主要缺点是ARM更改了jtag接口,该接口使用更少的引脚(一些串行事物,即使jtag已经是串行)。而且,如果没有签署保密协议,他们不会发布关于它的文档,至少在我今年早些时候尝试时是这样。因此,选择像mbed或stellaris这样的东西,您不会被锁定到沙盒中,但有一种方法可以加载您的程序,这对于cortex-m3是可取的。 - old_timer
1
实际上,SWD(双线JTAG)是Cortex-M3的一个选项,而不是必需品。例如,LPC17xx仍然具有完整的四线JTAG(但LPC11xx和LPC13xx确实只支持SWD)。而且,SWD文档绝对可以在没有NDA的情况下获得,尽管您可能需要在arm.com上注册才能下载它们。 - Igor Skochinsky
mbed是我在家庭项目中的首选,主要是因为价格便宜。我目前正在考虑接受Doulos的培训,并最终希望制造一些定制板以节省成本。在学习过程中,我考虑采用完整的装备(深入学习M3、jtag、源代码调试等)。也许我还不应该排除这个选择? - Zot Ditz Myo
你肯定可以稍后降低级别。使用mbed,您可以从提供的C++类开始,然后切换到直接寄存器访问/自己的中断处理程序(可能使用mbed /在线编译器),然后例如制作自己的LPC1768板。您甚至可以重用为mbed制作的固件。另请参阅http://mbed.org/users/chris/notebook/prototype-to-hardware/。 - Igor Skochinsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接