嵌入式工程师学习路线
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内核、情景分析和源代。
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, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
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 Developing Bug-free C Programs
《编程精粹–Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and 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开发技术。
嵌入式工程师学习路线相关推荐
- 嵌入式linux学习路线参考(LINUX学习者必看经典)
整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...
- 01 - 嵌入式的学习路线、职业规划:嵌入式基本知识与开发流程
01 - 嵌入式的学习路线.职业规划 一.职业杂谈 -- (学习路线/行业介绍) 1.什么是嵌入式? 除通用计算机外(界限开始模糊:如树莓派) 特点: 硬件定制 智能控制(计算机技术) 软硬裁剪 2. ...
- 嵌入式新手学习路线,嵌入式课程学习课程分享
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发:用高级处理器,arm7,arm9,arm1 ...
- 嵌入式新手学习路线,嵌入式课程学习
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm1 ...
- 转——嵌入式Linux学习路线
可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助. 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类. 业务类 ...
- 成都两年JAVA工程师_成都Java工程师学习路线
成都Java工程师学习路线.java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言.建议如果学习java体系的话可以 ...
- 推荐算法工程师学习路线及工作指南
干货!推荐算法工程师学习路线及工作指南 以下文章来源于大数据与人工智能 ,作者gongyouliu 本文从我自己的学习成长经历.如何判断自己是否适合从事推荐算法.推荐算法工程师需要的知识储备.怎么找一 ...
- 人工智能工程师学习路线/自然语言处理算法工程师
人工智能工程师学习路线/自然语言处理算法工程师学习路径 人工智能工程师学习路线自然语言处理算法工程师学习路径 1入门级别 1 数据结构 2 算法重点 3python 2进阶阶段 1 机器学习算法 2深 ...
- 网络方向哪个发展更好?数据通信工程师学习路线分享
数据通信.网络安全.云计算,到底哪个网络方向更好呢?今天就带大家简单地了解一下. 先说说数据通信,这个是普及度比较高的方向.一般我们可以从事数通网络工程师.售前工程师.远程技术支持工程师.驻场工程师等 ...
最新文章
- Golang TDD实践报告:快速排序Quick Sort
- R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg
- pythonis啥意思-Python中is和==的区别
- jQuery之事件绑定
- SAP CRM Fiori note header
- java 设置头错误信息,错误:在node.js中发送标头后无法设置标头
- Java SimpleTimeZone setStartYear()方法与示例
- wenbao与数论(大白书)
- 【渝粤教育】电大中专中药制剂学作业 题库
- 思科软件服务器怎么作用,TFTP 服务器的选择和使用
- 《华为你学不会》读书笔记
- 曹鹏CSS视频教程 编程之邦
- Cannot subclass final class org.springframework.boot.autoconfigure.AutoConfigurationPackages
- 从谷歌(Google)首页变化看互联网十三年风云
- atan和tan什么的差别,数学不好的人要去死啊
- (笔记总结)单片机与单片机的通信
- uva 12012 - Detection of Extraterrestrial(KMP)
- MYSQL ifnull 函数 、if判断 、case when、 locate函数
- LevOJ B3408热浪
- 机顶盒boot分区读写
热门文章
- win7默认关闭802.1X身份验证选项
- 中文自动文摘关键技术总结
- 深富策略:指数继续反弹
- SQL如何求解多元一次方程和构造连续整数
- 怎样快速学习软件测试?软件测试学习方法
- Android窗口机制:六、一定要在主线程才可以更新UI吗?为什么?(源码版本SDK31)
- java核心基础_Java核心基础 - 惊觉
- android camera2 帧数,Android Camera2 HighSpeedCaptureSession高帧率预览录像
- Python中的魔幻语法记录
- 2021年安全员-B证(安全员)及安全员-B证(安全员)实操考试视频