此文章转自http://www.51hei.com/bbs/dpj-19863-1.html

大二上的寒假,受老师的邀请,去到东莞实习了10天。虽然不是第一次去,但是这次的体会和上次有了很大的不同。这篇文章本来想从东莞回来就写了,但是一直拖到现在才写。在东莞,我工作位置的旁边是一个约27岁的大学生,他的职位大概是嵌入式工程师,他每天都在使用上了ucos2的STM32芯片进行编程。刚好我在学ARM9+LINUX,于是有时候我们也私下讨论了一下STM32和ARM9的那些事儿。

STM32是这几年很火的,有哈佛架构,性价比高,开发使用的函数库齐全等优点,这个芯片我本来也想在大一下的时候买块开发板来学,不过后来项目需要,所以学了ARM9。

在讲之前,问一个问题。假设有这样的一个项目,让你做一个数字示波器的控制和显示部分的模块,而采集模块和保护由其他芯片完成。问你应该采用ARM9还是STM32?(本文的ARM9代表冯诺依曼架构的芯片,而STM32代表的是哈佛架构的芯片)

个人觉得可能用STM32会实际很多。主要原因如下:
         1. 芯片成本高。STM32的芯片大概十几元一片,而且像单片机一样,几乎一块芯片就可以做出一个最小系统。对比ARM9,不但要买相对比较贵的ARM9芯片,还要买上Nand flash和nor flash才能做出最小系统。TQ2440的核心板淘宝就买到200多了。
         2. 做PCB的复杂。据说采用ARM9芯片的TQ2440的开发板中,它的最小系统用到6层板。据说做6层板,一次开模费就要1K多了。而且假如不按照TQ2440,选用自己的硬件方案来做最小系统,不知道又要画多少次板才行。
         3. 对于项目,假如采用普通的界面(如仪器类界面)加普通的外设(如按键,串口等),真的要上Linux吗?上Linux系统的确会增加不少难度。从驱动编写,到Qt程序编写,再到系统移植等,从内核到应用层,这对于不少人来说,的确有不少难度。假如功夫不到家,还可能开发周期延长,甚至做出来的产品还不如用STM32做得好。而这方面STM32虽然是有点瑕疵,但是也做得不错。
        4. 采用ARM9比STM32需要更多的人手。对于ARM9,假设上了Linux系统,又要做驱动,又要做界面,还要搞系统移植,每一项都是挺有挑战性的。大型项目用STM32可能就做不来了,但是小型项目,STM32的确不需要太多人手就能完成。而且,聘请一个嵌入式Linux的工程师也是价格不菲的。

以上就是我觉得ARM9的不足之处了。从上面看出来,假如用ARM9去开发一个用51单片机,或者用STM32就能完成的项目,真的有点大材小用了。所以,我觉得学ARM9,就应该研究一些STM32等哈佛架构的芯片无法比拟的方向。哈哈,假如别人用STM32或者AVR甚至51就能完成大部分功能,要你的ARM9干什么啊。
学ARM9,其实好多时间就是在学Linux。因为Linux这个操作系统真的很强大了,比ucos要丰富得多。

因此,下面我觉得学ARM9可以研究的一些方向:
       1. 网络通信类。众所周知,世界上绝大部分的超级计算机和服务器都是采用Linux的。这归功于Linux优秀的网络栈。Linux的网络栈的出错几率小,支持的网络协议丰富。通信协议从互联网的到如今流行的wifi,蓝牙等都能够支持。网络这方面是STM32等哈佛架构的单片机无法比拟的。
       2. 文件管理类。Linux有虚拟文件系统,支持绝大部分的文件系统,可以对磁盘里面的文件进行很好的管理。因此假如一些如MP4,PDA等需要对多文件操作的项目,更多会采用ARM9。
       3. 绚丽的多界面类(或游戏机类)。普通的界面(如示波器等),用STM32是可以完成的。但是对于复杂的界面,用Linux就好多了。在Linux上,可以用Qt等软件制作特殊的绚丽的界面。此外,太多的界面也会让STM32吃不消。多界面会使程序的空间增大得很快,对于Linux那样,采用虚拟内存管理,1G的程序可以在只有128M的物理内存的机器上跑。但是STM32就不行了,没有MMU就没有虚拟内存的功能(暂时看来是没有MMU),假如128M的物理内存的机器就只能跑不超过128M的程序。况且,STM32有128M的内存吗?
      4. 多种芯片的支持。Linux的可移植性好,假如一个项目需要换另外一种CPU,只要移植好Linux和相应的驱动,应用层基本不用改。但是移植Linux也是不容易的。
