香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 95|回复: 0

嵌入式软件工程师完全学习路线图专题

[复制链接]

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-4-19 16:38:36 | 显示全部楼层 |阅读模式
前言

嵌入式绝对是当前IT领域最炙手可热的话题了。其主要应用领域涵盖与人类相关的各行各业: * 消费电子(手机、平板电脑、游戏机) * 物联网(智能家居、智慧城市) * 工业自动化(无人工厂、工业机器人) 可以毫不客气的说,IT发展的未来在于嵌入式。巨大的商机和人才缺口导致嵌入式软件工程师的薪资居高不下,引得无数青年才俊、高校学子相继加入、苦苦钻研。


嵌入式是什么?


嵌入式系统由硬件和软件组成.是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面的内容。
嵌入式是用于控制、监视或者辅助操作机器和设备的装置。嵌入式是一种专用的计算机系统,作为装置或设备的一部分。嵌入式是才发展起来的一项IT开发技术。嵌入式开发在FPGA\\ARM\\DSP\\MCU等各个方面都有了细分专业团队进行外协设计。提供从原型样机、顶层软件架构到源码的所有设计。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。可在从事嵌入式系统开发的计算机与电子技术、IT、通信、军工、工业控制、汽车电子、大型设备智能故障诊断、电子设备等领域进行产品的开发、生产、测试、维护、销售、技术支持、技术咨询等工作。
具体就业岗位包括:嵌入式软件开发工程师、基于ARM系统的研发岗位、Linux系统应用软件开发岗位、Linux下C/C++软件工程师、嵌入式Linux系统研发工程师。


嵌入式与物联网的区别和联系

一、从两者的定义来看:

物联网强调的是物联网中设备具有感知、计算、执行、协同工作和通信能力及能提供的服务;
嵌入式系统强调的是嵌入到宿主对象的专用计算系统,其功能或能提供的服务也比较单一。
嵌入式系统具有的功能是物联网设备的功能的一个子集,但是它们之间的差异将越来越小。简单的嵌入式系统与物联网定义中的设备或者物有较大的区别,具有的功能不如物联网中的设备或者物,
从技术的角度来看,首先物联网与嵌入式系统都是各种技术融合的综合性技术,融合的技术大致相同,其次物联网技术中又包含有嵌入式系统技术。如下表所示:


二、从构成模型看物联网与嵌入式

关于“物”,根据亚里士多德和菲洛波努斯对物的哲学思考,即 物的“分类法”和“物有灵魂的本质”,可以从哲学的角度来定义“物”,即物不局限于物理世界真实的物品,也包括虚拟的物品以及与物联系在一起的事件。
那么物联网之物可以被定义为在时空中可以被识别的、真实存在或数字虚拟的实体。
当前许多日常物品已经嵌入微处理器,并不断地推陈出新,在原来的基础上增加新功能和通信接口等。比如: PDA 从原来不带无线通信接口的 PDA,发展到现在带有 WiFi、Bluetooth 的PDA。随着先进的半导体技术和软件技术的发展,包含有微计算器、存储器、软件、具有传感器与执行体接口的微处理器已经能比较容易地植入日常物品。
因此只要增加物品的网络接口,人和机器能够通过因特网远程监视和控制物品。还有,将传感器整合到物体中,那么它们自身就能相互交换信息,服务器或人也能远程监视它们。此外,改进软件系统使其变得更智能,无论是在有人还是无人干预的情况下,寄生在服务器和连接在网络上的物品中的智能计算软件系统根据服务器或物品的状态都能产生事件序列。



物联网之"物"的构成模型



嵌入式系统构成模型

总之,互联网从连接计算机的网络走向了连接对象的网络(即物联网) 要归功于与嵌入式微处理器、传感器、执行体、网络接口结合的对象能无缝地接入。而物联网中的物必须具有相应的属性和能力。




嵌入式软件工程师学什么?

1.嵌入式软件编程的基础

这一阶段重点打好嵌入式软件编程的基础,包括学习Linux系统的基本应用,Linux的常用命令、C语言编程基础、常用的数据结构。
特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。 必学内容有:Linux Ubuntu操作系统安装、使用、Linux常用命令、samba服务器、SSH远程登录GCC编译器、GDB调试器、VI编辑器
1)嵌入式C语言基本语法,指针及数组操作;
2)C语言高级语法:结构体、共用体、宏、枚举;
3)数据结构;
4)Linux系统基本使用及配置;
5)Linux下Makefile工作原理及其编写;
6)Linux下shell脚本相关知识及其编写;
推荐的嵌入式学习书籍:《C程序设计语言》《大话数据结构》《Linux与Unix Shell 编程指南》《Linux就该这么学》
2.嵌入式Linux高级程序设计

