首页 > 图书中心 >图书详情

原子嵌入式Linux驱动开发详解

本书配有数十个项目例程和源代码,并配有丰富的教学视频内容

作者:左忠凯
定价:169
印次:1-2
ISBN:9787302613824
出版日期:2022.08.01
印刷日期:2022.12.20

嵌入式 Linux涉及的知识点很多,对初学者的基础要求高,在知识储备的广度和深度上都对学习者提出了很高 的要求。大多数转型嵌入式 Linux开发的朋友都是以前从事单片机开发工作的工程师,因此如何从单片机开发工 程师转型为嵌入式 Linux开发工程师,这个过程非常重要。 单片机 工 程 师 大 多 数 都 是 在 Windows环 境 下 工 作,使 用 集 成 IDE 编 写 并 编 译 代 码,然 后 在 IDE 上 通 过 DownLoad按钮一键下载代码到单片机中。至于集成IDE是怎么组织源文件,又是怎么编译的并不清楚。 本书就以单片机工程最熟悉的“裸机”开发为例,讲解如何在 Ubuntu下搭建开发环境,如何使用 VScode编写程 序,如何使用 make工具编译源码。通过这些操作,大家就可以对集成式IDE与开源开发环境有很清晰的认识。当 掌握了开发方式以后,剩下的就是通过大量的裸机案例来加深对I.MX6ULL 这颗芯片的认识,了解各个外设的应 用,为后面学习嵌入式Linux驱动开发打下坚实的基础。本书后半部分详细讲解了如何移植uboot、Linux内核、根文件 系统,最终在开发板上搭建出一个基础的嵌入式 Linux系统,后续的嵌入式 Linux驱动开发就在这个小系统上进行。 本书可作为广大从事嵌入式开发、MCU 开发、物联网应用开发等工程技术人员的学习和参考用书,也可作为高 等院校计算机、电子、自动化等专业嵌入式系统、微机接口、物联网、单片机等课程的教材。

more >

本书主要讲解嵌入式Linux中的驱动开发,也会涉及裸机开发的内容,相信大部分读者和作者经历一样,以前从事过单片机开发的工作,比如51或者STM32等。单片机开发很难接触到更高层次的系统方面的知识,用到的系统都很简单,比如μC/OS、FreeRTOS等,这些操作系统都使用一个Kernel,如果需要网络、文件系统、GUI等就需要开发者自行移植。而移植又是非常痛苦的一件事情,而且移植完成以后的稳定性也无法保证。即使移植成功,后续的开发工作也比较烦琐,因为不同的组件其API操作函数都不同,没有一个统一的标准,使用起来学习成本比较高。这时候一个功能完善的操作系统就显得尤为重要: 具有统一的标准,提供完善的多任务管理、存储管理、设备管理、文件管理和网络等。Linux就是这样一个系统,这样的系统还有很多,比如Windows、macOS、UNIX等。本书讲解Linux,而Linux开发可以分为底层驱动开发和应用开发,本书讲解的是Linux驱动开发,主要面向使用过STM32的开发者。平心而论,如果此前只会51单片机开发,笔者不建议直接上手Linux驱动开发,因为51单片机和Linux驱动开发的差异太大。笔者建议在学习嵌入式Linux驱动开发之前一定要学习STM32这种CortexM内核的MCU,因为STM32这样的MCU其内部资源和可以运行Linux的CPU差不多,如果会STM32,则上手Linux驱动开发就会容易很多。笔者就是此前做了4年STM32开发工作,然后转做Linux驱动开发,整个过程比较顺畅。 鉴于当前STM32非常火爆,学习者众多,如何帮助STM32学习者顺利地转入Linux驱动开发有如下几点需要注意。 1) 选取合适的CPU 理论上来讲,如果ST公司有可以运行的Linux的芯片那再好不过了,因为大家对STM32很熟悉,但是在编写本书时,ST公司尚没有可以运行Linux的CPU。Linux驱动开发入门的CPU一定不能复杂,比如像三星的Exynos 4412、Exynos 4418等,这些CPU性能很强大,带有GPU,支持硬件视频解码,可以运行Android。但是正是它们的性能过于强大,功能过于繁杂,所以不适合Linux驱动开发入门。一款外设和STM32H7这样的MCU相似的CPU就非常适合Linux入门,三星的S3C2440就非常合适,但是S3C2440早已停产了,学了以后工作上又用不到,又得学习其他的CPU,有点浪费时间。笔者花了不少时间终于找到了一款合适的CPU,那就是NXP的I.MX6ULL。I.MX6ULL就是一款可以跑Linux的STM32,外设功能和STM32相似,如果此前学习过STM32,那么会非常容易上手I.MX6ULL。而且I.MX6ULL可以正常出货,这是一款工业级的CPU,是三星S3C2440、S3C6410产品替代的绝佳之选,学习完I.MX6ULL以后,在工作中就可以直接使用了。本书选取正点原子的I.MX6UALPHA开发板,其他厂商的I.MX6ULL开发板也可以参考本书。 2) 开发环境讲解 STM32的开发都是在Windows系统下进行的,使用MDK或者IAR这样的集成IDE,但是嵌入式Linux驱动开发需要的主机是Linux平台的,也就是必须先在自己的计算机上安装Linux系统。Linux系统发行版有Ubuntu、CentOS、Fdeora、Debian等。本书使用Ubuntu操作系统。本书假设大家此前从来没有接触过Ubuntu操作系统,因此会有详细的Ubuntu操作系统安装、使用教程的讲解,帮助大家熟悉开发环境。 3) 合理的裸机例程 学习嵌入式Linux驱动开发建议大家先学习裸机开发(如果学习过STM32,则可以跳过裸机学习),Linux驱动开发非常烦琐。要想进行Linux驱动开发,必须要先移植uboot,然后移植Linux系统和根文件系统到开发平台上。而uboot又是一个超大的裸机综合例程,因此如果没有学习过裸机例程,那么uboot移植会有困难,尤其是要修改uboot代码时。STM32基本都是裸机开发,在集成IDE下编写代码,可以使用ST公司提供的库。但是在Ubuntu下编写I.MX6ULL裸机例程就没有这么方便了,没有MDK和IAR这样的IDE,所有的一切都需要自己搭建,本书提供的视频会有详细的讲解。本书还提供了数十个裸机例程,由浅入深,涵盖了大部分常用的功能,比如I/O输入输出、中断、串口、定时器、DDR、LCD、I2C等。学习完裸机例程以后就对I.MX6ULL这颗CPU非常熟悉了,再去学习Linux驱动开发就很轻松了。 4) uboot、Linux和根文件系统移植 学习完裸机例程以后就是Linux驱动开发了,但是在进行Linux驱动开发之前要先在使用的开发板平台上移植好uboot、Linux和根文件系统。这是Linux驱动开发的第一个拦路虎,因此本书和相应的视频会着重讲解uboot/Linux和根文件系统的移植。 5) 嵌入式Linux驱动开发 当我们把uboot、Linux内核和根文件系统都在开发板上移植好以后,就可以开始Linux驱动开发了。Linux驱动有3大类: 字符设备驱动、块设备驱动和网络设备驱动。对于这3大类内容,本书都有详细的讲解,并且配有数十个相应的教学例程,从最简单的点灯到最后的网络设备驱动。 本书一共分三篇,每篇对应一个不同的阶段。 第一篇: Ubuntu操作系统入门(为节省篇幅,扫描封底“本书资源”二维码获取) 本篇主要讲解Ubuntu操作系统的使用,不涉及任何嵌入式方面的知识,全部是在计算机上完成的,只要安装好Ubuntu操作系统即可。 第二篇: 裸机开发(第1~26章) 从本篇正式开始开发板的学习,本篇通过数十个裸机例程来帮助大家了解I.MX6ULL这颗CPU,为以后的Linux驱动开发做准备。通过本篇,大家可以掌握在Ubuntu下进行ARM开发的方法。 第三篇: 系统移植(第27~36章) 本篇讲解如何将uboot、Linux和根文件系统移植到我们的开发板上,为后面的Linux驱动开发做准备。 通过上面三篇的学习,大家能掌握嵌入式Linux驱动的开发流程,本书旨在引导大家入门Linux驱动开发,更加深入地研究就需要大家在实践中不断地总结经验,并与理论结合,祝愿大家学习顺利。 作者2022年8月

