嵌入式开发学习路线图_嵌入式学习路线-程序员宅基地

技术标签: 嵌入式单片机  

                                 ARM+Linux嵌入式底层内核驱动方向学习总体路线图
     
基础学习Ⅰ---Linux入门
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系
统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的
基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行
版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,
而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟
机上安装。
A)经典书籍推荐:
基础学习Ⅱ---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
方面需要比较深入的学习。
A)经典书籍推荐:
基础进阶---Linux应用程序设计
Linux的思想源于Unix。Linux继承了Unix的优点,但是没有用UNIX的代码,所有程序都是重新编写的,而且
Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux 不仅符合 POSIX 标准,而且还包括其它 UNIX 标准 2014 9 17
嵌入式学习路线图 _ 如何学习嵌入式 _ 嵌入式学习步骤 _ 尚观嵌入式研究室
http://www.upemb.com/content/qian-ru-shi-xue-xi-lu-xian-tu
3/5
的多种特性,例如,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)经典书籍推荐
嵌入式入门---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来编写代码,达到理解外围设备工作原理和操作硬件的目的。
嵌入式提升---Linux内核、驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪
酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是
嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是
真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核
源码包,去看内核中的代码,在这里可以充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要
借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内
核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写
驱动并移植Android系统到开发板上吧。
 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangjiaweiwei/article/details/105186410

智能推荐

情人节表白网页源码_恋爱网站源码-程序员宅基地

文章浏览阅读565次。介绍:情人节表白网页源码,两个模板,手机电脑自适应演示一:www.qrj.zkxz.xyz演示二:www.qrj.zkxz.xyz/index02.html源码如下,网盘下载地址:https://zijiewangpan.com/wBpMWivQEPF图片:_恋爱网站源码

SVM支持向量机-核函数python实现(7)_non-bound iter-程序员宅基地

文章浏览阅读2.1w次,点赞31次,收藏173次。数据可视化上篇文章介绍了线性不可分和线性可分两种情况,以及五种核函数,线性核函数(linear),多项式核函数(poly),高斯核函数(rbf),拉普拉斯核函数(laplace)和Sigmoid核函数,基于《机器学习实战》的数据,我们使用各种核函数对数据尝试分类,下面看一下效果如何.首先看一下我们的数据集:........._non-bound iter

简单了解USB通信协议-程序员宅基地

文章浏览阅读855次,点赞24次,收藏22次。​在一个USB通信系统中,只能有一个主机存在,USB通信只存在于主机和设备之间,每次通信都必须由主机发起,而设备和设备之间无法通信。

myeclipse properties文件中文乱码_myeclipse修proper-程序员宅基地

文章浏览阅读128次。话不多说,直接上图(把默认编码改成UTF-8)_myeclipse修proper

Newtonsoft.Json - JObject与JArray总结_jobject转jarray-程序员宅基地

文章浏览阅读2.3w次,点赞3次,收藏35次。Newtonsoft.Json是一款.net下的Json序列化/反序列化库,省去了手动拼Json的麻烦,可以通过官网或者NuGet下载。JObject是其中比较万金油的一个类,可以在不使用实体类的情况下构建/解析Json。1.字符串转JObject引入命名空间:using Newtonsoft.Json.Linq;Json数据:{ "name": "steam"..._jobject转jarray

SpringBoot过滤器获取Request的body数据_springboot 重新实现dofilterinternal方法 读取请求body信息-程序员宅基地

文章浏览阅读546次。由于在SpringBoot过滤器或者拦截器中,request中getReader()和getInputStream()只能调用一次,到controller里数据就为空了,因此会导致Controller中@RequestBody的参数无法注入而导致 400 错误。_springboot 重新实现dofilterinternal方法 读取请求body信息

随便推点

遍历vtkRenderer中的vtkActor_vtk 中的 actor刷新-程序员宅基地

文章浏览阅读3.4k次。这篇博客 主要 想让大家知道如何遍历Render中的Actor,对Actor进行修改。vtkActorCollection* actorCollection = render->GetActors();int num = actorCollection->GetNumberOfItems();// Description: // Initialize the traversal o_vtk 中的 actor刷新

用户画像5步骤_用户画像五个步骤-程序员宅基地

文章浏览阅读3.7k次。此文章为转载文章,转载地址请点击此处 原标题:干货 | 搞定用户画像只需5个步骤 有一句话是,千万人撩你,不如一人懂你,这句话在互联网圈可以说成是,真正的了解用户,才能得到用户,所以,用户画像的重要性不言而喻。 什么是用户画像? 用户画像可以简单理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,..._用户画像五个步骤

在Eclipse中创建一个Web自动化测试脚本_eclipse自动化测试用例的设计及执行-程序员宅基地

文章浏览阅读893次。打开Eclipse,File -> New -> Project。必须在 src/test/java 目录下新建包,再新建类。在搜索框中输入selenium,选择第一个。PS:注意在外层添加* *_eclipse自动化测试用例的设计及执行

使用R语言提取包含特定字符串的数据行_保留含有特定数据的行r-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏4次。使用R语言提取包含特定字符串的数据行在数据分析和处理过程中,我们经常需要从大型数据框中提取特定条件的数据行。在R语言中,我们可以使用各种方法来实现这个目标。本文将介绍如何使用R语言提取包含特定字符串的数据行。首先,我们需要导入需要处理的数据框。假设我们有一个名为"df"的数据框,包含多个列。我们的目标是提取包含特定字符串的数据行。假设我们希望提取包含字符串"New"的数据行。_保留含有特定数据的行r

基于阿里云部署和搭建私人云笔记完整教程—leanote_阿里云建为知笔记私有-程序员宅基地

文章浏览阅读3.7k次,点赞5次,收藏9次。本篇教程主要是带大家在自己的Linux服务器上搭建属于自己的开源云笔记系统。leanote官网 https://leanote.com/ 【蚂蚁笔记 = 笔记 + 博客 + 协作 + 私有云】私有部署:阿里云/腾讯云/华为云(随意选一个云计算平台进行部署)特点:Leanote云笔记产品包括: Leanote Web & Server(即本仓库), 桌面客户端, IOS, android. 4端全部开源!如果想试用我们的产品,欢迎在 https://leanote.com 上注册, Le._阿里云建为知笔记私有

RxAndroid jar包引入异常导致java.lang.NoClassDefFoundError: Failed resolution of: Lio/reactivex/android/sche-程序员宅基地

文章浏览阅读1.8k次。前言:项目引用第三方sdk,运行报错:java.lang.NoClassDefFoundError: Failed resolution of: Lio/reactivex/android/schedulers/AndroidSchedulers;原因:没有引入RxAndroid。解决:Build.gradle中增加implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'但是:项目服务器不是用gradle 编译的,而是mk。所以要找jar.._java.lang.noclassdeffounderror: failed resolution of: landroidx/activity/res

推荐文章

热门文章

相关标签