找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18510|回复: 4
打印 上一主题 下一主题
收起左侧

对比stm32,arm9研究方向的猜想

[复制链接]
跳转到指定楼层
楼主
ID:51707 发表于 2013-7-11 01:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       大二上的寒假,受老师的邀请,去到东莞实习了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的优势。学东西最怕就是见到一样好就学一样,祝大家能够放下浮躁的心,学到自己喜欢的东西。学精一门总比样样都学而学而不精要好。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:89196 发表于 2015-9-1 10:11 | 只看该作者
你们觉得,学完c语言单片机编程,再学习java语言,再学习嵌入式ARM9,这种方向可以吗
回复

使用道具 举报

板凳
ID:69732 发表于 2015-10-20 11:13 | 只看该作者
楼主说的不错,曾经一直纠结到底是不是该抛开32去学习ARM9后来发现其实学好一个,精通就好
回复

使用道具 举报

地板
ID:301896 发表于 2020-4-15 23:09 | 只看该作者
楼主,现在搞的哪一个,感觉怎么样
回复

使用道具 举报

5#
ID:373684 发表于 2020-4-17 21:10 | 只看该作者
2013年的文章,,估计楼主现在做老板了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表