• 【原创】-- linux驱动开发--【持续整理】


    一、写在前面

    合格的linux驱动工程师需要满足下面的条件,本文的目标就是用最简练的语言把这些条件讲清楚:

    1、有一定的硬件基础,懂得SRAM,Flash,SDRAM,磁盘的读写方式,了解UART,IIC,USB等设备接口,了解轮询,中断,DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。

    2、有一定的C语言基础,能够熟练使用结构体,指针,函数指针,以及内存的动态申请和释放

    3、有一定的linux你内核基础,内核部分难度较大,至少应了解驱动与内核接口。

    4、有一定多任务并发和同步控制基础,在驱动中会使用很多自旋锁,互斥,信号量,等待队列等并发与同步控制机制。

    二、准备工作

    1、开发环境

      Ubuntu14.04LTS(虚拟机不方便,直接安装Ubuntu),OK6410开发板(虽然有点旧)

          串口线:通过minicom通过串口将数据显示

      USB连接线:通过dnw下载程序

      电源线

    2、编译 uboot kernel rootfs

      见博文http://www.cnblogs.com/apolloenterprise/p/4351408.html

    3、下载方式分析

      使用烧写好安装启动程序的SD卡,(1)设为SD卡启动,将SD卡中uboot烧写到nandflash  

                      (2)设为nandflash启动,将uboot通过usb下载到nandflash

      使用tftp下载内核 或文件系统

      使用nfs挂载根文件系统

    4、下载程序至开发板

          minicom安装及使用教程,见博文http://www.cnblogs.com/apolloenterprise/p/4320422.html中关于minicom安装配置的部分

      linux下利用dnw进行USB下载,见博文 http://www.cnblogs.com/apolloenterprise/p/4320422.html

      tftp安装配置,下载文件(一般是内核和文件系统),见博文http://www.cnblogs.com/apolloenterprise/p/4342094.html

      nfs安装配置,挂在根文件系统,见博文http://www.cnblogs.com/apolloenterprise/p/4342254.html

    三、概述

    1、操作系统基础

    2、相关数据结构:内核链表

    3、系统结构:软硬件系统与驱动的关系

    4、mmu

    5、GPIO,见博文http://www.cnblogs.com/apolloenterprise/p/4579515.html

    四、linux内核分析

    1、五大支柱

    2、内核源代码目录结构

    3、内核组成部分

      进程调度,内存管理,虚拟文件系统,网络接口,进程通信

    4、内核编译及加载

          编译:多种编译方式分析

      makefile》》》

    5、内核引导

    6、linux下C编程

    五、设备驱动基础

    1、内核模块

    2、文件系统与设备文件系统

    3、并发控制

    4、阻塞与非阻塞I/O

    5、异步通知与异步I/O

    6、中断与时钟

    7、内存与I/O访问

    8、应用:android 

    六、设备驱动实例

    1、字符设备驱动

    2、块设备驱动

    3、网络设备驱动

      

  • 相关阅读:
    二十一、Mysql之GTID
    二十、Mysql的过滤复制
    十九、Mysql的半同步复制
    十八、Mysql之延时从库
    十七、Mysql的主从(三)--主从故障监控分析
    抖音爬虫
    python 操作手机
    python sheet写入数据
    pandas用法大全
    caog
  • 原文地址:https://www.cnblogs.com/apolloenterprise/p/4309397.html
Copyright © 2020-2023  润新知