摘要: <概述> Linux启动大致分为一下几个步骤,详细的启动步骤在<启动分析>中详解。 <概述> Linux启动大致分为一下几个步骤,详细的启动步骤在<启动分析>中详解。 1:首先bios加电自检,初始化(这个过程会检测相关硬件(cpu,内存,显卡,硬盘等)) 1:首先bios加电自检,初始化(这个过程 阅读全文
posted @ 2018-03-17 15:50 流浪的Coder 阅读(3243) 评论(0) 推荐(0) 编辑
摘要: <什么是Linux输入设备> ➤简介 Linux输入设备总类繁杂,常见的包括有按键、键盘、触摸屏、鼠标、摇杆等等,他们本身就是字符设备,而linux内核将这些设备的共同性抽象出来,简化驱动开发建立了一个input子系统。子系统共分为三层,如图1所示。 图1 input输入子系统 ➣驱动层 驱动层和硬 阅读全文
posted @ 2018-03-17 15:34 流浪的Coder 阅读(3950) 评论(0) 推荐(0) 编辑
摘要: <hash表的特性> Hash 表是使用 O(1) 时间进行数据的插入删除和查找,但是 hash 表不保证表中数据的有序性,这样在 hash 表中查找最大数据或者最小数据的时间是 O(N) 。 <寻址和 hash 函数> 理想状态下 hash 足够大,每一数据保存在一个 hash 存储单元内,这样对 阅读全文
posted @ 2018-03-17 15:32 流浪的Coder 阅读(23693) 评论(0) 推荐(0) 编辑
摘要: ➤背景 一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分 用户空间和内核空间,大小分别为0~3G,3~4G。用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不 阅读全文
posted @ 2018-03-17 15:30 流浪的Coder 阅读(35942) 评论(1) 推荐(5) 编辑
摘要: ➤字节顺序有“大端模式” 和 “小端模式” 两种 ➣字节顺序只是对内置数据类型而言,例如对于一整型(int,int 是内置数据类型)数,比如 0x123456 大端模式: 高地址 >低地址 0x56 | 0x34 | 0x12 小端模式: 高地址 >低地址 0x12 | 0x34 | 0x56 但对 阅读全文
posted @ 2018-03-17 15:29 流浪的Coder 阅读(4067) 评论(1) 推荐(1) 编辑
摘要: S3C2440集成了丰富了外设控制器(LCD控制器、USB Device控制器、USB Host控制器、NAND FLASH控制器、I2C控制器、SPI控制器等)。要控制这些外设就要设置相应控制器的寄存器以产生相应的驱动时序。学习S3C2440,主要是如何配置寄存器。下面是S3C2440特殊功能寄存 阅读全文
posted @ 2018-03-17 15:27 流浪的Coder 阅读(6501) 评论(0) 推荐(0) 编辑
摘要: <背景> MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一。可以说,不懂MMU使很多人一直停滞在单片机与无OS的时代。 <虚拟地址/物理地址> a:如果处理器没有MMU,CPU内部执行单元产生的内存地址信 阅读全文
posted @ 2018-03-17 15:22 流浪的Coder 阅读(3083) 评论(0) 推荐(0) 编辑
摘要: <简介> LCD驱动里有个很重要的概念叫帧缓冲(framebuffer),它是Linux系统为显示设备提供的一个接口,应用程序在图形模式允许对显示缓冲区进行读写操作。用户根本不用关心物理显示缓冲区的具体位置及存放方式,因为这些都由缓冲区设备驱动完成了。 启动开发板后执行ls /dev/fb* 命令可 阅读全文
posted @ 2018-03-17 15:20 流浪的Coder 阅读(3062) 评论(0) 推荐(0) 编辑
摘要: <什么是液晶> 我们一般认为物体有三态:固态、液态、气态,其实这只是针对水而言,有一些有机化和物 还有介于固态和液态中间的状态 就是液晶态,如下图(一): 图(一) <TFT LCD显示原理> a:背景 两块偏光的栅栏角度相互垂直时光线就完全无法通过,图(六)是用偏光太阳镜做的测试。 图(六) b: 阅读全文
posted @ 2018-03-17 15:20 流浪的Coder 阅读(63326) 评论(1) 推荐(2) 编辑
摘要: <按键驱动程序> #include <stdio.h> #include <fcntl.h> #include <linux/input.h> #include <sys/types.h> #include <unistd.h> int main(int argc, char** argv) { i 阅读全文
posted @ 2018-03-17 15:20 流浪的Coder 阅读(570) 评论(0) 推荐(0) 编辑
摘要: <输入子系统简介> a:背景 内核的输入子系统是对“分散的”,“多种不同类别”的输入设备(键盘,鼠标,跟踪杆,触摸屏,加速度计等)进行“统一处理”的驱动程序。具有如下特点: a-1:统一各种形态各异的相似的输入设备的处理功能(鼠标,不论是PS/2形的鼠标,还是usb形式的鼠标,还是蓝牙形式的鼠标), 阅读全文
posted @ 2018-03-17 15:19 流浪的Coder 阅读(2710) 评论(1) 推荐(0) 编辑
摘要: linxu_usb驱动之框架 USB骨架程序可以被看做一个最简单的USB设备驱动的实例。 首先看看USB骨架程序的usb_driver的定义 [cpp] view plain copy static struct usb_driver skel_driver = { .name = "skeleto 阅读全文
posted @ 2018-03-17 15:18 流浪的Coder 阅读(5745) 评论(0) 推荐(0) 编辑
摘要: <uart驱动程序概述> 在嵌入式Linux系统中,串口被看成终端设备,终端设备(tty)的驱动程序分为3部分: tty_core tty_disicipline tty_driver 包括3个结构体:uart_driver,uart_port,uart_ops(include/serial_cor 阅读全文
posted @ 2018-03-17 15:17 流浪的Coder 阅读(48476) 评论(0) 推荐(3) 编辑
摘要: 字符设备之混杂设备: 定义混杂设备: 向Linux系统注册混杂设备驱动: 卸载混杂设备: 注意:混杂设备的初始化没有使用函数cdev_init(stuct cdev *,const struct file_operation *)来将将设备描述结构和设备操作函数集联系起来。 <wiz_tmp_tag 阅读全文
posted @ 2018-03-17 15:16 流浪的Coder 阅读(689) 评论(0) 推荐(0) 编辑
摘要: <简介> a:什么是液晶 物质一般有三态,固态,气态,和液态。这只是一种比较大致的划分,但是有些物质介于液体和固体之间——液晶。一般固体的分子或原子都由固定的排列方式,但是液晶介于固体和液体之间,具有流动性和排列性,可以用磁场来改变液晶的排列方式。 b:LCD背光 场致发光(Electro-Lumi 阅读全文
posted @ 2018-03-17 15:16 流浪的Coder 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: <平台设备设备驱动> a:背景: 平台总线是Linux2.6的设备驱动模型中,关心总线,设备和驱动这3个实体。一个现实的Linux设备和驱动通常需要挂接在一种总线上(比如本身依附于PCI,USB,IIC,SPI等设备而言)。但是在嵌入式系统里面,SoC系统即集成的独立外设控制器,挂接在SoC内存空间 阅读全文
posted @ 2018-03-17 15:15 流浪的Coder 阅读(2766) 评论(0) 推荐(0) 编辑
摘要: <linux系统7大子系统> a:SCI(system call interface) ————用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用。系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和 阅读全文
posted @ 2018-03-17 15:14 流浪的Coder 阅读(448) 评论(0) 推荐(0) 编辑
摘要: <机械硬盘> a:磁盘结构 传统的机械硬盘一般为3.5英寸硬盘,并由多个圆形蝶片组成,每个蝶片拥有独立的机械臂和磁头,每个堞片的圆形平面被划分了不同的同心圆,每一个同心圆称为一个磁道,位于最外面的道的周长最长称为外道,最里面的道称为内道,通常硬盘厂商会将圆形蝶片最靠里面的一些内道(速度较慢,影响性能 阅读全文
posted @ 2018-03-17 15:13 流浪的Coder 阅读(17706) 评论(2) 推荐(1) 编辑
摘要: USB概述 <USB简介> a:背景 USB是Universal Serial Bus的缩写,是一种全新的,双向同步传输的,支持热插拔的PC串行通信协议,USB标准提出的主要目的是为了提供一种兼容低速和高速,可扩充并且使用方便外围设备接口共人们使用,同时解决之前计算机接口过多的难题(这也是造成USB 阅读全文
posted @ 2018-03-17 15:11 流浪的Coder 阅读(4861) 评论(0) 推荐(1) 编辑
摘要: Linux驱动框架分析(一) 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构 阅读全文
posted @ 2018-03-17 15:10 流浪的Coder 阅读(482) 评论(0) 推荐(0) 编辑