代码之家  ›  专栏  ›  技术社区  ›  Henry

第一次使用哪个微控制器作为嵌入式系统程序员重要吗?

  •  35
  • Henry  · 技术社区  · 7 年前

    我有几年做桌面和网络编程的经验。我想继续做一些嵌入式系统编程。询问 initial question

    哪个开发平台最容易学习和编程(考虑IDE的可用性)?

    如果出现问题,哪一个最容易调试?

    我的目标是了解 "how IO ports work, memory limitations/requirements incl. possibly paging, interrupt service routines." 是更好地学习一个我将在以后使用的,还是高层次的概念应该延续到大多数微控制器?

    更新: 怎么样 this dev kit 首先?评论?建议?

    13 回复  |  直到 9 年前
        1
  •  19
  •   Judge Maygarden    14 年前

    就我个人而言,我建议 ARM Cortex-M3 基于单片机。更高的权力 ARM 内核非常受欢迎,这些低功耗版本很可能在仍然充斥着专有8/16位内核的空间中起飞。以下是最近一篇关于这一主题的文章: The ARM Cortex-M3 and the convergence of the MCU market .

    这个 Arduino 对业余爱好者来说很受欢迎。 Atmel 的外设库在处理器类型中相当常见。因此,它将使以后从 AVR ARM .

    我并不是说ARM比AVR或任何其他核心都好。为商业产品选择MCU通常取决于外围设备和价格,其次是现有的代码库和开发工具。此外,微控制器通常比台式PC简单得多。因此,在掌握了窍门之后,从一个移动到另一个其实并不难。

    此外,调查 FreeRTOS walk-through example 甚至针对AVR。


    WinARM WinAVR

    这些工具链基于GCC,因此在非Windows平台上也可用(并且更易于使用IMHO)。如果您熟悉使用GCC,那么您就知道有大量的“IDE”适合您的口味 EMACS vi (我最喜欢的)去 Eclipse .

    商业产品可以为您节省很多安装方面的麻烦。然而,选择一个在很大程度上取决于您的目标硬件和预算。此外,一些硬件支持直接USB调试,而另一些可能需要昂贵的硬件 JTAG


    其他链接:



    New Arduino to utilize an ARM Cortex-M3 instead of an AVR microcontroller.

        2
  •  5
  •   Brian    16 年前

    考虑到你已经有了编程经验,你可能想考虑得到一个ARDUIO和清除固件来做你自己的东西与AVR Studio + WiNavr。Arduino为您了解其电子方面提供了一个良好的起点。取出Arduino引导器会让你更好地进入阿特梅尔的内脏。

    为了实现您设定的目标,我还建议您通过x86编程更深入地探索桌面计算机。例如,您可以构建x86操作系统内核。

        3
  •  4
  •   Clifford    16 年前

    ARM是应用最广泛的嵌入式体系结构,涵盖了来自多个供应商的大量设备和广泛的成本。也就是说,ARM7、9、11和Cortex设备之间存在显著差异,尤其是Cortex。然而,如果你的目标是专业地进入嵌入式系统,ARM经验将很好地为你服务。

    8位体系结构通常更易于使用,但通常在内存容量和核心速度方面都非常有限。此外,由于8位技能使用简单,相对容易获得,因此对潜在雇主来说,8位技能吸引力较低,因为它很容易在内部实现,或者由经验较少(因此成本较低)的员工实现。

    然而,如果这是一种爱好而不是职业,那么零件、电路板和工具的低成本以及易用性可能会使8位更具吸引力。我建议使用AVR只是因为它受到免费AVRCC工具链的支持。另一个开源C编译器SDCC支持一些8位目标。我相信Zilog可以免费使用他们的Z8编译器,但是您可能需要为调试硬件付费(尽管这相对便宜)。许多商业工具供应商为评估和非商业用途提供代码大小有限的工具版本,但请注意,大多数调试器需要专业硬件,这可能很昂贵,尽管在某些情况下,如果您只需要基本功能和低速度,您可以自己构建。

    www.embedded.com here . 对于AVR,请务必查看 www.avrfreaks.net

    我只推荐微芯片PIC部件(至少是低端部件)用于成本敏感度高的项目,这些项目的外围设备组合非常适合应用;不是为了学习嵌入式系统。PIC与其说是一种架构,不如说是一种品牌,不同的PIC12、16、18、24和PIC32系列彼此之间有很大的不同,因此在其中一个系列上学习并不一定能帮助你更好地使用另一个系列——通常你甚至需要购买新的工具!也就是说,如果您想同时获得一些简单的DSP体验,基于PIC24体系结构的dsPIC可能是一个不错的选择。

        4
  •  2
  •   Mark    16 年前

    这是一个很难回答的问题,因为你的理想答案很大程度上取决于你对学习的兴趣。

    如果您的目标只是深入研究计算系统的内部工作原理,我几乎建议您放弃嵌入式路线,读一本关于编写linux内核模块的书。写一些简单的东西来读取SMbus上的温度传感器或类似的东西。

    如果您希望进入高级(手机等)嵌入式应用程序开发,请下载Android SDK,您可以在eclipse下用java编写代码,甚至有一个很好的仿真器。

    如果你想进入“真正的”微控制器领域并真正了解低级系统编程,我建议你从一个非常简单的架构开始,比如AVR或PIC,一些没有MMU的架构。

    跳入中间地带,例如一个带有MMU和某种操作系统(无论是linux还是其他)的ARM将会有点令人震惊,因为没有背景既包括系统编程也包括硬件接口。我认为,如果你计划做很多事情,而不是编写非常简单的应用程序、计算按钮按下次数或类似的事情,那么过渡将非常艰难。

        5
  •  2
  •   lImbus    15 年前

    eZ430-Chronos Development Tool 包含一个带有显示器的MSP430和运动手表中的各种传感器,包括一个usb调试程序员和一个usb无线电接入点 for 50$

    a wiki containing 很多很多信息。

    我已经 created a stackexchange proposal

        6
  •  2
  •   Alchemy18    5 年前

    不,如果您想学习如何编程嵌入式设备,这并不重要。但是你需要知道从哪里开始,下一步该怎么做。因为有很多微型控制器,你不知道该选哪一个。所以最好在出发前制定一份路线图。

    在我看来,您应该从任何AVR板开始(atmega 328P-arduino板或AVR板) 然后是ARM cortex M3板。因此,这将为您提供一个整体视图,之后您可以根据您正在工作的项目类型和需求选择任何板。

        7
  •  1
  •   Jason S    16 年前

    无论你做什么,确保你有一个良好的开发环境。我不喜欢Microchip的开发工具,尽管我喜欢他们的微控制器(我被MPLAB+ICD烧坏了太多次,太多麻烦和功能失调)。TI的2800系列DSP非常好,并且有一个基于Eclipse的C++开发环境,您可以进入其中。100美元(购买一个基于“控制卡”的实验者工具包,如用于 28335 )--调试器通信链路非常牢固;IDE很好,尽管我偶尔会使它崩溃。

    有些地方有更好的IC和电路板;我不太熟悉嵌入式微控制器的情况,但我没有太多的耐心,因为还有另一个软件工具链,我必须找出如何绕过所有的bug。

        8
  •  1
  •   Craig McQueen    16 年前

    Atmel AVR有助于学习许多嵌入式要素,主要原因有三:

    1. development kits available, with tutorials
    2. Fan forum 有很多资源

    development kits 也可能是好的,比如 MSP430 虽然他们可能没有这样的粉丝论坛。使用开发工具包是一个很好的方法,因为它们旨在快速启动和运行micro,并促进有效的学习。他们可能有 tutorials oriented towards quickly getting started .

    好吧,我想开发工具包和它们的教程可能会掩盖引导加载程序和启动代码之类的东西,以便让您的代码尽快闪烁LED。但这可能是一个很好的开始方式,您可以按照自己的速度探索从“开机”到“代码运行”的事件链。

    due to their architecture . 这不是很友好。记忆库是痛苦的。

        9
  •  1
  •   Tim Ring    16 年前

    这很重要,您需要从更简单的系统开始逐渐获得经验。请注意,简单并不是指功能不那么强大,而是指易用性、易安装性等。在这方面,我建议如下(我对任何产品都没有既得利益,我只是觉得它们是最好的):

    我已经开始使用其中之一(MBED开发板)。对我来说,最大的卖点是我可以用C或C++编写代码,直接连接USB和一个光滑的在线开发环境(根本不需要本地工具安装)。

    http://mbed.org/

    打开盒子五分钟后,我有一个示例blinky程序(Emeded world的“hello world”)运行以下程序:

    #include "mbed.h"
    
    DigitalOut myled(LED1);
    
    int main()
    {
        while(1)
        {
            myled = 1;
            wait(0.2);
            myled = 0;
            wait(0.2);
        }
    }
    

    就这样!以上是完整的程序!

    它基于ARM Cortex M3,速度快,内存充足,可用于嵌入式项目(100mhz、256k闪存和;32k内存)。在线开发工具有一个非常好的库和大量的示例,还有一个非常活跃的论坛。在将设备连接到MBED等方面提供了大量帮助

    尽管我对嵌入式系统(ARM 7/9、Renases M8/16/32、Coldfire、Zilog、PIC等)有着丰富的经验,但我仍然发现这是一个令人耳目一新的易于掌握的系统,同时具有强大的功能。

    最初在一个基本的试验板上玩过之后,我从这些家伙那里买了一块垫板: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207

    参考我最初的观点,MBED控制器比LPCExpresso控制器功能更强,但使用和学习起来更简单。

        10
  •  1
  •   onaclov2000    16 年前

        11
  •  1
  •   ken    16 年前

    我只用过其中一个。

    飞思卡尔是一个很好的芯片。多年来,我一直在小项目中使用HC芯片。唯一需要注意的是,我不会碰嵌有10英尺长电杆的编码器。你可以找到一些免费的C编译器和汇编程序(我不记得我上次使用的那一个的名字),它们可以很好地完成这项工作。Codewarrior很大,令人困惑,不管我对芯片架构了解多少,C编程似乎总是让事情变得更难。如果您以前在Mac上使用Codewarrior,并且认为CW非常整洁,那么,它根本不是这样的。CW嵌入式 有点相似,但是 非常不同,也不是很好。

    命令行编译器通常是 好的 . 能花大钱的专业人士可以获得昂贵的开发环境,我相信他们可以使事情变得更好,但如果没有这些,它仍然比1990年为台式PC编写汇编代码要好得多,不知何故,我们成功地做到了这一点。:-)

        12
  •  0
  •   user113476 user113476    16 年前

    你可以 consider A. RoBoard . 现在,这个委员会可以 是什么,你正在寻找一个微控制器方面,但它确实有能够运行Windows或DOS的优势,因此你 使用Microsoft.NET甚至C/C++开发工具来摆弄伺服或传感器之类的东西,甚至,见鬼,建造一个机器人!这其实很有趣。

    还有 Axon II

    无论哪种方式,两个董事会都应该帮助您实现目标。

        13
  •  0
  •   Kenny    16 年前

    • IO端口如何工作
    • 中断服务程序

    我想知道你的最佳选择是入侵Linux内核吗?

        14
  •  0
  •   Ciro Santilli    7 年前

    https://en.wikipedia.org/wiki/Micro_Bit

    这个便宜的小板 (~20 pounds)

    它包含一个手臂皮质-M0,是所有手臂中最小的核心。

    我推荐它作为第一块微控制器板,因为它具有广泛的可用性、低成本、简单性,并且它向您介绍了ARM体系结构,它有许多更高级的板也可用于更严肃的应用。

    推荐文章