本科生的话,建议做软件方向的嵌入式系统,即利用现有的芯片和操作系统(开源的非开源的都可以)进行开发。嵌入式没有竞争相对小的方向,不管你搞什么,今天无限风光,明天就有可能寄人篱下。希望楼主在选择之前首先端正一下态度,选择了电子工程师这条路,就没有“竞争小”这项选择。前途的话在个人,你要是真是个牛逼人物捡垃圾也能捡出不一样的精彩。

  根据楼主本科生的情况,DSP还是不要碰了。这玩意单纯从编程角度来讲没有任何难度,其精髓在于你编程实现的算法.想把DSP用好,首先你将来从事的行业必须有大规模计算的需求,而且这种计算需求从某种程度上对时间要求比较高。比如通信,实时视频处理等方面。有些应用,比如地质数据分析,遥感数据分析,大规模计算的需求是有了,但是一个星期出结果和一年出结果没啥差别,那这种也就不需要DSP了,不如直接上PC来的顺手。其次应用DSP人员必须对自己行业所需要的专业知识极为精通,注意!这里的专业知识不是指什么数模电微机原理等“专业课”。而是解决本行业可能遇到的问题所需的知识。具体例子不好列举,就拿一般看得到的教材来说,很简单的DSP应用——FFT,你说你要是连FFT怎么回事儿都不知道,用在什么场合也没概念,什么时候用也说不清楚还搞什么DSP啊?DSP这东西跟什么学历没有太大关系,本科生也可以做得很好,关键是自己有没有足够的知识来用好它。

  FPGA相对DSP来讲稍微简单一点,当然,视个人情况而定。比起动不动就FIR啊IIR啊椭圆滤波器啊Butterworth啊什么的,我更喜欢几百万门的与非逻辑。基本的逻辑电路设计,本科时候的数字电路就可以够用了。不过大的趋势还是做SOC。SOC这个概念不难理解,简单点说就是把你原来做的实验那个PCB板换成硅片,把与外界的连线换成管脚。用芯片做了原来电路板做的工作。单纯组建一套片上系统并不复杂,复杂的是这套系统的商业化成本。现在很多SOC设计里面大量应用的现成的IP都是需要付费的。一方面原因是如果自己设计,周期和风险就会成倍放大,另一方面针对某些功能的IP靠自己的力量也搞不出来。如果是学生或者独立开发者,当SOC进行到一定程度后就会感觉自己的开发寸步难行了。抬头望去到处都是IP壁垒。想做出自己的东西真的很不容易。如果你的理论知识够牛的话,可以自己设计IP也是一个挺好的出路。

  不过这又回到了DSP的老话题:你的知识够用吗?以我们公司现在的视频处理项目来讲,实现的时候很简单,就是一连串的矩阵转换。问题是如果没人告诉你这么做,你自己能想到吗?如何把一个BMP或者PNG转换为YUV或者YPbPr?数据如何压缩?其实就是一堆色空间转来转去的。再比如让你用高斯算子和拉普拉斯算子做一个当前图像的边界检测,怎么做?先不讨论怎么做,麻烦问一下啥是高斯算子?归根到底,又是高等数学和线性代数那一档子事儿。按照中国当前的国情,50%的本科生基本靠混,另外50%不甘堕落的上进青年中,有90%不重视理论知识。所以FPGA入门可以,做也不是不能做,想有前途?难。

  这就是为什么建议你做嵌入式软件的原因。软件面比较广,在你51单片机嵌入式编程的技术基础上继续深入嵌入式系统的应用编程方向,一来上手快,理解概念好理解一些,二来对理论知识的要求不是那么严苛。虽然没有理论知识你依然只是个代码民工,但是嵌入式编程本身的灵活性从另一方面给了自己发展的空间,也就是说单纯就代码如何实现上自己也可以学到不少东西。所以软件可以不限于某几个行业而存在,而DSP和FPGA不行。如果可以参与一些开源的项目,对自己的提升就更大了。

  总之,本科生的话,如果不准备继续深造而且考虑今后一定时间的发展的话,做嵌入式软件比较合适。

  搞嵌入式开发的人有两类:一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、 Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。

  另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

  如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:
  1、嵌入式linux上层应用,包括QT的GUI开发
  2、嵌入式linux系统开发
  3、嵌入式linux驱动开发

  嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等
Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。
所以你可以尝试以下路线:
(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。
推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。
(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
(3) Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。
推荐书籍:《UNIX环境高级编程》(第2版)
(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。
(5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
(6) 驱动开发
  linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。
linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

  以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

  不过关于嵌入式的学习,还是要给你一些建议,嵌入式技术的门槛是比较高的

转载于:https://www.cnblogs.com/steararre/archive/2012/03/13/2394005.html

本科生学习fpga,dsp,嵌入式操作系统哪个好相关推荐

  1. 嵌入式linux笔记,嵌入式linux学习笔记(一)----嵌入式操作系统

    POSIX标准: 可移植操作系统接口,Portable Operating System Interface,IEEE最初开发为提高 UNIX 环境下应用程序的可移植性.然而,POSIX 并不局限于 ...

  2. ARM/FPGA/DSP板卡选型大全,总有一款适合您

    创龙科技ARM/FPGA/DSP嵌入式板卡选型大全2023.2版本正式发布!接下来,跟着我们一起看看有哪些亮点吧! 6大主流工业处理器原厂 创龙科技现有30多条产品线,覆盖工业自动化.能源电力.仪器仪 ...

  3. 一文讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系

    一文讲解单片机.ARM.MCU.DSP.FPGA.嵌入式错综复杂的关系 首先,"嵌入式"这是个概念,准确的定义没有,各个书上都有各自的定义.但是主要思想是一样的,就是相比较PC机这 ...

  4. 常见处理器MCU、MPU、DSP、FPGA等嵌入式处理器概念

    前文中多次出现了MCU.MPU.DSP.FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍. MCU 微控制器 (Micro-Controller Unit , MCU) ...

  5. 嵌入式学习(1)嵌入式的分类、ARM KEIL的说明、嵌入式操作系统、介绍

    1.嵌入式系统的分类 嵌入式系统源于微型计算机,是嵌入到系统对象体系中去,实现嵌入对象智能化的计算机. 嵌入式系统分类 (1) 嵌入式微处理器(EMBEDDED MICROPROCESSOR UNIT ...

  6. ARM学习(12)基于arm架构的嵌入式操作系统理解

    ARM学习(12)基于arm架构的嵌入式操作系统理解 笔者来聊聊指令集的理解 这里写自定义目录标题 ARM学习(12)基于arm架构的嵌入式操作系统理解 symbol 符号表认识 symbol符号表的 ...

  7. 【Yocto学习入门】02 - 构建一个简单的Poky参考嵌入式操作系统

    [Yocto学习入门]02 - 构建一个简单的Poky参考嵌入式操作系统 一.开发环境准备 二.下载 Poky 代码 三.配置编译环境 3.1 下载失败情况处理 Failed to fetch URL ...

  8. fpga嵌入linux系统,基于FPGA的Virtex-5板的PetaLinux嵌入式操作系统文件系统挂载流程...

    今天总算完成了文件系统的加入,现在看来整个的工作过程少了一个懂linux代码的指导,探索起来确实不易.总结下最近做的事情,条理才逐渐清楚了. 刚开始接到这个任务时是要在petalinux嵌入式操作系统 ...

  9. 嵌入式操作系统(嵌入式学习)

    嵌入式操作系统 嵌入式操作系统是什么? 嵌入式操作系统有哪些? 常用的嵌入式操作系统及其特点 对初学者的建议 嵌入式操作系统是什么? 嵌入式操作系统是一种专门设计和优化用于嵌入式系统的操作系统.它是在 ...

最新文章

  1. python打印时间_在Python中定义Main函数(第二部分)
  2. PHP免费的空间www.hostinger.co.uk
  3. VTK+MFC 系列教程 非常强大
  4. 解决 /lib64/libc.so.6: version `GLIBC_2.15‘ not found 问题
  5. WinSock I/O 模型 -- IOCP 模型
  6. 从excel导入数据库过程中遇到的空格转义符(#160;)
  7. linux vmstat_Linux中vmstat命令指南
  8. Ubuntu 16.04下安装激活pycharm 2018.3版本
  9. arm-linux-gcc stdio.h,arm-linux-gcc stdio.h no such file or directory错误
  10. [渝粤教育] 天津科技大学 化工原理A 参考 资料
  11. 拉盖尔多项式的正交性
  12. 2018年软件测试行业状态报告
  13. 开源软件的法律风险及防控
  14. Word默认打开方式不对,图标空白的修复方法
  15. 别有幽愁暗恨生,此时无声胜有声——python循环结构
  16. APC不间断电源说明书
  17. Linux下安装配置使用python虚拟环境
  18. Verilog状态机详述
  19. MT2502 datasheet,MT2502硬件设计,MT2502芯片资料
  20. tf.contrib

热门文章

  1. 利用Win32 Debug API打造自己的调试器Debugger
  2. Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本
  3. golang中的测试命令
  4. golang中的panic和recover
  5. golang值为nil的channel
  6. 为什么socket接收大数据的时候接收不完全,出现丢包?
  7. spring28: aspectJ--基于xml
  8. HyperLedger Fabric 错误记录
  9. DedeCms织梦发布文章时输入Tag标签逗号自动变成英文标点的方法
  10. delegate的使用总结