Linux驱动程序开发(Driver)
文章平均质量分 86
elvinsys
实验代码库在:github.com/elvinsys
请多多指教!
展开
-
3-02 U-Boot命令
1. 编译U-Boot 1.1 把相关代码文件夹里面的uboot.tar拷进Linux进行解压 1.2 配置U-Boot的顶层Makefile,找到目标开发板config,参考UBoot操作手册。 /210 找到TQ210_config :....... 回到终端,输入make TQ210_config 1.3 编译U-Boot(原创 2016-10-11 20:25:22 · 275 阅读 · 0 评论 -
3-11 LED驱动程序设计
(本节笔记的实验代码,在这里)一. 字符设备控制理论1. 概述 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力,例如设置波特率等。 在用户空间中,使用ioctl系统调用控制设备,原型为:int ioctl(int fd, unsigned longcmd, ...)fd:要控制的设备文件描述符。cmd:发送给设备的控制命令。..原创 2016-10-12 21:12:27 · 629 阅读 · 0 评论 -
3-10 字符型设备驱动模型
一. 使用字符设备驱动程序1. 编译和安装驱动程序模块 1.1 将驱动模块源码memdev.c复制到Linux系统中,编写Makefile,编译成内核模块memdev.ko并拷贝到开发板的NFS的rootfs中。 2.2 把memdev.ko加载(insmod)到开发板的Linux系统内核中。2. 创建设备文件 通过字符设备文件,应用程序可以原创 2016-10-12 20:55:20 · 435 阅读 · 0 评论 -
3-09 Linux驱动初探
一. 驱动开发概述1. 驱动分类 1.1常规分类法 1.1.1字符设备 字符设备是一种一字节为最小访问单位的设备,字符驱动负责驱动字符设备,系统按照操作文件的方式来对字符设备进行访问,这样的驱动通常支持open,close,read、和write系统调用。例如:串口,LED,按键。 1.1.2块设备 在大部分原创 2016-10-12 20:29:11 · 417 阅读 · 0 评论 -
3-08 Linux系统调用
(本节笔记的实验代码,在这里)1. 系统调用(sys_call)的作用与介绍 系统调用并不是由C库或其他库中实现的,用户空间的应用程序用到的系统调用函数sys_call的实现来源于内核空间中。2. 系统调用工作流程 从用户空间调用(read)时,将执行SWI指令,Linux系统从用户空间切换到内核空间,在切换前,会把read函数要执行的系统调用所原创 2016-10-12 20:25:05 · 359 阅读 · 0 评论 -
3-07 Linux内核链表深度分析
1.普通链表与Linux内核链表的对比 链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。 链表分为单向节点、双向链表、循环链表和双向循环链表,Linux内核链表属于双向循环链表。原创 2016-10-12 19:35:11 · 332 阅读 · 0 评论 -
3-06 Linux内核子系统
一. Linux内存管理子系统1. 内存管理模型(Memory Management) 内存管理子系统主要作用为: (实现代码不要求掌握) 一,完成虚拟地址与物理地址的映射; 二,进行物理内存的分配2. 虚拟地址与物理地址的映射 2.1 虚拟地址空间分布 在Linux系统中用到的都原创 2016-10-12 19:33:03 · 342 阅读 · 0 评论 -
3-04 嵌入式Linux根文件系统制作与挂载
1. 建立根文件系统目录与文件 1.1 创建目录 #mkdir rootfs //根文件系统目录名可随便取,一般为rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/lib usr/sbin /lib/modules原创 2016-10-11 20:39:40 · 301 阅读 · 0 评论 -
3-03 嵌入式Linux内核制作
一. Linux内核简介1. 系统架构 1.1 Linux系统架构 Linux系统由用户空间和内核空间两部分构成,用户空间包括用户应用程序和C库,而内核空间包含了系统调用接口、狭义上的内核以及体系结构相关代码。 1.2 Linux内核架构 现代CPU通常实现了不同的工作模式,如ARM实现7种工作模式(usr、fiq、irq原创 2016-10-11 20:36:57 · 449 阅读 · 0 评论 -
3-05 嵌入式Linux内核模块开发
一. 内核模块基础1. 基本概念 Linux内核的整体结构非常庞大,使用组件的方法分为两种,一是把组件编译进内核文件(zImage或uImage),但会导致占用内存过多;二是把需要用到的内核组件在需要用到的时候通过动态的方式加载进内核。 内核模块本身并不被编译进内核文件,可以根据需求,在内核运行期间动态地安装或卸载,因此,可以更加有效的节省内存空间。2. 安装于卸原创 2016-10-11 20:44:29 · 295 阅读 · 0 评论