- 博客(33)
- 资源 (36)
- 收藏
- 关注
转载 PID整定相关经验
自己将要用到PID算法来控制温度,在此提前查看和记录长辈们的做过的PID算法控制相关的一些积累。 比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输进误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 积分(I)控制 在积分控制中,控制器的输出与输进误差信号的积分成正比关系。对一个自动控制系统,假如在进入稳态后
2015-07-14 16:23:16
897
原创 uboot的makefile分析
u-boot的源代码包含了对几十种处理器、数百种开发板的支持,可是对于特定的开发板,配置编译过程只需要其中部分程序。这里就需要用到Makefile了。 下面以smdk2410板为例 1) Makefile中定义了源码及生成的目标文件存放的目录,目标文件存放目录BUILD_DIR可以通过make O=dir或者export BUILD_DIR=dir两种方式指定。如果没有指定,则设定为源码的根目录
2015-06-29 16:28:56
1504
原创 u-boot配置文件mkconfig分析
配置u-boot命令:make BOARD_NAME_config下面以smdk2410开发板为例 在执行make smdk2410_config命令配置smdk2410开发板的u-boot时,就会执行到顶层Makefile文件中的smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NUL
2015-06-27 20:20:49
1147
原创 BootLoader启动过程
BootLoader的主要作用是加载内核 怎么加载呢?分为以下几步: 1、初始化硬件:关闭看门狗、设置时钟、设置SDRAM、初始化Nand Flash 2、把内核从Nand Flashrf读到SDRAM 3、设置“内核需要的参数” 4、跳转执行内核
2015-06-26 19:49:30
632
转载 ARM基础知识
基础知识1、ARM处理器的工作模式及其特点ARM 处理器有7种工作模式,其特点如下: 快速中断模式(fiq):支持高速数据传输或通道处理,外部中断fiq信号有效且CPSR的F=0时进入。 中断模式(irq):用于通用中断处理,外部中断irq信号有效CPSR的I=0时进入。 管理员模式(svc):操作系统的保护模式,复位,软件中断进入该模式。主要用于SWI(软件中断)和OS(操作系统)。这个模式
2015-06-23 15:36:10
1492
转载 误删资料恢复
一不小心删错了,还把回收站清空了,咋办啊?只要三步,你就能找回你删掉并清空回收站的东西。 步骤: 1、单击“开始——运行,然后输入regedit (打开注册表) 2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点
2015-06-23 11:14:37
501
转载 uIP协议栈初步认识
Uip源代码可以从http://www.sics.se/~adam/uip/index.php/Main_Page下载得到。Uip的源码目录结构: ├─apps ├─dhcpc ├─hello-world ├─resolv ├─smtp ├─telnetd ├─webclient ├─webserver └─httpd-fs ├─doc
2015-06-16 16:16:15
636
原创 ILI9325初始化代码
void LCD_Init1(void){ unsigned int i; GPIO_ResetBits(GPIOE, GPIO_Pin_1); Delay(0xAFFff); GPIO_SetBits(GPIOE, GPIO_Pin_1 ); //V7 Delay(0xAFFff);
2015-06-16 11:07:52
3324
原创 HX8347-I_(T)初始化代码
这里写代码片void LCD_Init1(void) { unsigned int i; GPIO_SetBits(GPIOE, GPIO_Pin_1 ); Delay(3000);GPIO_ResetBits(GPIOE, GPIO_Pin_1);Delay(10000); GPIO_SetBits(GPIOE, GPIO_Pin_1 )
2015-06-16 11:02:30
4794
原创 ST7789V初始化代码
void initi(void){ // VCI=2.8V//************* Reset LCD Driver ****************//res=1; delay(10); res=0; delay(100); res=1; delay(500);write_command(0x11);delay(120); //Delay
2015-06-16 10:52:00
31299
转载 STM32优先级分组
STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个
2014-10-27 15:51:52
1362
1
转载 MiniGUI——使用 GDI 函数
简介: 本文讲述 MiniGUI 中 GDI 函数及其使用。主要包括:设备上下文的概念、获取和释放;矩形操作和区域操作;基本绘图函数;位图操作函数;逻辑字体操作函数等。
2014-09-04 17:12:55
5502
转载 深入理解linux内核v4l2框架之videobuf
Videobuf 下面来介绍以下 videobuffer 相关的一些东西。 V4L2 核心 api 提供了一套标准的方法来处理视频缓冲,这些方法允许驱动实现 read(),mmap(), overlay() 等操作。同样也有方法支持 DMA 的 scatter/gather操作,并且支持 vmallocbuffer( 这个大多用在 USB 驱动上 ) 。
2013-12-13 10:52:32
1275
原创 摄像头设备驱动框架
摄像头设备驱动框架#include #include #include ...............................................static int myvivi_vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *cap){ s
2013-12-10 11:24:46
666
原创 V4L2最简单驱动实例
V4L2最简单驱动实例头文件.........................static const struct v4l2_file_operations myvivi_fops = { .owner = THIS_MODULE,};static struct video_device *myvivi_device;static void myvivi_rel
2013-12-10 10:41:32
1458
原创 V4L2框架
V4L2框架 V4L2有三层,应用层(SCI),核心层(V4L2_dev.c),硬件相关层(uvc_driver.c)一、应用层(SCI)通过调用open,read,write,ioctl函数访问到底层设备驱动二、核心层(V4L2_dev.c)这层是通过字符设备驱动实现一套标准V4L2_fops.这个结构体中的所有成员将对应调用到硬件相关层video_device->fop
2013-12-08 10:19:01
1028
转载 基于V4L2的视频驱动开发
基于V4L2的视频驱动开发一、 V4L2 API及数据结构V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。1、常用的结构体在内核目录include/linux/videodev2.h中定义 struct v4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_R
2013-10-09 16:13:09
859
转载 基于嵌入式Linux的视频采集系统---UVC驱动模型介绍
基于嵌入式Linux的视频采集系统---UVC驱动模型介绍UVC 即 usb video class。USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC
2013-10-09 16:01:25
1511
原创 linux输入子系统
linux输入子系统输入子系统是基于字符设备驱动封装出来的框架,drver那边已经实现好的,只需要驱动程序员实现device就行。驱动框架如下: 1. 分配一个input_dev结构体 static struct input_dev *buttons_dev;buttons_dev = input_allocate_device(); 2. 设置
2013-10-07 22:52:43
649
原创 Linux内核的异步通知
Linux内核的异步通知异步通知类似于中断,主要用于实现驱动通过发送信号通知应用程序。应用层:void my_signal_fun(int signum){..............................}int main(int argc, char **argv){int fd;int Oflags;
2013-10-07 22:28:37
1014
原创 Linux系统下内核定时器的用法
Linux系统下内核定时器的用法内核定时器的用法其实很简单1.需要定义一个timer_list变量timer、先初始化timerinit_timer(&timer);2.对timer的相关参数赋值timer.function = fun;timer.expires = jiffies + TIMER_DELAY;3.向内核添加定时器add_timer(&ti
2013-10-07 21:41:03
833
原创 linux的poll机制
Poll就是监控文件是否可读的一种机制,作用与select一样。应用程序的调用函数如下:int poll(struct pollfd *fds,nfds_t nfds, int timeout);Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返
2013-10-07 21:14:04
16504
原创 块设备驱动程序
块设备驱动程序块设备驱动程序框架1. 分配gendisk: alloc_disk2. 设置2.1 分配/设置队列: request_queue_t // 它提供读写能力 blk_init_queue2.2 设置gendisk其他信息 // 它提供属性: 比如容量3. 注册: add_disk#include
2013-10-03 18:55:50
534
原创 I2C设备驱动程序
I2C设备驱动程序I2C设备驱动程序框架1. 分配一个i2c_driver结构体2. 设置 attach_adapter // 它直接调用 i2c_probe(adap, 设备地址, 发现这个设备后要调用的函数); detach_client // 卸载这个驱动后,如果之前发现能够支持的设备,则调用它来清理 3. 注册:i2c_add_d
2013-10-03 18:39:50
748
原创 网络设备驱动程序
网络设备驱动程序学习网络设备驱动程序之笔记,实现一个最简单的虚拟网卡#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu
2013-10-03 18:17:03
908
原创 DMA驱动程序
DMA驱动程序在单CPU系统中,CPU同一时间只能做一件事,为了提高效率引入了DMA。下面的代码用DMA方式实现两块内存之间的数据传输大概步骤如下:1. 把源,目的,长度告诉DMA2.设置DMA参数a. 地址(增,减,固定)b. 启动方式(手工或外部)3. 启动DMA#include #include #include #include
2013-10-03 18:01:18
926
原创 usb驱动程序
参考 drivers\hid\usbhid\usbmouse.c#include #include #include #include #include #include static struct input_dev *uk_dev;static char *usb_buf;static dma_addr_t usb_buf_phys;static i
2013-10-03 17:33:42
639
原创 usb协议
usb驱动程序PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平 USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,就会把PC USB口的D-或D+拉高,从硬件的角度通知PC有新设备接入。usb协议基本知识:1. USB是主从结构的 所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能
2013-10-03 17:24:42
724
原创 2440触摸屏驱动程序
2440触摸屏驱动程序#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct s3c_ts_regs {
2013-10-03 17:03:28
739
原创 Lcd驱动程序
Lcd驱动程序怎么写LCD驱动程序?1. 分配一个fb_info结构体: framebuffer_alloc2. 设置3. 注册: register_framebuffer4. 硬件相关的操作#include #include .....................................struct lcd_regs {un
2013-10-03 16:45:50
897
原创 nandflash驱动开发
nandflash驱动开发#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2013-10-03 16:13:22
745
原创 nandflash的操作方法
nandflash的操作方法写nand flash驱动程序须知:问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址。问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在
2013-10-03 15:45:38
666
原创 Linux下norflash驱动编写方法
Linux下norflash驱动编写步骤1. 分配map_info结构体2. 设置: 物理基地址(phys), 大小(size), 位宽(bankwidth), 虚拟基地址(virt) 3. 使用: 调用NOR FLASH协议层提供的函数来识别4. add_mtd_partitions如:#include #include #include #include
2013-10-03 11:51:27
1244
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人