这一阶段主要学习上层的嵌入式Linux应用程序开发,包括基于Linux多进程、多线程、文件与目录。掌握进程和线程编程思想才是打开技术学习的大门,不然永远是停留在语法、算法层面,无法深入解决众多实际问题。
1)Linux系统调用概念;
2)文件I/O操作相关函数使用;
3)进程相关概念、及基本控制函数;
4)无名管道、命名管道、信号、消息队列、共享内存、信号量集合;
5)多进程、多线程实现多任务开发;
6)多任务的同步互斥开发:互斥锁、自旋锁、读写锁、信号量、条件变量;
这一阶段推荐书籍:《UNIX环境高级编程》《嵌入式Linux应用程序开发详解》
3.Linux高级网络程序设计

这一阶段主要掌握网络应用的CS架构编程方法,套接字编程接口及框架;同时掌握必要的数据库操作及函数,具备系统编程的综合素质。这一阶段的主要内容有:
1)网络相关概念及网络发展
2)socket编程、TCP网络编程、UDP网络编程、Web编程开发等
3)Linux网络应用程序开发,和并发CS服务器的实现
4)熟悉UDP广播、多播的原理及编程方法;
5)网络原始套接字概念及编程接口,及套接字属性设置;
6)HTTP协议及其实现方法;
6)数据库概念、数据库类型、常见数据库
7)SQLite数据库介绍及其安装与移植
这一阶段推荐的书籍:《TCP-IP详解卷》《UNIX环境高级编程》、《Unix网络编程》
4.C++面向对象高级语言程序设计

这个阶段主要学习C++思想及项目框架相关知识,C++语言作为一门高级语言,其语法复杂度比较复杂,学好并不是件容易的事情。此外、其编程思想是其精华所在,融会贯通后有无招胜有招的特效。
1)熟悉面向对象的语言概述
2)熟练掌握C++基本语法
3)封装、继承、多继承;
4)多态:虚函数、抽象类、模板;
5)标准模板库STL的使用及原理;
6)UML建模及设计模式;
7)各种网络库、数据库、IO库、线程库的使用;
8)Qt对C++的扩展及使用;
这一阶段推荐书籍:《C++ Primer》《The Standard C Library》《大话设计模式》《Qt Creator快速入门》《Qt5开发及实例》
5.ARM结构及驱动开发

这阶段主要了解芯片程序开发相关内容,包含STM32开发、汇编指令、ARM处理器工作原理等底层编程内容,学习这一阶段有助于理解内存、寄存器、系统、任务机制等底层概念,提高程序员的编程修养,属于点睛之笔。这阶段的学习内容包括:
1)单片机基础(汇编指令、时钟、GPIO、定时器、中断);
2)A53开发板介绍、设备使用、交叉编译
3)Keil下汇编指令编写;
3)通信总线UART、IIC、SPI及传感器模块的使用;
4)STM32开发流程;
5)uCos微型系统移植及使用;
6)Linux系统移植及使用;
这个阶段推荐书籍:《Linux内核设计与实现》《Linux设备驱动程序》《Linux设备驱动开发详解》
6.常用通信模块学习

这个阶段需要学习现有的工程模块的使用及原理,涉及RFID、红外、2.4G、Bluetooth、ZigBee、NB-IOT、Lora等。当然不要求全部完全的掌握,起码能达到会用的状态。具体来说这个阶段包含的内容有:
1)RFID工作原理,以及读卡器原理与通信过程;
2)红外遥控的原理及使用;
3)2.4G无线模块的配对及使用;
4)Bluetooth模块通信原理及使用;
5)TI的CC2530的基本应用,Zibgee相关微控制处理芯片;
6)NB-IOT基本概念及熟悉CoAP协议在中的应用;
7)Lora模块的使用;
8)掌握温度、湿度、光照、PH值、二氧化碳等传感器的工作原理及通信接口;
这个阶段没有推荐技术书籍,但感兴趣可以看一下传感器技术相关的书籍通信原理相关书籍,或者一些官方的介绍手册。
7、完成一个综合项目

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

教程资源

嵌入式软件工程师完全学习路线图专题-朱有鹏老师,从零开始完整系统的学习嵌入式linux技术的完全教程



感兴趣的同学可以私信
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-7-4 09:13 , Processed in 0.081525 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

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