more >
扫描二维码
下载APP了解更多
图书分类全部图书
more >
  • 左忠凯,14年参加工作以来一直从事于嵌入式教育,以第一作者身份著有《FreeRTOS源码详解与应用开发》,参与编写了正点原子大量的手把手教你STM32系列书籍,比如《精通STM32F4库函数版》、《STM32F7原理与应用》等。同时录制了大量的STM32相关教学视频,广受好评。18年开始负责公司Linux教育平台的研发,编写了1800多页的Linux驱动开发教程,录制了200多讲Linux开发视频,负责的I.MX6ULL开发板自从发布至今,销量一直处于淘宝第一,Linux驱动开发相关视频在各大平台的点击量超过30万次。
  • 全面解析基于ARM内核的嵌入式Linux驱动开发,帮助单片机开发者顺利过渡到嵌入式Linux驱动开发。
more >
  • 第一篇Ubuntu操作系统入门

    (扫描封底“本书资源”二维码获取)

    第二篇裸机开发

    第1章开发环境搭建

    1.1Ubuntu和Windows文件互传

    1.2Ubuntu下NFS和SSH服务开启

    1.2.1NFS服务开启

    1.2.2SSH服务开启

    1.3Ubuntu交叉编译工具链安装

    1.3.1交叉编译器安装

    1.3.2安装相关库

    1.3.3交叉编译器验证

    1.4Visual Studio Code软件的安装和使用

    1.4.1Visual Studio Code软件的安装

    1.4.2Visual Studio Code插件的安装

    1.4.3Visual Studio Code新建工程

    1.5CH340串口驱动安装

    1.6MobaXterm软件安装和使用

    1.6.1MobaXterm软件安装

    1.6.2MobaXterm软件使用

    第2章CortexA7 MPCore架构

    2.1CortexA7 MPCore简介

    2.2CortexA处理器运行模型

    2.3CortexA寄存器组

    2.3.1通用寄存器

    2.3.2程序状态寄存器

    第3章ARM汇编基础

    3.1GNU汇编语法

    3.2CortexA7常用汇编指令

    3.2.1处理器内部数据传输指令

    3.2.2存储器访问指令

    3.2.3压栈和出栈指令

    3.2.4跳转指令

    3.2.5算术运算指令

    3.2.6逻辑运算指令

    ...

精彩书评more >

标题

评论

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