随笔分类 -  S3C2440学习笔记

韦东山JZ2440-V3开发板学习笔记
摘要:消除抖动的实现方法 在发生中断后,延时一段时间(抖动时间t),再去读取按键值; 这里实现这段延时的方法就是使用定时器; 当按键发生中断时,启动定时器,定时器延时t秒后,再读取键值。 实例 driver.c 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 ... 阅读全文
posted @ 2019-11-17 21:55 Lilto 阅读(2747) 评论(0) 推荐(0)
摘要:①轮询:应用程序不断read;驱动程序不断read,占用大量的cpu资源。 ②中断:应用程序阻塞在read;驱动程序休眠,只有发生中断时,驱动程序唤醒,读取键值,返回给应用程序;应用程序执行下一步。 ③poll:应用程序在一定的时间内(用户定义),不断检测用户设置的flag,超时执行下一步;驱动程序在发生中断时,标记用户设置的flag。 ④async:应用程序不会阻塞,不影响当前进程的其他任务的执... 阅读全文
posted @ 2019-11-17 21:53 Lilto 阅读(278) 评论(0) 推荐(0)
摘要:DM9000移植 uboot下参数设置 原理图及管脚说明 IOR# —— Processor Read Command IOW# —— Processor Write Command CS# —— Chip Select CMD —— Command Type INT ... 阅读全文
posted @ 2019-11-17 21:52 Lilto 阅读(652) 评论(0) 推荐(0)
摘要:实现 使驱动程序只能同时被一个应用程序操作。 幕后:m+1 ①把变量m加载到寄存器 ②执行寄存器运算,并把运算结果保存到 ③把运算结果写回内存 单任务系统 当应用程序open某个驱动时,只需使用一个全局变量标记,再有其他应用程序打开这个驱动时,则直接退出(打开失败)。 多任务系统 由于修改变量的值,并不是一步到位的,而是需要使用多个指令,才能完成最终的操作; ... 阅读全文
posted @ 2019-11-17 21:39 Lilto 阅读(162) 评论(0) 推荐(0)
摘要:驱动相关:硬件之上的软件层,负责底层硬件与用户程序的交互 设备相关:底层设备的硬件操作 总线:匹配设备和驱动 设备驱动分层的思想:为同一类设备设计一个框架,而框架中的核心层则实现了该设备的一些通用功能。 阅读全文
posted @ 2019-11-17 21:23 Lilto 阅读(299) 评论(0) 推荐(0)
摘要:Makefile: 1 obj-m += xxx.o 2 3 KERN_DIR = /work/system/linux-2.6.22.6 4 5 PWD = $(shell pwd) 6 7 all: 8 make -C $(KERN_DIR) M=$(PWD) modules 9 10 clean:11 make -C $(KERN_DIR) M=$(PWD) modules clea... 阅读全文
posted @ 2019-11-17 21:20 Lilto 阅读(1312) 评论(0) 推荐(0)
摘要:版本:linux-2.6.24.4 宏: MKDEV(MAJOR, MINOR); 说明: 获取设备在设备表中的位置。 MAJOR主设备号 MINOR次设备号 内核使用的版本号说明文件: 在内核 /Documentation 目录下的 devices.txt 有说明。 一般本地保留的 MAJOR 234-239 ... 阅读全文
posted @ 2019-11-17 21:17 Lilto 阅读(5950) 评论(0) 推荐(0)
摘要:S3C2440A Memory Map after Reset S3C2440的内存空间划分为不同的块,当CPU向内存控制器发出地址,内存控制器根据地址范围,发出对应片选信号到片选引脚,实现对不同设备的控制。 BANK0 BUS WIDTH The data bus of BANK0 (nGCS0) should be configured with a width as one of... 阅读全文
posted @ 2019-11-17 21:15 Lilto 阅读(370) 评论(0) 推荐(0)
摘要:for (i = 0; i bi_bdev); // 找到队列 // 调用队列的"构造请求函数" ret = q->make_request_fn(q, bio); ... 阅读全文
posted @ 2019-11-17 21:10 Lilto 阅读(212) 评论(0) 推荐(0)
摘要:应用程序通过标准接口(C Library)调用驱动程序。 C Library 通过 swi 指令进入内核。 字符设备的注册 int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) a、函数说明: Param1:主设备号 Param... 阅读全文
posted @ 2019-11-17 21:04 Lilto 阅读(1293) 评论(0) 推荐(0)
摘要:硬件配置 硬件原理 ADC AND TOUCH SCREEN INTERFACE SPECIAL REGISTERS 程序框架 软件架构:输入子系统 优化措施 ①问题:ADC转换出来的值变化太大,不稳定; 原因1:触摸屏被"触摸",触摸点电压值尚未稳定,已经被ADC转换成数字量; 改善1:设置ADC 阅读全文
posted @ 2019-11-17 20:51 Lilto 阅读(608) 评论(0) 推荐(0)
摘要:单片机下中断处理过程: ①按键按下 ②CPU发生中断,跳转到异常向量入口 ③跳转到中断处理函数 a、保存被中断的现场 b、执行中断处理函数 c、恢复被中断现场 Linux下中断处理过程: ARM架构CPU的异常向量地址可以是0x00000000,也可以是0xFFFF0000。Linux内核使用的是0xFFFF0000(0xFFFF0000是一个虚拟地址)。因此,在建立虚拟地址映射之后... 阅读全文
posted @ 2019-11-17 20:46 Lilto 阅读(370) 评论(0) 推荐(0)
摘要:driver.c 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 12 static int major;13 14 static struct class *myKey_class;1... 阅读全文
posted @ 2019-11-17 20:42 Lilto 阅读(309) 评论(0) 推荐(0)
摘要:架构 USB的硬件识别原理 基本概念 ①如何区分不同的USB设备? 每个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号(地址); 接在USB总线上的每一个USB设备都有自己的编号(地址); PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址); 新接入的USB设备的设备编号(地址)是0,在未分配新编号之前,PC机使用0编号与其通信; ②USB为... 阅读全文
posted @ 2019-11-17 20:41 Lilto 阅读(465) 评论(0) 推荐(0)
摘要:poll机制的作用:使阻塞型函数超时返回,避免一直阻塞。 实例: driver.c 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 1... 阅读全文
posted @ 2019-11-17 20:35 Lilto 阅读(540) 评论(0) 推荐(0)
摘要:驱动框架 通过使用platform设备驱动框架,实现led驱动与设备操作的分离。 我们关注led_drv里面的 struct platform_driver led_drv里面的.probe函数,当有同名的device注册到内核,将运行这个driver的probe函数(同名的:led_dev里面的struct platform_device led_dev里面的.name与 struct p... 阅读全文
posted @ 2019-11-17 20:32 Lilto 阅读(460) 评论(0) 推荐(0)
摘要:驱动程序 1 /* 2 * 参考: 3 * .\linux-2.6.22.6\drivers\mtd\devices\mtdram.c 4 * .\linux-2.6.22.6\drivers\mtd\maps\physmap.c 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include... 阅读全文
posted @ 2019-11-17 20:30 Lilto 阅读(261) 评论(0) 推荐(0)
摘要:修改rcS启动脚本,使开发板初始化完成,自动挂载共享文件夹 修改开发板ip,使之与虚拟机处于同一网段(二者可以互ping) 挂载虚拟机的共享文件夹 rcS 1 ifconfig eth0 192.168.0.172 3 mount -a4 mkdir /dev/pts5 mount -t devpts devpts /dev/pts6 mount -t nfs -o no... 阅读全文
posted @ 2019-11-17 20:26 Lilto 阅读(800) 评论(0) 推荐(0)
摘要:硬件原理及分析 管脚说明 Pin NamePin FunctionR/B(RnB)The R/B output indicates the status of the device operation. When low, it indicates that a program, erase or random read operation is in process and... 阅读全文
posted @ 2019-11-17 20:23 Lilto 阅读(596) 评论(0) 推荐(0)
摘要:实现 ①编写驱动框架 ②编写硬件实现代码 (在Linux系统下操作硬件,需要操作虚拟地址,因此需要先把物理地址转换为虚拟地址 ioremap()) 如何实现单个灯的操作: 实现方法之一——操作次设备号 主设备号:用于查找对应的文件操作结构体; 次设备号:用于区分同类型设备下的不同设备; 实例 driver.c 1 #include 2 #include 3 #in... 阅读全文
posted @ 2019-11-17 20:17 Lilto 阅读(309) 评论(0) 推荐(0)