ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
         (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
         (2)必须掌握一个嵌入式操作系统 (初步定 为uclinux或linux,版本待定)
         (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

从事嵌入式软件开发的缺点是:

(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
       (2)这方面的企业数量要远少于互联网类企业。同时薪资待遇也会低一些。
       (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
      (4)平台依托强,换平台比较辛苦。

方法步骤:

1、基础知识:
               目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我们的优势。
               科目:数字电路、计算机组成原理、嵌入式微处理器结构。汇编语言、C/C++、编译原理、离散数学。数据结构和算法、操作系统、软件工程、网络、数据库。
              方法:虽科目众多,但都是较简单的基础。不一定全学,可根据需要选修。
               主攻书籍:the c++ programming language、数据结构-C2。

2、学习linux:
              目的:深入掌握linux系统。
              方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看《深》,那主讲原理。看几遍后,看《情景分析》,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
             主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、linux内核源代码情景分析。

3、学习嵌入式linux:
             目的:掌握嵌入式处理器其及系统。
             方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
                         (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
                         (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
          主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。

4、深入学习:
             A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
             B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
             C、网络与信息安全技术:如加密技术,数字证书CA等。
             D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。

说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。

注意:要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,管理,心理学,音乐、游戏、科幻电影。还有一些不愿意做但必须要做的!技术是通过编程编程再编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫长。而是要编程编程再编程,完了再编程,再编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。

嵌入式书籍推荐:
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata                    2、《The C Programming Language, 2ndEdition》【美】Brian W. Kernighan DavidM. Rithie(K & R)3、《Advanced Programming in the UNIX Environment,2nd Edition》
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)     2、《Linux内核源代码情景分析》毛德操 胡希明
研发方向
1、《UNIX Network Programming》2、《TCP/IP详解》3、《Linux内核编程》4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷    2、S3C2410 Datasheet
系统教程
1、《嵌入式系统――体系结构、编程与设计》                 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明        3、《Building Embedded Linux Systems》
理论基础
1、《算法导论》2、《数据结构(C语言版)》3、《计算机组织与体系结构?性能分析》4、《深入理解计算机系统》【美】Randal E.Bryant David O”Hallaron着5、《操作系统:精髓与设计原理》6、《编译原理》7、《数据通信与计算机网络》8、《数据压缩原理与应用》

C语言书籍推荐
1. The C programming language 《C程序设计语言》2. Pointers on C 《C和指针》3. C traps and pitfalls 《C陷阱与缺陷》4. Expert C Lanuage 《专家C编程》5. Writing Clean Code—–Microsoft Techiniques for DevelopingBug-free C Programs
《编程精粹–Microsoft 编写优质无错C程序秘诀》6. Programming Embedded Systems in Cand C++《嵌入式系统编程》7.《C语言嵌入式系统编程修炼》8.《高质量C++/C编程指南》林锐

尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要

具体的实施路线:

1、打好嵌入式软件编程的基础

这一阶段重点打好嵌入式软件编程的基础,包括
                       * 学习Linux系统的基本应用
                       * Linux的常用命令
                       * C语言编程基础
                       * 常用的数据结构

特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。

2、学习ARM体系结构编程

这一阶段才是真正的嵌入式编程,首先我们要选择一款嵌入式CPU和一款嵌入式开发平台,目前ARM 嵌入式CPU应用最广泛,这一阶段重点是学习嵌入式CPU的裸机编程:

* 熟悉中断
                    * 定时器
                    * 串口
                    * NAND FLASH
                    * 网络控制器
                    * LCD屏、触摸屏
                    * I2C 设备
                    * SPI 设备

等常用嵌入式外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上,对硬件进行编程控制。这和硬件工程师学习的侧重点有所不同。这一阶段对应的学校的课程主要包括模拟电路、数字电路、微机原理和单片机。这一阶段重点是要看CPU的芯片手册,大部分的参考书也是对芯片手册的翻译。

3、学习嵌入式系统的构建

这一阶段主要学习带有操作系统的嵌入式系统的构建,包括系统的启动流程
                    * Bootloader的工作流程
                    * UBOOT的编译
                    * 裁剪与移植,嵌入式Linux内核的裁剪、移植与编译
                    * 嵌入式根文件系统的定制
                    * BootLoader、内核和根文件系统的烧写
这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来学习嵌入式应用和驱动开发打下坚实的基础。

4、学习嵌入式Linux应用程序开发

这一阶段主要学习上层的嵌入式Linux应用程序开发,包括
                    * 基于Linux多进程
                    * 多线程网络
                    * 文件与目录
掌握嵌入式Linux环境下应用程序开发技术。

5、学习嵌入式Linux驱动程序开发

这一阶段主要学习底层嵌入式Linux设备驱动程序开发设计,包括
                    * 常用的字符设备驱动
                    * 块设备驱动
                    * LCD设备驱动
                    * 触摸屏设备驱动
以及驱动程序开发中的核心技术

6、完成一个综合项目

嵌入式技术关键在于理论和实践的结合,要能够学以致用,完成了以上的所有阶段的知识点学习后,到底有没有学会,会不会用,能不能应用所学知识来解决实际开发中的问题,我们需要来完成一个综合的嵌入式实训项目,例如: 基于嵌入式Linux平台实现的飞行器、 基于嵌入式Linux平台实现的智能机器人等,这些项目都综合应用了嵌入式开发当中的应用,驱动和QT开发技术。

初级嵌入式软件工程师学习路线(在校本科或者硕士)相关推荐

  1. 硬件工程师充电心得--嵌入式软件工程师学习路线

    硬件工程师日常主要工作通常为电路原理图.PCB设计,很少涉及软件编程,哪怕是一些硬件接口驱动很多硬件工程师都不曾涉足.面对日益激烈的竞争压力,多学一些嵌入式软件方面的技能也能为日后自己的职业生涯发展打 ...

  2. 机械转嵌入式开发需要学什么东西?嵌入式软件工程师学习路线

    机械相对属于比较传统的行业,如果现在年轻人入局这个行业,成长的空间非常有限. 我做了嵌入式单片机开发10年,有时做产品的时候经常会跟做机械.做外壳的工程师打交道. 工作话题之余,我们也会拉拉家常,最好 ...

  3. 嵌入式工程师学习路线

    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:  (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)  (2)必须掌握一个嵌入式操作系统 (初步定为uclinu ...

  4. 运维工程师高级运维中级运维初级运维学习路线技能图谱

    传统的认知是,运维场景中网络技能很重要.实际上,网络技能分物理网络和虚拟网络,而虚拟网络其实更多的是Linux技能层面的支撑.Linux作为一款非常稳定和安全的操作系统,更适合在服务器上使用.对于运维 ...

  5. 推荐算法工程师学习路线及工作指南

    干货!推荐算法工程师学习路线及工作指南 以下文章来源于大数据与人工智能 ,作者gongyouliu 本文从我自己的学习成长经历.如何判断自己是否适合从事推荐算法.推荐算法工程师需要的知识储备.怎么找一 ...

  6. 初级java开发学习路线_成为初级全栈Web开发人员的10分钟路线图

    初级java开发学习路线 So you have started your journey into the world of web development. But what do you lea ...

  7. 成都两年JAVA工程师_成都Java工程师学习路线

    成都Java工程师学习路线.java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言.建议如果学习java体系的话可以 ...

  8. 人工智能工程师学习路线/自然语言处理算法工程师

    人工智能工程师学习路线/自然语言处理算法工程师学习路径 人工智能工程师学习路线自然语言处理算法工程师学习路径 1入门级别 1 数据结构 2 算法重点 3python 2进阶阶段 1 机器学习算法 2深 ...

  9. 网络方向哪个发展更好?数据通信工程师学习路线分享

    数据通信.网络安全.云计算,到底哪个网络方向更好呢?今天就带大家简单地了解一下. 先说说数据通信,这个是普及度比较高的方向.一般我们可以从事数通网络工程师.售前工程师.远程技术支持工程师.驻场工程师等 ...

  10. 计算机网络 学习指南,计算机网络工程师学习路线指南

    随着计算机网络在社会生活各个领域的广泛应用,网络安全问题越来越成为人们关注的焦点.下面是学习啦小编收集整理的计算机网络工程师学习路线指南,希望对大家有帮助~~ 计算机网络工程师学习路线指南 工具/原料 ...

最新文章

  1. linux 增量备份镜像,【备份与恢复】合并增量备份与映像副本
  2. Linux文本三剑客之sed仗剑走天涯
  3. 一年的收益就是60% 熊市也能做到 股票花荣实战系统
  4. js json制表符报错_JS自学_常见错误复盘
  5. Kubernetes从懵圈到熟练:认证与调度
  6. python制作点亮图片_MicroPython拼插编程实例:点亮心形8x8点阵
  7. 微型计算机的应用特点,微型计算机的特点及应用
  8. 思科CCNA第二学期期末考试答案
  9. L2-008 最长对称字串 以下标i展开
  10. 即兴发言从懵逼到牛逼
  11. android服务绑定异步,Android中异步类AsyncTask用法总结
  12. 从「猜画小歌」,谈企业的「数据困惑」该何去何从?
  13. 深圳市云瑶信息科技有限公司
  14. Access denied (403) see security.limit_extensions
  15. mysql数据库基本知识
  16. GPG入门 - 练习笔记
  17. 马斯克的“圣战”:阻止人工智能毁灭人类
  18. Cubieboard2开发要点简记
  19. 题解 UVA1449 【Dominating Patterns】
  20. 2009级 华中科技大学 计算机学院 本科生名单,华中科技大学2009年本科特优生名单...

热门文章

  1. 射频IC行业为何这么惨?——RFIC的尴尬的现实和迷茫的未来
  2. FlashFXP 4.2.4 破解版
  3. vue结合vue-amap调用高德地图行政区划分
  4. java开源知识库项目_18个java cms开源项目
  5. 计算机输入什么指令关机,电脑自动关机命令是什么【详细介绍】
  6. IDEA光标跟随原因是jdk载入的问题BUG 修正 需要I安装最新版本1.8JDK 1.9之后的不清楚 谨慎...
  7. 时空图卷积网络:一种用于交通预测的深度学习框架
  8. matlab gui编程教程,matlab如何使用gui
  9. 用python实现传染病模型传染病模型
  10. sir模型 python_SIR传染病模型(附Python代码)