嵌入式学习书籍推荐[通俗易懂]

嵌入式学习书籍推荐[通俗易懂]嵌入式学习书籍推荐转自:http://www.51hei.com/bbs/dpj-26458-1.html如有侵权,请联系我,我将立即删除。从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。为什么选择学习嵌入式?嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领…

大家好,又见面了,我是你们的朋友全栈君。

嵌入式学习书籍推荐

转自:http://www.51hei.com/bbs/dpj-26458-1.html

如有侵权,请联系我,我将立即删除。

从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。

为什么选择学习嵌入式?

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

嵌入式行业平均薪资分布

嵌入式学习书籍推荐[通俗易懂]

工欲善其事,必先利其器,除了推荐的书籍外,也推荐一下我用的开发板,我学习用的是飞凌的OK6410,感觉算是入门不错的板子,刚刚看到他们官方微博貌似A8210ARM92416准备促销呢,有50元的京东购物卡送,想入手的可以关注下

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

 嵌入式学习书籍推荐[通俗易懂]

附上ARM学习路径图,希望对学习者能有所启发。

 

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

A)经典书籍推荐:

 嵌入式学习书籍推荐[通俗易懂]

B)经典学习视频推荐: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方面需要比较深入的学习。  

A)经典书籍推荐:   

 嵌入式学习书籍推荐[通俗易懂]

B)经典学习视频推荐:C语言入门

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环境高级编程

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)  嵌入式扫盲篇——十问嵌入式

2)ARM体系结构与Bootloader开发

3)嵌入式ARM Linux开发——ARM汇编

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. 网络设备驱动

硬件工程师的书籍(等等)

 嵌入式学习书籍推荐[通俗易懂]嵌入式学习书籍推荐[通俗易懂]

 

写在最后:随着时间的推移,科技的进步,有的书的版本可能有了很大的变化,记得结合实际去看,有条件的建议买纸质书,那种阅读感觉是电子书所代替不了的,当然,网上的电子版也很多,大家可以自行搜索下载。作为一个从事嵌入式软件开发的小白,我感觉,当你静下心来读完这些书的时候,你必定能在嵌入式领域站稳脚跟,愿诸君共勉。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132448.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月10日 下午7:36
下一篇 2022年6月10日 下午7:46


相关推荐

  • logcat — 基本用法

    logcat — 基本用法1.Log类是一个日志类,我们可以在代码中使用logcat打印出消息常见的日志记录方法有:v(String,String)–verbose显示全部信息d(String,String)–

    2022年7月4日
    32
  • Redis的配置、启动、操作和关闭

    Redis的配置、启动、操作和关闭Redis 的配置 启动 操作和关闭一 启动 Redis1 默认配置启动执行 redis server 命令 按照默认的 redis conf 配置文件中的配置启动 Redis 如下 因为默认配置无法自定义配置 所以该方式不会再生产环境中使用 2 运行配置启动在命令 redis server 后加上要修改的配置名和值 可以设置多对 没有设置的

    2026年3月19日
    1
  • 阿里云自助建站教程(阿里云新手指南)

    对于一个建站新手来讲,最重要的莫过于2件事1.时间效率2.性价比换句话讲,对于非专业选手,在整个建站过程,如何省时省力,用相对简单的方式,花更少的钱建好网站是关键。基于上述,给大家带来一版适合新手的建站指南,供大家参考。一、注册域名(域名就是人们常说的“网址”,好比一个网站的门牌号,不可或缺)_(域名注册)注意事项:1.域名具有唯一性,同…

    2022年4月13日
    47
  • bi报表开发工具_三大报表的勾稽关系图

    bi报表开发工具_三大报表的勾稽关系图为什么需要电子表格国内目前的同类产品中都有报表工具,这些工具大部分都有一个类似Excel的操作界面:单元格、快捷键、工具栏等典型设计工具要求。这些工具要么需要有专业的背景,或者专业的工程师提供支持,要么学习成本高,调整报表样式十分麻烦。作为报表开发人员而言,花费大量时间去学习一个新工具是一件非常苦恼的事情,我们能否直接把exce作为报表设计的工具呢?基于这个思路,诞生了我们的Spreadsheet…

    2022年10月19日
    4
  • pickle 模块

    pickle 模块持久性就是指保持对象 甚至在多次执行同一程序之间也保持对象 通过本文 您会对 Python 对象的各种持久性机制 从关系数据库到 Python 的 pickle 以及其它机制 有一个总体认识 另外 还会让您更深一步地了解 Python 的对象序列化能力 什么是持久性 持久性的基本思想很简单 假定有一个 Python 程序 它可能是一个管理日常待办事项的程序 您

    2026年3月17日
    1
  • anaconda与pycharm的关系、安装「建议收藏」

    anaconda与pycharm的关系、安装「建议收藏」一、anaconda和pycharm的关系anaconda和miniconda的介绍Anaconda:是一个打包的集合,它里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,就是把很多常用的不常用的库都给你装好了,并且在安装一个库时会询问是否安装与该库相关联的库,它将库之间的关系理的非常清楚,为用户提供极大的便利。Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种

    2022年8月25日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号