返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • [正版]原子嵌入式Linux驱动开发详解 左忠凯 嵌入式Linux操作系统
  • 配有丰富的教学视频内容
    • 作者: 左忠凯著
    • 出版社: 清华大学出版社
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    友一个文化制品专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品参数
    • 作者: 左忠凯著
    • 出版社:清华大学出版社
    • 开本:16开
    • ISBN:9782671909043
    • 版权提供:清华大学出版社

            铺公告

      为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。

    温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货)。

      关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。

     

     

     书名:  原子嵌入式Linux驱动开发详解
     出版社:  清华大学出版社
     出版日期  2022
     ISBN号:  9787302613824

    嵌入式 Linux涉及的知识点很多,对初学者的基础要求高,在知识储备的广度和深度上都对学习者提出了很高

    的要求。大多数转型嵌入式 Linux开发的朋友都是以前从事单片机开发工作的工程师,因此如何从单片机开发工

    程师转型为嵌入式 Linux开发工程师,这个过程非常重要。

    单片机 工 程 师 大 多 数 都 是 在 Windows环 境 下 工 作,使 用 集 成 IDE 编 写 并 编 译 代 码,然 后 在 IDE 上 通 过

    DownLoad按钮一键下载代码到单片机中。至于集成IDE是怎么组织源文件,又是怎么编译的并不清楚。

    本书就以单片机工程最熟悉的“裸机”开发为例,讲解如何在 Ubuntu下搭建开发环境,如何使用 VScode编写程

    序,如何使用 make工具编译源码。通过这些操作,大家就可以对集成式IDE与开源开发环境有很清晰的认识。当

    掌握了开发方式以后,剩下的就是通过大量的裸机案例来加深对I.MX6ULL 这颗芯片的认识,了解各个外设的应

    用,为后面学习嵌入式Linux驱动开发打下坚实的基础。本书后半部分详细讲解了如何移植uboot、Linux内核、根文件

    系统,最终在开发板上搭建出一个基础的嵌入式 Linux系统,后续的嵌入式 Linux驱动开发就在这个小系统上进行。

    本书可作为广大从事嵌入式开发、MCU 开发、物联网应用开发等工程技术人员的学习和参考用书,也可作为高

    等院校计算机、电子、自动化等专业嵌入式系统、微机接口、物联网、单片机等课程的教材。

    左忠凯,14年参加工作以来一直从事于嵌入式教育,以第一作者身份著有《FreeRTOS源码详解与应用开发》,参与编写了正点原子大量的手把手教你STM32系列书籍,比如《精通STM32F4库函数版》、《STM32F7原理与应用》等。同时录制了大量的STM32相关教学视频,广受好评。18年开始负责公司Linux教育平台的研发,编写了1800多页的Linux驱动开发教程,录制了200多讲Linux开发视频,负责的I.MX6ULL开发板自从发布至今,销量一直处于淘宝第一,Linux驱动开发相关视频在各大平台的点击量超过30万次。

    全面解析基于ARM内核的嵌入式Linux驱动开发,帮助单片机开发者顺利过渡到嵌入式Linux驱动开发。

    第一篇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逻辑运算指令








    第4章汇编LED灯实验


    4.1I.MX6U GPIO详解


    4.1.1STM32 GPIO回顾


    4.1.2I.MX6ULL I/O命名


    4.1.3I.MX6ULL I/O复用


    4.1.4I.MX6ULL I/O配置


    4.1.5I.MX6ULL GPIO配置


    4.1.6I.MX6ULL GPIO时钟使能


    4.2硬件原理分析


    4.3实验程序编写


    4.4编译、下载和验证


    4.4.1编译代码


    4.4.2创建Makefile文件


    4.4.3代码烧写


    4.4.4代码验证


    第5章I.MX6U启动方式详解


    5.1启动方式选择


    5.1.1串行下载


    5.1.2内部BOOT模式


    5.2BOOT ROM初始化内容


    5.3启动设备


    5.4镜像烧写


    5.4.1IVT和Boot Data


    5.4.2DCD数据


    第6章C语言版LED灯实验


    6.1C语言版LED灯简介


    6.2硬件原理分析


    6.3实验程序编写


    6.3.1汇编部分实验程序编写


    6.3.2C语言部分实验程序编写


    6.4编译、下载和验证


    6.4.1编写Makefile


    6.4.2链接脚本


    6.4.3修改Makefile


    6.4.4下载和验证


    第7章模仿STM32驱动开发格式实验


    7.1模仿STM32寄存器定义


    7.1.1STM32寄存器定义简介


    7.1.2I.MX6ULL寄存器定义


    7.2硬件原理分析


    7.3实验程序编写


    7.4编译、下载和验证


    7.4.1编写Makefile和链接脚本


    7.4.2编译和下载


    第8章官方SDK移植实验


    8.1官方SDK移植简介


    8.2硬件原理分析


    8.3实验程序编写


    8.3.1SDK文件移植


    8.3.2创建cc.h文件


    8.3.3编写实验代码


    8.4编译、下载和验证


    8.4.1编写Makefile和链接脚本


    8.4.2编译和下载


    第9章BSP工程管理实验


    9.1BSP工程管理简介


    9.2硬件原理分析


    9.3实验程序编写


    9.3.1创建imx6ul.h文件


    9.3.2编写led驱动代码


    9.3.3编写时钟驱动代码


    9.3.4编写延时驱动代码


    9.3.5修改main.c文件


    9.4编译、下载和验证


    9.4.1编写Makefile和链接脚本


    9.4.2编译和下载


    第10章蜂鸣器实验


    10.1有源蜂鸣器简介


    10.2硬件原理分析


    10.3实验程序编写


    10.4编译、下载和验证


    10.4.1编写Makefile和链接脚本


    10.4.2编译和下载


    第11章按键输入实验


    11.1按键输入简介


    11.2硬件原理分析


    11.3实验程序编写


    11.4编译、下载和验证


    11.4.1编写Makefile和链接脚本


    11.4.2编译和下载


    第12章主频和时钟配置实验


    12.1I.MX6ULL时钟系统详解


    12.1.1系统时钟来源


    12.1.27路PLL时钟源


    12.1.3时钟树简介


    12.1.4内核时钟设置


    12.1.5PFD时钟设置


    12.1.6AHB、IPG和PERCLK根时钟设置


    12.2硬件原理分析


    12.3实验程序编写


    12.4编译、下载和验证


    12.4.1编写Makefile和链接脚本


    12.4.2编译和下载


    第13章GPIO中断实验


    13.1CortexA7中断系统详解


    13.1.1STM32中断系统回顾


    13.1.2CortexA7中断系统简介


    13.1.3GIC控制器简介


    13.1.4CP15协处理器


    13.1.5中断使能


    13.1.6中断优先级设置


    13.2硬件原理分析


    13.3实验程序编写


    13.3.1移植SDK包中断相关文件


    13.3.2重新编写start.s文件


    13.3.3通用中断驱动文件编写


    13.3.4修改GPIO驱动文件


    13.3.5按键中断驱动文件编写


    13.3.6编写main.c文件


    13.4编译、下载和验证


    13.4.1编写Makefile和链接脚本


    13.4.2编译和下载


    第14章EPIT定时器实验


    14.1EPIT定时器简介


    14.2硬件原理分析


    14.3实验程序编写


    14.4编译、下载和验证


    14.4.1编写Makefile和链接脚本


    14.4.2编译和下载


    第15章定时器按键消抖实验


    15.1定时器按键消抖简介


    15.2硬件原理分析


    15.3实验程序编写


    15.4编译、下载和验证


    15.4.1编写Makefile和链接脚本


    15.4.2编译和下载


    第16章高精度延时实验


    16.1高精度延时简介


    16.1.1GPT定时器简介


    16.1.2定时器实现高精度延时原理


    16.2硬件原理分析


    16.3实验程序编写


    16.4编译、下载和验证


    16.4.1编写Makefile和链接脚本


    16.4.2编译和下载


    第17章UART串口通信实验


    17.1I.MX6ULL串口通信简介


    17.1.1UART简介


    17.1.2I.MX6ULL UART简介


    17.2硬件原理分析


    17.3实验程序编写


    17.4编译、下载和验证


    17.4.1编写Makefile和链接脚本


    17.4.2编译和下载


    第18章串口格式化函数移植实验


    18.1串口格式化函数移植简介


    18.2硬件原理分析


    18.3实验程序编写


    18.4编译、下载和验证


    18.4.1编写Makefile和链接脚本


    18.4.2编译和下载


    第19章DDR3实验


    19.1DDR3内存简介


    19.1.1何为RAM和ROM


    19.1.2SRAM简介


    19.1.3SDRAM简介


    19.1.4DDR简介


    19.2DDR3关键时间参数


    19.3I.MX6ULL MMDC控制器简介


    19.3.1MMDC控制器


    19.3.2MMDC控制器信号引脚


    19.3.3MMDC控制器时钟源


    19.4ALPHA开发板DDR3L原理图


    19.5DDR3L初始化与测试


    19.5.1ddr_stress_tester简介


    19.5.2DDR3L驱动配置


    19.5.3DDR3L校准


    19.5.4DDR3L超频测试


    19.5.5DDR3L驱动总结


    第20章RGB LCD显示实验


    20.1LCD和eLCDIF简介


    20.1.1LCD简介


    20.1.2eLCDIF接口简介


    20.2硬件原理分析


    20.3实验程序编写


    20.4编译、下载和验证


    20.4.1编写Makefile和链接脚本


    20.4.2编译和下载


    第21章RTC实时时钟实验


    21.1I.MX6ULL RTC实时时钟简介


    21.2硬件原理分析


    21.3实验程序编写


    21.3.1修改文件MCIMX6Y2.h


    21.3.2编写实验程序


    21.4编译、下载和验证


    21.4.1编写Makefile和链接脚本


    21.4.2编译和下载


    第22章I2C实验


    22.1I2C和AP3216C简介


    22.1.1I2C简介


    22.1.2I.MX6ULL I2C简介


    22.1.3AP3216C简介


    22.2硬件原理分析


    22.3实验程序编写


    22.4编译、下载和验证


    22.4.1编写Makefile和链接脚本


    22.4.2编译和下载


    第23章SPI实验


    23.1SPI & ICM20608简介


    23.1.1SPI简介


    23.1.2I.MX6ULL ECSPI简介


    23.1.3ICM20608简介


    23.2硬件原理分析


    23.3实验程序编写


    23.4编译、下载和验证


    23.4.1编写Makefile和链接脚本


    23.4.2编译和下载


    第24章多点电容触摸屏实验


    24.1多点电容触摸屏简介


    24.2硬件原理分析


    24.3实验程序编写


    24.4编译、下载和验证


    24.4.1编写Makefile和链接脚本


    24.4.2编译和下载


    第25章LCD背光调节实验


    25.1LCD背光调节简介


    25.2硬件原理分析


    25.3实验程序编写


    25.4编译、下载和验证


    25.4.1编写Makefile和链接脚本


    25.4.2编译和下载


    第26章ADC实验


    26.1ADC简介


    26.1.1什么是ADC


    26.1.2I.MX6ULL ADC简介


    26.2硬件原理分析


    26.3实验程序编写


    26.4编译、下载和验证


    26.4.1编写Makefile和链接脚本


    26.4.2编译和下载


    第三篇系统移植


    第27章UBoot使用实验


    27.1UBoot简介


    27.2UBoot初次编译


    27.3UBoot烧写与启动


    27.4UBoot命令使用


    27.4.1信息查询命令


    27.4.2环境变量操作命令


    27.4.3内存操作命令


    27.4.4网络操作命令


    27.4.5EMMC和SD卡操作命令


    27.4.6FAT格式文件系统操作命令


    27.4.7EXT格式文件系统操作命令


    27.4.8NAND操作命令


    27.4.9BOOT操作命令


    27.4.10其他常用命令


    第28章UBoot顶层Makefile详解


    28.1UBoot工程目录分析


    28.2VSCode工程创建


    28.3UBoot顶层Makefile分析


    28.3.1版本号


    28.3.2MAKEFLAGS变量


    28.3.3命令输出


    28.3.4静默输出


    28.3.5设置编译结果输出目录


    28.3.6代码检查


    28.3.7模块编译


    28.3.8获取主机架构和系统


    28.3.9设置目标架构、交叉编译器和配置文件


    28.3.10调用scripts/Kbuild.include


    28.3.11交叉编译工具变量设置


    28.3.12导出其他变量


    28.3.13make xxx_defconfig过程


    28.3.14Makefile.build脚本分析


    28.3.15make过程


    第29章UBoot启动流程详解


    29.1链接脚本uboot.lds详解


    29.2UBoot启动流程解析


    29.2.1reset函数源码详解


    29.2.2lowlevel_init函数详解


    29.2.3s_init函数详解


    29.2.4_main函数详解


    29.2.5board_init_f函数详解


    29.2.6relocate_code函数详解


    29.2.7relocate_vectors函数详解


    29.2.8board_init_r函数详解


    29.2.9run_main_loop函数详解


    29.2.10cli_loop函数详解


    29.2.11cmd_process函数详解


    29.3bootz启动Linux内核过程


    29.3.1images全局变量


    29.3.2do_bootz函数


    29.3.3bootz_start函数


    29.3.4do_bootm_states函数


    29.3.5bootm_os_get_boot_func函数


    29.3.6do_bootm_linux函数


    第30章UBoot移植


    30.1NXP官方开发板uboot编译测试


    30.1.1查找NXP官方的开发板默认配置文件


    30.1.2编译NXP官方开发板对应的uboot


    30.1.3烧写验证与驱动测试


    30.2在UBoot中添加自己的开发板


    30.2.1添加开发板默认配置文件


    30.2.2添加开发板对应的头文件


    30.2.3添加开发板对应的板级文件夹


    30.2.4修改UBoot图形界面配置文件


    30.2.5使用新添加的板子配置编译uboot


    30.2.6LCD驱动修改


    30.2.7网络驱动修改


    30.2.8其他需要修改的地方


    30.3bootcmd和bootargs环境变量


    30.3.1环境变量bootcmd


    30.3.2环境变量bootargs


    30.4uboot启动Linux测试


    30.4.1从EMMC启动Linux系统


    30.4.2从网络启动Linux系统


    第31章UBoot图形化配置及其原理


    31.1UBoot图形化配置体验


    31.2menuconfig图形化配置原理


    31.2.1make menuconfig过程分析


    31.2.2Kconfig语法简介


    31.3添加自定义菜单


    第32章Linux内核顶层Makefile详解


    32.1Linux内核获取


    32.2Linux内核初次编译


    32.3Linux工程目录分析


    32.4VSCode工程创建


    32.5顶层Makefile详解


    32.5.1make xxx_defconfig过程


    32.5.2Makefile.build脚本分析


    32.5.3make过程


    32.5.4builtin.o文件编译生成过程


    32.5.5make zImage过程


    第33章Linux内核启动流程


    33.1链接脚本vmlinux.lds


    33.2Linux内核启动流程分析


    33.2.1Linux内核入口stext


    33.2.2__mmap_switched函数


    33.2.3start_kernel函数


    33.2.4rest_init函数


    33.2.5init进程


    第34章Linux内核移植


    34.1创建VSCode工程


    34.2NXP官方开发板Linux内核编译


    34.2.1修改顶层Makefile


    34.2.2配置并编译Linux内核


    34.2.3Linux内核启动测试


    34.2.4根文件系统缺失错误


    34.3在Linux中添加自己的开发板


    34.3.1添加开发板默认配置文件


    34.3.2添加开发板对应的设备树文件


    34.3.3编译测试


    34.4CPU主频和网络驱动修改


    34.4.1CPU主频修改


    34.4.2使能8线EMMC驱动


    34.4.3修改网络驱动


    34.4.4保存修改后的图形化配置文件


    第35章根文件系统构建


    35.1根文件系统简介


    35.2BusyBox构建根文件系统


    35.2.1BusyBox简介


    35.2.2编译BusyBox构建根文件系统


    35.2.3向根文件系统添加lib库


    35.2.4创建其他文件夹


    35.3根文件系统初步测试


    35.4完善根文件系统


    35.4.1创建/etc/init.d/rcS文件


    35.4.2创建/etc/fstab文件


    35.4.3创建/etc/inittab文件


    35.5根文件系统其他功能测试


    35.5.1软件运行测试


    35.5.2中文字符测试


    35.5.3开机自启动测试


    35.5.4外网连接测试


    第36章系统烧写


    36.1MfgTool工具简介


    36.2MfgTool工作原理简介


    36.2.1烧写方式


    36.2.2系统烧写原理


    36.3烧写NXP官方系统


    36.4烧写自制的系统


    36.4.1系统烧写


    36.4.2网络开机自启动设置


    36.5改造自己的烧写工具


    36.5.1改造MfgTool


    36.5.2烧写测试


    36.5.3解决Linux内核启动失败

    本书主要讲解嵌入式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和根文件系统的移植。


    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购