【原创】-- linux驱动开发--【持续整理】
2015-03-03 16:23
246 查看
一、写在前面
合格的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
见博文/article/5738341.html
3、下载方式分析
使用烧写好安装启动程序的SD卡,(1)设为SD卡启动,将SD卡中uboot烧写到nandflash
(2)设为nandflash启动,将uboot通过usb下载到nandflash
使用tftp下载内核 或文件系统
使用nfs挂载根文件系统
4、下载程序至开发板
minicom安装及使用教程,见博文/article/5738336.html中关于minicom安装配置的部分
linux下利用dnw进行USB下载,见博文 /article/5738336.html
tftp安装配置,下载文件(一般是内核和文件系统),见博文/article/5738339.html
nfs安装配置,挂在根文件系统,见博文/article/5738340.html
三、概述
1、操作系统基础
2、相关数据结构:内核链表
3、系统结构:软硬件系统与驱动的关系
4、mmu
5、GPIO,见博文/article/5738347.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、网络设备驱动
合格的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
见博文/article/5738341.html
3、下载方式分析
使用烧写好安装启动程序的SD卡,(1)设为SD卡启动,将SD卡中uboot烧写到nandflash
(2)设为nandflash启动,将uboot通过usb下载到nandflash
使用tftp下载内核 或文件系统
使用nfs挂载根文件系统
4、下载程序至开发板
minicom安装及使用教程,见博文/article/5738336.html中关于minicom安装配置的部分
linux下利用dnw进行USB下载,见博文 /article/5738336.html
tftp安装配置,下载文件(一般是内核和文件系统),见博文/article/5738339.html
nfs安装配置,挂在根文件系统,见博文/article/5738340.html
三、概述
1、操作系统基础
2、相关数据结构:内核链表
3、系统结构:软硬件系统与驱动的关系
4、mmu
5、GPIO,见博文/article/5738347.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、网络设备驱动
相关文章推荐
- 嵌入式linux驱动开发【独家+原创视频教学】
- vs2013+WDK8.1+WinDbg调试驱动开发环境配置(多帖子整理,水原创)
- Linux 驱动开发错误整理
- 【原创】-- linux 常见操作--【持续整理】
- vs2013+WDK8.1+WinDbg调试驱动开发环境配置(多帖子整理,水原创)
- [置顶] 整理--Linux字符设备驱动开发基础
- linux 驱动开发第三方学习框架资料整理
- Linux驱动开发学习的一些必要步骤
- Linux的驱动开发包出世了
- Linux下PCI设备驱动程序开发 --- linux 驱动框架(二)
- Linux驱动开发学习的一些必要步骤
- linux内核驱动开发笔试题
- 收集整理的Linux下的小技巧(四) - 在Ubuntu创建自己的开发环境
- Linux下的设备驱动简介——原创
- Linux平台下的JNI开发[88250原创]
- 【Vegas原创】在域中开发web parts札记(持续更新中...Last Update:08-02-27)
- linux设备驱动开发工具光盘第一版推出
- [原创]什么是测试驱动开发?
- linux 驱动开发 Invalid module format 错误解决方法
- Linux下的硬件驱动——USB设备(下)(驱动开发部分)