随笔分类 -  s3c2440

摘要:系统时钟: 在开发版上,不同的器件运行在不同的时钟频率上,如CPU可能运行在400Mhz的频率上、SDRAM、DM9000等内存存储运行在100Mhz~133MHz上、 串口i2c等运行在50Mhz上,而在开发板上只有一个12Mhz的晶振,则我们需要设置两个部分 1、提高时钟频率12Mhz提高到40 阅读全文
posted @ 2017-02-17 10:50 我有一壶酒 阅读(4348) 评论(0) 推荐(0)
摘要:1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atomic_inc(atomic_ 阅读全文
posted @ 2017-02-16 16:21 我有一壶酒 阅读(303) 评论(0) 推荐(0)
摘要:异步通知: 驱动程序的所谓异步通知,就是说并不是应用程序来对驱动程序操作的,而是驱动程序查询到有事件发生或者有数据发生变化的时候通知应用程序。角色发生了变化,应用程序由主动改为被动执行。 比如按键驱动: 1、有不断进行查询引脚状态的,CPU资源消耗非常的打; 2、有中断操作的,发生按键事件后采取执行 阅读全文
posted @ 2017-02-16 11:17 我有一壶酒 阅读(786) 评论(0) 推荐(0)
摘要:中断函数:包含#include<linux/irq.h> request_irq(irq,handle,irqflag,name,dev_id) { 1,分配一个irqaction结构体 2、把这个结构体放到irq_desc[irq](action链表)中 3、设置引脚 4、使能中断 } free_ 阅读全文
posted @ 2017-02-16 10:16 我有一壶酒 阅读(801) 评论(0) 推荐(0)
摘要:编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod 阅读全文
posted @ 2017-02-15 10:20 我有一壶酒 阅读(439) 评论(0) 推荐(0)
摘要:poll机制:为了减少CPU资源的占用率,在编写驱动函数中添加poll机制 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 POLL:应用程序在一定时间内没有事 阅读全文
posted @ 2017-02-14 15:52 我有一壶酒 阅读(4570) 评论(0) 推荐(0)
摘要:分层概念: 驱动程序向上注册的原理: 比如:输入子程序一个input.c作为一层,下层为Dev.c和Dir.c,分别编写Dev.c和Dir.c向上Input.c注册;如图所示 分离概念: 分离概念主要是讲,设备驱动程序分成两个部分,也将引进另一个新概念bus_dri_dev模型 总线-驱动-设备模式 阅读全文
posted @ 2017-02-13 20:14 我有一壶酒 阅读(777) 评论(0) 推荐(0)
摘要:3.2:控制传输过程1:root hub的控制传输在前面看到,对于root hub的情况,流程会转入rh_urb_enqueue().代码如下:static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb){ //如果是中断传输的端点 阅读全文
posted @ 2017-02-13 14:40 我有一壶酒 阅读(2972) 评论(0) 推荐(0)
摘要:三:传输过程的实现说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.USB系统的信息传输就是打成URB结构,然后再过行传送的.URB的全称叫USB request block.下面从它的接口说起.3.1:URB的相关接口1:URB的创建URB的 阅读全文
posted @ 2017-02-13 14:36 我有一壶酒 阅读(2509) 评论(0) 推荐(0)
摘要:首先我们来看USB设备描述符的结构: 在USB总线识别设备阶段就将USB描述符发送给了USB总线驱动程序,设备的数据传输对象是端点,端点0是特殊端点,在USB总线驱动程序识别阶段, 会分配一个地址给USB设备,然后发送命令来获取USB描述符,来获取给USB设备信息,如厂家ID等: 本次通过USB鼠标 阅读全文
posted @ 2017-02-13 14:34 我有一壶酒 阅读(519) 评论(0) 推荐(0)
摘要:USB驱动编程原理: 当我们把USB设备插入USB口时会提示需要安装相对应的驱动,如USB鼠标、USB键盘等,这些电脑自己自身已经自带有相对于的驱动程序, 当电脑检查到该USB设备类型相同就去帮你安装相对于驱动,但有些由于系统没有自带有相对于的USB驱动程序,需要联网或者厂家资料自带有 就需要手动安 阅读全文
posted @ 2017-02-13 10:13 我有一壶酒 阅读(1129) 评论(0) 推荐(0)
摘要:上节我们主要是对fb_info结构体的配置,对fb_info结构体的配置主要分为一下步骤: static int lcd_init(void){ /* 1. 分配一个fb_info */ s3c_lcd = framebuffer_alloc(0, NULL); /* 2. 设置 */ /* 2.1 阅读全文
posted @ 2017-02-12 15:53 我有一壶酒 阅读(379) 评论(0) 推荐(0)
摘要:LCD显示原理: 在JZ2440上,想要让LCD显示,需要几个部分1、LCD硬件 2、开发板上的LCD控制器 3、SDRAM内存存放数据FramBuffer 4、可能还需要一个调色板(实际上是一块内存,里面数据可以组成各种颜色) 显示原理:在开发板上操作LCD控制器,使得开发板向SDRAM内存里去除 阅读全文
posted @ 2017-02-12 15:28 我有一壶酒 阅读(582) 评论(0) 推荐(0)
摘要:I2C讲解: 在JZ2440开发板上,I2C是由两条数据线构成的SCL,SDA;SCL作为时钟总线,SDA作为数据总线;两条线上可挂载I2C设备,如:AT24C08 两条线连接ARM9 I2C控制器,通过控制来控制I2C设备的识别设备地址、读、写操作;如图所示 从中所知:I2C线上可以挂载很多个I2 阅读全文
posted @ 2017-02-12 11:13 我有一壶酒 阅读(18457) 评论(3) 推荐(2)
摘要:一、应用调试1:使用strace命令来跟踪系统调用 二、应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./configure --target=arm-linuxmake把arm-linux-gdb复制到/bi 阅读全文
posted @ 2017-01-14 09:03 我有一壶酒 阅读(1240) 评论(0) 推荐(0)
摘要:1. 点灯 2. 串口打印 3. JTAG调试器3.1 命令行调试 3.2 源码级别的调试前提a. 程序必须已经重定位好,位于它的链接地址a.1 如果程序的链接地址是SDRAM, 使用openocd初始化SDRAMa.2 使用arm-linux-gdb/arm-elf-gdb下载程序 b. 链接脚本 阅读全文
posted @ 2017-01-14 09:01 我有一壶酒 阅读(231) 评论(0) 推荐(0)
摘要:驱动程序的调试一. 打印: prink, 自制proc文件UBOOT传入console=ttySAC0 console=tty11. 内核处理UBOOT传入的参数console_setup add_preferred_console // 我想用名为"ttySAC0"的控制台,先记录下来 2. 硬件 阅读全文
posted @ 2017-01-14 08:59 我有一壶酒 阅读(724) 评论(0) 推荐(0)
摘要:void puthex(unsigned long val) { /* val = 0x1234ABCD */ unsigned char c; int i = 0; putc('0'); putc('x'); for (i = 0; i > ((7-i)*4)) & 0xf; if ((c >= 0) && (c = ... 阅读全文
posted @ 2017-01-12 12:04 我有一壶酒 阅读(1132) 评论(0) 推荐(0)
摘要:/* * 初始化UART0 * 57600,8N1,无流控 */ void uart0_init(void) { GPHCON |= 0xa0; // GPH2,GPH3用作TXD0,RXD0 GPHUP = 0x0c; // GPH2,GPH3内部上拉 ULCON0 = 0x03; // 8N1(8个数据位,无较验,1个停止位) ... 阅读全文
posted @ 2017-01-12 12:02 我有一壶酒 阅读(656) 评论(0) 推荐(0)
摘要:(1)准备工作:1. 准备虚拟机2.安装工具链sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /设置环境变量:sudo vi /etc/environment : PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/ 阅读全文
posted @ 2017-01-11 19:36 我有一壶酒 阅读(260) 评论(0) 推荐(0)