ARM9最大的优势就是可以跑Linux系统。假如能够真正发挥出Linux系统的优势,真的能让STM32等哈佛架构的单片机感到望尘莫及。但是STM32等哈佛架构的芯片,对于大部分中小型普通类控制项目,也是很有优势的。

既然选择了,就要风雨兼程。选择了STM32,就要挖掘STM32独特的优势,学精它;选择了ARM9,就要发挥出嵌入式Linux的优势。学东西最怕就是见到一样好就学一样,祝大家能够放下浮躁的心,学到自己喜欢的东西。学精一门总比样样都学而学而不精要好。

对比stm32,arm9研究方向相关推荐

  1. arm9 中断向量 重定位_关于STM32中断向量表的位置 、重定向问题

    关于 STM32 中断向量表的位置 .重定向问题 首先我们需要跳到 main 函数,这个就不多说了.那么,中断发生后,又 是怎么跑到中断入口地址的呢?从 stm32f10x.s 可以看到,已经定义好了 ...

  2. Linux arm9 设置中断向量表,STM32学习笔记之中断向量表,MDK程序启动分析

    ;// Stack Configuration ;// Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ;// Stack_Size EQU 0x0000 ...

  3. STM32启动文件分析

    相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化. ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一 ...

  4. IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC)

    参考博客及文档有: 1,http://www.cnblogs.com/ele-eye/archive/2011/11/28/2266229.html 2,http://www.cnblogs.com/ ...

  5. STM32的2.02固件库提供的启动文件详解 stm32f10x_vector.s

    当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点--因为C程序往往从main函数开始执行.但一个经常会被忽略的问题是:微控制器(单片 ...

  6. 一、STM32启动文件详细解析

    一.STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 [cpp] view plain copy ;************ ...

  7. STM32启动代码学习

    目录 文章目录 目录 摘要 第一部分:汇编指令学习 1.伪指令 2. 汇编指令 第二部分:STM32启动流程学习 1.基础知识储备 2.反汇编工具 第三部分:STM32启动代码分析 摘要 本节主要记录 ...

  8. STM32中断向量表的位置,重定向

    http://blog.csdn.net/u012722571/article/details/47295245 lanmanck原创] 这篇文章已经说了STM32的启动过程: http://blog ...

  9. STM32 中断向量表的位置 、重定向

    [lanmanck原创] 这篇文章已经说了STM32的启动过程: http://blog.csdn.net/lanmanck/article/details/8252560 我们也知道怎么跳到main ...

  10. 【重写】简析stm32启动过程

    说明:本文是杰杰以前保存下来的,出处已经不知道在哪了,应该是各大论坛中,当然转这种文章,到处都有.今天我就把它重写一遍.基于原作者的内容添加一些内容(源码)讲解.杰杰水平有限,出错在所难免,还望各位大 ...

最新文章

  1. 《微生物学报》“微生物大数据资源”专刊邀稿函
  2. php修改数据库字段内容,php对数据库的增删改查操作
  3. [转] ArcEngine 产生专题图
  4. 参数调优为什么要采样_程序员精进之路:性能调优利器--火焰图
  5. Java 中sleep()与wait()的区别
  6. 如何用openweather显示html,如何显示openweathermap天气图标
  7. locust===注意事项
  8. linux 中select()函数的使用
  9. 国军标GJB150三防试验(霉菌+盐雾+湿热)
  10. ffmpeg ACC音频播放
  11. 数据治理:数据血缘关系分析
  12. 考研强化阶段选书怎么选
  13. Android OTG 读写U盘文件
  14. CyanogenMod
  15. CSS中的line-height,height与line-height
  16. mysql对时间范围的查询
  17. 普渡大学电子计算机专业,普渡大学电子与计算机工程专业硕士录取!
  18. 传奇手游怎么开服?需要投资多少?需要那些东西?
  19. 什么是发布非约定商品?发布非约定商品的处罚是什么?
  20. 我的世界服务器怎么无限附魔,我的世界最好的附魔时运和无限,有一种方法让你快速获得!...

热门文章

  1. 谜一样的科学家——阿兰图灵
  2. error C4716 必须返回一个值 处理
  3. java中的Environment类
  4. 专插本计算机二级英语四级,专插本考试需要英语四级吗?
  5. 网络设备常见接口和模块
  6. 百度地图自定义信息窗口
  7. QQScLauncher.exe应用程序错误,0xc0000022
  8. 教育培训机构管理系统软件如何查看优惠券记录?
  9. 堆糖:爱豆图片分享社区
  10. 给 21 岁的自己 6 点建议