嵌入式开发学习路线 及书籍推荐

2023-05-16

 

 

嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段:

1、嵌入式linux上层应用,包括QT的GUI开发

2、嵌入式linux系统开发

3、嵌入式linux驱动开发

学习路线:

1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。

推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。

(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。

(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。

推荐书籍:《UNIX环境高级编程》(第2版)

(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。

(5) 系统移植的时候,就需要你从最下层的

bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

(6) 驱动开发

linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。

以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!

嵌入式是一个比较大的概念,有四个分支(主要):

1、微控制器(单片机为例);

2、微处理器(arm为例);

3、dsp(数字信号处理);

4、soc(片上系统);

对于我们初学者而言,首先要学习单片机,以51为代表,等你学好51之后,可以深入学习更艰难的东西;

当然,并不是说你只需要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能够掌握的不错的时候又需要自己进行原理图、PCB板的设计;还得掌握系统设计的工程管理什么的;比较多。。。。

单片机还是比较简单的,等到学好之后,开始学习arm的时候,你就接触的多了,什么操作系统啊、驱动编写啊、内核移植啊、应用程序的添加啊、上位机的编写啊,,那个就多了,,不过到时候你就全知道了。。。

ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:

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

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

(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

方法步骤:

1、基础知识:

目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。

科目:数字电路、计算机组成原理、嵌入式微处理器结构。

汇编语言、C/C++、编译原理、离散数学。

数据结构和算法、操作系统、软件工程、网络、数据库。

方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。

thec++programminglanguage(一直没时间读)、数据结构-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、CDM A等。

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

D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算 法。

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

注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。

不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!

技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。

Linux基础

1、《Linux与UnixShell编程指南》

C语言基础

1、《CPrimerPlus,5thEdition》【美】StephenPrata着

2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav

idM.Rithie(K&R)着

3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)

4、《嵌入式Linux应用程序开发详解》

Linux内核

1、《深入理解Linux内核》(第三版)

2、《Linux内核源代码情景分析》毛德操胡希明著

研发方向

1、《UNIXNetworkProgramming》(UNP)

2、《TCP/IP详解》

3、《Linux内核编程》

4、《Linux设备驱动开发》(LDD)

5、《Linux高级程序设计》杨宗德著

硬件基础

1、《ARM体系结构与编程》杜春雷着

2、S3C2410Datasheet

英语基础

1、《计算机与通信专业英语》

系统教程

1、《嵌入式系统――体系结构、编程与设计》

2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操胡希明 著

3、《BuildingEmbeddedLinuxSystems》

4、《嵌入式ARM系统原理与实例开发》杨宗德著

理论基础

1、《算法导论》

2、《数据结构(C语言版)》

3、《计算机组织与体系结构?性能分析》

4、《深入理解计算机系统》【美】RandalE.Bryant DavidO''Hallaron着

5、《操作系统:精髓与设计原理》

6、《编译原理》

7、《数据通信与计算机网络》

8、《数据压缩原理与应用》

C语言书籍推荐

1.TheCprogramminglanguage《C程序设计语言》

2.PointersonC《C和指针》

3.Ctrapsandpitfalls《C陷阱与缺陷》

4.ExpertCLanuage《专家C编程》

5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms《编程精粹--Microsoft编写优质无错C程序秘诀》

6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系统编程》

7.《C语言嵌入式系统编程**》

8.《高质量C++/C编程指南》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式开发学习路线 及书籍推荐 的相关文章

  • CSS解决高度塌陷的方法

    一 什么是高度塌陷 当父元素不设置高度的时候靠子元素撑大 xff0c 也就是说子元素有多高 xff0c 父元素就有多高 xff0c 当子元素浮动后 xff0c 父元素就会高度塌陷 父元素高度塌陷后 xff0c 父元素下面的元素就会向上移动
  • mysql中如何查看sql语句是否用到索引,以及分析一条SQL的性能瓶颈

    mysql中如何查看sql语句是否用到索引 1 操作步骤 1 1 使用explain xff0c 放在sql前面 2 解释 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引 xff1a type结果值从好到坏依次是 xff
  • NoMachine配置

    NoMachine配置以及连接中遇到的问题 1 软件下载 软件官方下载网站 xff1a https www nomachine com xff08 软件下载缓慢 xff0c 请耐心等待下载完成 xff09 xff1b 本人上传了连个下载好的
  • 同星T1014在线回放设置

    同星T1014在线回放设置以及常见问题解决方法 1 同星T1014连接硬件进行在线数据回放 1 将同星T1014硬件连接到到电脑中 xff1b 2 打开TSMaster软件 xff0c 在通道选择选项中配置通道 xff0c 该硬件最大支持四
  • 虚拟串口VSPD和XCOM的下载+安装+使用

    虚拟串口VSPD和XCOM的下载 43 安装 43 使用 1 软件下载 对于上机位开发的伙伴来说 xff0c 上机位软件的调试尤为重要 xff0c 但是上机位软件的调试并不关心硬件 xff0c 只需要关注验证发送的数据的接收情况 xff0c
  • VCU功能控制

    VCU功能控制 VCU具有整车转矩管理 电池能量协调管理 电机功率协调管理 充电管理 故障诊断等功能 能够对上 下电时的高 低压控制逻辑进行管理 xff0c 能够根据驾驶员输入对需求转矩做出准确判断 xff0c 能够对车辆当前工况进行判断
  • 车速计算方法-附赠车速快速计算App

    车速计算的原理和方法 假设车辆配置为 xff1a 发动机WP10 310E40 xff0c 变速箱12JSD160TA 最高挡速比0 78 xff0c 车桥速比 xff1a 4 769 xff0c 轮胎11 00R20 滚动半径为0 527
  • 说说你对模块化的理解(CommonJS、AMD、CMD、ES Module)

    模块化的开发方式可以提高代码复用率 xff0c 方便进行代码的管理 通常一个文件就是一个模块 xff0c 有自己的作用域 xff0c 只向外暴露特定的变量和函数 目前流行的js模块规范有common js AMD CMD ES Module
  • python使用request+xpath爬取豆瓣电影数据

    python使用request 43 xpath爬取豆瓣电影 背景话不多说上代码 背景 由于毕设需要用到电影相关的数据 xff0c 在网上想查找一个可以爬电影的教程 xff0c 但是基本上所有的教程都是爬的豆瓣top250 xff0c 并没
  • git 报错 error: src refspec master does not match any

    这个错误通常表示你的本地仓库中没有与远程仓库对应的分支 可能的原因是你还没有进行过任何提交或者还没有将本地分支推送到远程仓库 以下是几种可能的解决方法 xff1a 1 检查是否存在本地分支 使用git branch命令检查本地是否存在分支
  • Modbus通信工具学习记录

    Modbus通信工具学习记录 Modbus通信方式Serial PortSerial Port调试助手虚拟Serial Port驱动 TCPTCP调试助手 Modbus模拟工具Modbus PollModbus Slave通信测试后记 Mo
  • HandlerInterceptorAdapter

    HandlerInterceptorAdapter是什么 xff1f HandlerInterceptorAdapter是Spring框架提供的一个适配器 xff0c 通过继承它可以很方便的实现一个拦截器 xff1b HandlerInte
  • 我的Chrome插件

    1 AdBlock 用来屏蔽广告 xff0c 用过的人都说好 2 Flash Block Plus 用来限制Flash的播放 3 Flash Control 用来限制Flash的播放 4 Full Page Screen Capture 好
  • 网络协议栈基本知识

    https www cnblogs com mrlayfolk p 11965347 html 个人觉得原作者把网络协议栈讲解的很好 xff08 生动 xff0c 易理解 xff09 xff0c 所以在这里记录并分享 1 网络协议分层 按照
  • VS code 发送http请求

    下载rest http插件 xff0c 重启vscode 发送get请求 span class token annotation punctuation 64 hostname span span class token operator
  • AD 教程(一)

    写在前面 xff1a 本教程源自凡亿教育出品的 AD2019 从入门到精通 xff0c 笔记分为六部分 xff0c 如有错误之处 xff0c 请多指教 视频出处 一 元件库的创建 1 软件的安装2 AD工程的组成及创建3 元件库介绍 电阻容
  • docker 常用删除镜像和容器命令记录

    删除镜像命令 一 通过标签删除镜像 通过如下两个都可以删除镜像 xff1a 1 docker rmi image 或者 xff1a 1 docker image rm image 支持的子命令如下 xff1a f force 强制删除镜像
  • 树莓派安装ROS系统【第一篇】

    树莓派装ROS系统 xff08 第一篇 xff09 注 xff1a 第一篇 主要是撰写了树莓派安装ROS系统 xff0c 远程连接等操作 在网上扒拉了一些资料 xff0c 感觉各有优缺 xff0c 作为踩坑者要进行信息的筛选 xff0c 因
  • 使用Scala编写第一个Spark程序

    使用Scala编写第一个Spark程序 演示目标演示环境创建Spark工程本地运行Spark集群运行安装SparkSpark standaloneSpark on yarnyarn client模式yarn cluster模式运行结果 演示
  • Git常用命令及使用

    Git常用命令 根据分支名查询分支 根据分支名查询分支 span class token comment 根据输入的分支名模糊匹配本地和远程分支 span span class token function git span branch

随机推荐