该怎么学习嵌入式啊?

2024-12-29 11:32:42
推荐回答(4个)
回答1:

你先知道嵌入式是什么,嵌入式的方向也挺多的,比如工业控制(常用:单片机、PLC),手机周边(常用:ARM、OMAP),数字信号处理(常用:DSP、FPGA)等。一些嵌入式的基础,C语言程序设计,单片机原理、数字电路、模拟电路等。单片机入门比较简单,满足一般的工业控制差不多了,学学C语言,买个单片机的开发板(8051、AVR、STM32)学个半年到一年,也能小有成绩,工作了月薪4K-6K吧,就现在这物价。现在很火的手机周边开发也不错,不过最好报个培训班,这个东西比较专,就是针对某个平台,如IPHONE或者ANDROID。如果成为一个嵌入式的达人,就比较难了,数字电路、模拟电路、数字信号处理都要驾轻就熟,知识都是相通的,像我的老板是一个50左右的技术牛人,从刚有单片机时,就开始搞8051,用汇编写数字信号处理的定点LIB,数字信号处理的很多算法都门清,DSP玩的很转,公司刚接的案子是一个billion级的,用到无线电、卫星、DSP、VPN、工业PC,老板忙着给我们这些小崔讲算法,讲架构。嵌入式还是挺有趣的

回答2:

嵌入式开发学习路线图-尚观嵌入式研究室-嵌入式路线图

-------作者:尚观嵌入式研究室UEA0908班 范同学
为什么选择学习嵌入式?

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”,
而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到
工作。据专家预测,嵌入式每年人才缺口在30万左右。

入式职业发展讲解视频

视频中主要讲解什么样的人适合从事嵌入式行业、嵌入式行业从业人员需要具备哪些基本素质、嵌入式行业的特点以及嵌入式行业的现状与发展。

嵌入式研发方向职业生涯讲解视频(1)
嵌入式研发方向职业生涯讲解视频(2)
嵌入式研发方向职业生涯讲解视频(3)

嵌入式研发方向职业生涯讲解视频(4)
嵌入式研发方向职业生涯讲解视频(5)

ARM+Linux嵌入式底层内核驱动方向学习总体路线图

基础学习Ⅰ---Linux入门

目前嵌入式主要开发环境有
Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人
员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux
系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把
Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安

基础学习Ⅱ---C语言

C语言是嵌入式开发必备的基础知识。在Linux下从事C语言的开发,你会觉得更为顺畅、更为自然,因为C语言是因unix的出现而诞生的,Linux内
核几乎完全是由C语言编写完成的。学习C语言,如果不会用指针,那么就称不上会C语言。做嵌入式开发指针更显得尤为重要,所以做嵌入式开发除了掌握位操
作、限定词等,对指针的掌握是不可或缺的。而且要掌握多级指针、函数指针等等。涉及到指针,那么就会讲到内存分配。在大学中,学习C语言一般的学习很少讲
到内存分配,但是如果期望从事嵌入式开发,那么就必须懂得C语言是怎么做内存分配管理的。指针之外,还要学习模块化编译处理、指针与数组、gcc、
Makefile、GDB、递归、结构体、宏定义使用等。C语言是整栋嵌入式大厦的基础,所以在学习嵌入式时,必须把C语言重视起来,多敲代码,多练。一
名优秀的程序员必定是通过“体力劳动”再转向“脑力劳动的”,这也是为什么我们要有“写不出代码=0”思想的原因所在。
如果说C语言相当于文字,那么数据结构就相当于在造句、写文章。代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作
为学习重点。而且我们也可以查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这
不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。

C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。

B)经典学习视频推荐:

1-1c语言编辑器vi的使用

1-2c语言编译过程及编译器gcc

2-1c语言的数据类型

2-2数据快速引用

2-3c语言运算符及表达式

3-1c语言的分支结构

3-2c语言的循环结构

4-1c语言函数的定义及传

4-2c语言函数调用

5-1-1c语言的一维数组

5-1-2二维数组及多维数组

5-1-3c语言字符数组

5-2-1c语言结构体-Struct

5-2-2C语言联合体-Union

6-1c语言指针的概念

6-2c语言指针与一维数组

6-3指针与二维数组及字符

6-4指针与结构体、联合体

6-5c语言指针与函数

6-6c语言指针常量与常量

7c语言存储空间管理

8-1c语言存储模型分析

8-2双向循环链表的创建增

8-3双向循环链表的数据管

C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器

基础进阶---Linux应用程序设计

Linux的思想源于Unix。Linux继承了Unix的优点,但是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux
不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface
Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了
UNIX 几个典型特性当中最实用的一些功能:
Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。

Linux 支持 BSD Socket 网络编程接口。
许多 Linux 发行版采用 SysV init
机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。

A)经典书籍推荐:

B)经典学习视频推荐:

Linux网络开发-1、ARP攻击原理
Linux网络开发-2、ARP攻击实例分析
Linux网络开发-3、ARP攻击程序代码分析和socket构造

C)经典学习案例:
1、串口监听程序
2、图片浏览器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音频广播程序 7、ping的实现
8、DDos攻击程序 9、ARP攻击程序

嵌入式入门---ARM体系结构

从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM
Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex
M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。
在开始学习前,建议有一块自己的开发板,目前ARM9
2440的开发板价格在400-600元之间,ARM11
6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大家尽量不要买mini开发板,虽然mini开发板的价格要便宜些,但是与正常开发板相比,mini板功能是不完善的。嵌入式汇编有别于X86汇编,所以如果以前没有接触过汇编语言,那么没有必要先去学X86汇编再学嵌入式汇编,可以直接学习嵌入式汇编。除了汇编我们还要学习ARM指令集。有了开发板,我们要下载相对应处理器的DataSheet及开发板电路原理图。ARM体系结构的学习我们是不能完全照抄别人代码的,因为我们自己手中的开发板及处理器与别人是不同的,除非所用的代码是根据你手中的开发板来编写的。所以,我们要先去看书、看视频资料理解原理及工作方式等,然后根据自己开发板的电路原理图和DataSheet来编写代码,达到理解外围设备工作原理和操作硬件的目的。

