嵌入式培训学校分享:嵌入式学习路线推荐

更新时间: 2018-11-27 15:19:39来源: 武汉嵌入式培训浏览量:5195

    知识要求:

    看懂电路图
    看懂芯片手册
    有编写,移植驱动的能力
    懂内核的实现机制
    懂C语言,C++, JAVA等

    嵌入式 linux 学习路线


    嵌入式 linux 系统里含有bootloader、内核、驱动程序、根文件系统、应用程序(C/C++、Android)这5大块。总结嵌入式Linux+Android系统包含以下部分内容:

    ARM
    Bootloader
    Linux内核
    驱动程序
    根文件系统
    Android Framework
    使用C/C++编写的应用程序
    Android APP

    1. ARM
    学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册。这里推荐一些书:
    《微机原理》,可以理解一个计算机的组成原理
    《数字电路》,掌握一些逻辑运算,理解各种门电路的原理
    《ARM体系结构与编程》,对ARM的运行原理解释的很到位
    我相信看完这些书对ARM和硬件知识的掌握足够了,对于初学者只想浅尝辄止的了解,我推荐之前的一个chat《一小时教你学会 ARM 架构》。
    2. Bootloader
    bootloader有很多种,vivi、u-boot等等,常用的是u-boot。 u-boot功能强大、源码比较多,对于编程经验不丰富、阅读代码经验不丰富的人,一开始可能会觉得难以掌握。但是,u-boot的主要功能就是:启动内核。它涉及:读取内核到内存、设置启动参数、启动内核。按照这个主线,我们尝试自己从零编写一个bootloader,这个程序相对简单,可以让我们快速理解u-boot主要功能的实现。相关内容有:

    u-boot分析之编译体验
    u-boot分析之Makefile结构分析
    u-boot分析之源码第1阶段
    u-boot分析之源码第2阶段
    u-boot分析之u-boot命令实现
    u-boot分析_uboot启动内核
    3. Linux内核

    内核在工作中的作用可以说是潜移默化的,虽然看起来没有直接性的工作项目,但是走向架构师的必经之路。

    Linux总线,设备,驱动模型的探究
    Linux设备树的深入理解
    Linux的启动流程
    Linux设备和驱动的相遇
    动手定制一个开发板

    推荐《linux内核设计与实现》。
    4. 驱动程序
    驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作
    有了ARM的知识和阅读数据手册电路图的能力,再加上Linux内核的运行原理,基本上写驱动就是API调用的体力活了。这里推荐宋宝华老师的《linux设备驱动开发详解》。后续关于驱动的内容暂定如下:

    LCD驱动程序
    触摸屏驱动程序
    USB驱动程序
    NAND FLASH驱动程序
    NOR FLASH驱动程序
    网卡驱动程序
    声卡驱动程序

    5. 根文件系统
    在开发应用程序时,也需要搭建文件系统,把各种库、配置文件放进去; 在发布产品时,你还需要修改配置文件,使得产品可以自动运行程序; 甚至你想实现插上U盘后自动启动某个程序,这也要要修改配置文件; 这一切,都需要你理解根文件系统的构成,理解内核启动后是根据什么配置文件来启动哪些应用程序。根文件系统相对比较简单,可以根据以下路线学习:

    Linux根文件系统目录结构
    移植Busybox
    init进程介绍及用户程序启动过程
    使用glibc库
    制作/使用文件系统映象文件

    嵌入式应用开发
    C语言编程基础
    嵌入式开发基础(Linux、Shell命令、VI编辑器、GCC、Makefile、交叉开发环境构建)
    嵌入式Linux系统编程(shell编程、文件编程、串口编程、进程编程、线程编程、网络编程)
    嵌入式底层系统开发
    ARM体系结构(Arm体系|指令、Thumb指令、汇编程序设计、裸机程序开发)
    Linux内核移植(bootloader、内核配置、文件系统)
    驱动程序开发(驱动模型架构、字符设备驱动、块设备驱动、网络驱动)
    嵌入式图形应用开发
    C++语言编程基础
    QT编程开发(Qt开发基础|布局与控件|绘图|事件|网络通讯|数据库|移植)

免费预约试听课