2023年11月8日

初级嵌入式软件工程师学习路线本科或硕士

作者 admin

ARM+LINUX路线专注于嵌入式Linux操作系统和应用软件的开发:

(1)掌握主流嵌入式微处理器(暂定为arm9)的结构和原理

(2)必须掌握一个嵌入式操作系统(初步确定是uclinux或linux,版本待定)

(3) 熟悉嵌入式软件开发流程,至少参与过1个嵌入式软件项目。 从事嵌入式软件开发的缺点是:(1)入门起点比较高,使用的技术往往比较困难。 如果你没有很好的软硬件基础,特别是没有深厚的操作系统级软件基础,​​你可能不适合这个职业。 。

(2)该领域企业数量远少于互联网企业。 同时,工资也会降低。

(3)少数公司经常要求硕士以上学历的人从事嵌入式工作,主要是因为嵌入式工作难度较大。 但大多数公司并不要求这个,只要你有经验就可以。

(4)平台性强,更换平台难度大。 方法步骤: 1、基础知识:

目的:能够了解硬件的工作原理,但专注于嵌入式软件,特别是操作系统级软件,将是我们的优势。

科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。

方法:科目虽然多,但都是比较简单的基础知识。 不一定要选修所有课程,但可以根据自己的需要选修课程。

主要书籍:《C++编程语言》、《数据结构-C2》。 2.学习linux:

目的:深入了解Linux系统。

方法:使用linux→linxu系统编程开发→linux内核的驱动开发与分析。 我们先来读“深度”,重点是原理。 读几遍后,再读《形势分析》,深入比较。 这两本书是交织在一起的。 深度是轮廓,情感是目的。 Analysis是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、蓝牙、GPRS、GSM、CDMA等。

C、网络与信息安全技术:如加密技术、数字证书CA等。

D.DSP技术:数字信号处理。 DSP处理器通过硬件实现数字信号处理算法。 注:太多细节未说明,可根据实际情况进行调整。 重点是 1 和 3,您不必按照严格的顺序执行它们。 对于学习C++来说,原因在于C++不仅是一门语言、一种工具,更是一门艺术、一种文化、一种哲学理念,但并不是用来炫耀的东西。 对于Linux内核来说,学习编程,阅读一些优秀的代码也是有必要的。 注意:一定要学会举一反三,基础扎实。 很多事情只要看一眼就能明白。 要成为一名合格的程序员,必须精通至少一门编程语言,并具有良好的逻辑思维。 理论必须与实践相结合。 不要只钻研技术。 虽然很难挤出时间,但还是应该留出一些空间来完善其他爱好,比如空间、管理、心理学、音乐、游戏、科幻电影等。 有些事你不想做却又必须做! 技术是被编程和编程的。 永远不要梦想一步登天,永远不要做一个浮躁的人,永远不要觉得路途遥远。 这是关于编程、编程、再次编程、然后再次编程、再次编程! 等待创业机会(不要相信奇迹,盲目创业很难成功,而且即使成功了也可能没有太大的发展空间)。 推荐嵌入式书籍:

Linux基础知识

1.《Linux和Unix Shell编程指南》

C语言基础

1. 《C Primer Plus,第 5 版》[美国] Stephen Prata 2. 《C 编程语言,第 2 版》[美国] Brian W. Kernighan DavidM。 Rithie (K&R) 3.《UNIX环境中的高级编程》第2版》

4.《嵌入式Linux应用开发详解》

Linux内核

1.《深入理解Linux内核》(第三版)2.《Linux内核源码情景分析》毛德操、胡锡明

研发方向

1. 《UNIX网络编程》 2. 《TCP/IP详解》 3. 《Linux内核编程》 4. 《Linux设备驱动开发》(LDD)

硬件基础知识

1.《ARM架构与编程》杜春雷 2.S3C2410数据手册

系统教程

1. 《嵌入式系统 – 架构、编程和设计》 2. 《嵌入式系统 – 使用开源代码和 StrongARM/Xscale 处理器》 毛德操和胡锡明 3. 《构建嵌入式 Linux 系统》

理论基础

1.《算法导论》2.《数据结构(C语言版)》3.《计算机组织与体系结构?性能分析》4.《深入理解计算机系统》【美】Randal E. Bryant David O’ Hallaron 5、《操作系统:本质与设计原理》6.《编译原理》7.《数据通信与计算机网络》8.《数据压缩原理与应用》C语言书籍推荐

1. C 编程语言 《C 编程语言》 2. C 上的指针 《C 和指针》 3. C 陷阱和陷阱 《C 陷阱和缺陷》 4. 专家 C 语言 《专家 C 编程》 5. 编写简洁代码 — — Microsoft 开发无错误 C 程序的技术

《编程的本质——微软编写高质量无错误C程序的秘诀》6.《Cand C++编程嵌入式系统》《嵌入式系统编程》7.《C语言嵌入式系统编程实践》8.《高质量C++/ 《C编程指南》林锐

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

具体实现路线: 1、为嵌入式软件编程打好基础。 此阶段重点为嵌入式软件编程打下良好的基础,包括

* 学习Linux系统的基本应用

*常用Linux命令

* C语言编程基础

* 常用数据结构,特别是C语言中指针的理解和应用。 这个阶段的主要目的是学习编程语言、开发环境,培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。 2、这个阶段学习ARM架构编程才是真正的嵌入式编程。 首先,我们要选择嵌入式CPU和嵌入式开发平台。 目前应用最广泛的是ARM嵌入式CPU。 此阶段的重点是学习嵌入式CPU的裸机编程: * 熟悉中断

* 定时器

* 串行端口

* 闪存

* 网络控制器

* 液晶屏、触摸屏

*I2C设备

* SPI设备等常用嵌入式外围设备的硬件工作原理,以及如何使用C语言对这些硬件进行编程和控制。 这个阶段除了学习硬件编程之外,还需要学习嵌入式硬件的知识。 然而,对于嵌入式软件工程师来说,重点是学习硬件的工作原理。 在掌握硬件工作原理的基础上,进行硬件编程。 程序控制。 这与硬件工程师的学习重点不同。 现阶段对应的学校课程主要有模拟电路、数字电路、微机原理和单片机等。 此阶段的重点是阅读CPU芯片手册。 大多数参考书也是芯片手册的翻译。 3.学习嵌入式系统的构建。 这个阶段主要是学习带有操作系统的嵌入式系统的搭建,包括系统的启动过程。

*引导加载程序工作流程

* UBOOT编译

* 裁剪与移植,嵌入式Linux内核的裁剪、移植与编译

* 嵌入式根文件系统定制

* BootLoader、内核和根文件系统编程

这一阶段的主要目的是掌握带有操作系统的嵌入式系统的搭建和编程过程,对嵌入式系统软件的整体构成有一个整体的认识,为我们后续学习嵌入式应用和驱动开发打下坚实的基础。 。 基础。 4.学习嵌入式Linux应用程序开发。 本阶段主要研究上层嵌入式Linux应用开发,包括

* 基于Linux多进程

*多线程网络

* 文件和目录

掌握嵌入式Linux环境下的应用开发技术。 5.学习嵌入式Linux驱动开发

本阶段主要研究嵌入式Linux底层设备驱动的开发与设计,包括

* 常用的字符设备驱动

* 块设备驱动程序

* LCD设备驱动

* 触摸屏设备驱动

6、完成一个综合项目

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