B)经典学习视频推荐:
1)嵌入式扫盲篇

嵌入式漫谈1

嵌入式漫谈2

嵌入式漫谈3

十问嵌入式1-什么是嵌入式,创业

十问嵌入式2-嵌入式实例iphone

十问嵌入式3-嵌入式前景

十问嵌入式4-嵌入式学习

十问嵌入式5-ARM概述

十问嵌入式6-ARM概述
开发板

十问嵌入式7-ARM与单片机

十问嵌入式8-汇编语言的作用

十问嵌入式9-操作系统的选择

十问嵌入式10-编程语言选择

2)嵌入式开发概述

嵌入式开发入门经典教程-1
嵌入式开发入门经典教程-2
嵌入式开发入门经典教程-3

嵌入式开发入门经典教程-4
嵌入式开发入门经典教程-5
嵌入式开发入门经典教程-6

嵌入式开发入门经典教程-7
嵌入式开发入门经典教程-8
嵌入式开发入门经典教程-9

嵌入式开发入门经典教程-10
嵌入式开发入门经典教程-11
嵌入式开发入门经典教程-12

嵌入式开发入门经典教程-13

3)ARM体系结构与Bootloader开发

1、ARM基础概念介绍与开发板使用教程
2、编译器高级应用与裸机代码编写教程
3、ARM指令与ARM汇编入门

4、ARM汇编高级教程与APCS规范详解
5、ARM体系结构详解与异常处理机制
6、ARM中断机制详解与Watchdog驱动开发实例

7-1、ARM外部中断机制详解与LED驱动开发实例
7-2、ARM嵌入式开发之ARM外部中断机制详解与实例
8、AMBA总线结构与ARM时钟配置

9、时序图详解与NAND
FLASH驱动开发实例
10-1、内存控器与SDRAM原理详解(上)
10-2、内存控器与SDRAM原理详解(下)

11、UART串口详解与通信开发实例
12、ARM协处理器CP15配置原理
13、从零开始写Bootloader开发过程详解

C)经典学习案例:
1. ARM模拟器开发 2. Watchdog控制程序 3.
RTC时钟控制程序
4. Uart控制程序 5. LCD控制程序 6.
触摸屏控制程序
7. DMA控制程序 8. 音频控制程序 9. 网卡控制程序
10.
文件系统制作 11. ARM-Linux移植

嵌入式提升---Linux内核、驱动

众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。

由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11
6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。

B)经典学习案例:
1. GPIO驱动 2. RTC时钟驱动 3.
WatchDog驱动 4. Udev移植 5. 触摸屏输入设备驱动
6. LCD显示设备驱动 7. DMA驱动 8.
音频设备驱动 9. Nand Flash块设备驱动 10. 网络设备驱动

回答3:

嵌入式Linux应用开发完全手册

回答4:

学习嵌入式,应该从哪里开始学习,今天由创客学院的老师来为大家讲一讲。
1)学习 Linux系统安装、 常用命令、应用程序安装。
2) 学习 Linux 下的 C 编程、这本书必学《UNIX 环境高级编程》、《UNIX 网络编程》,Rechard Stevens 写的,C 高手大都学习过 《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》
3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!
4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!
5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始就从 ARM 入手,不太现实!
6)ARM 体系结构,其中有汇编。
7)数字电路有必要学习,不然你在做底层开发时真的会不知道怎么看原理图,起码也得懂与或门吧。
8)ARM + Linux 应用程序开发。(前提是要有开发板)
到此,你勉强算是在 嵌入式Linux 这个行业有了初步入门了吧, 但遗憾的是这还远远不够!这是我现在的水平。告诉你我是学软件专业,已经学习一年 嵌入式Linux 了,我现在找个工作都难,还没找到。以下是我认为成为高手的学习方向。
9)要做底层开发,就必须知道软硬件之间是如何衔接和配合工作的,那么电子技术应该要好好学习了,很多时候会用到模拟电路知识,这是区别好手与菜鸟的不同之处之一。
10)Linux 下的汇编要学,这样你才能真正了解你写的程序是如何在一个特定的硬件上跑的。这是区别好手与菜鸟的不同之处之二。
11)TCP/IP 协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。
12)有了这些东西,拿下 Linux 驱动 已经不再话下,需要你去学习 Linux 内核源代码和Linux驱动程序设计,这是一个技术升华。
到此, 你已经算是 嵌入式Linux 的中级人物了,本科生工资在4000-5500 不等。
13)音频、视频的解码译码技术你得学。
14)各种 IC ,各种 bootloader 你能够参与其开发设计。
15)自行设计开发新产品,新技术。
我认为到此你已经是一个世界级的嵌入式Linux 人物了,工资待遇我已经不用说了。

这些东西要靠自学入门,说实话不太现实,嵌入式入门比较高,要有心里准备,进培训机构学习是有必要的,除非你有亲戚朋友手把手教你。但不一定就意味着培训了你就真能学好,能找到很好的工作,要因人而异,能入门就算不错了。主要还是靠个人,还有就是自己必须要有一块开发板,你必须投入很多钱,因为还有很多的书籍你也得买。还有一点,自己必须得喜欢专研。要不你不可能学好!
嵌入式学习要一步一步走,才能走的扎实,十年磨一剑,百年磨一针。希望以上内容能对喜爱嵌入式的朋友们有所帮助。