自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (6)
  • 收藏
  • 关注

原创 电阻触摸屏驱动实例分析

s3c2440的CMOS模数转换器(ADC)有8路模拟输入AIN[0-7],8路输入共用一个A/D转换器,电阻触摸屏的输入相当于分压电阻的电压,触摸屏的x,y位置值由分压电阻电压值转换而来。S3c2440向外提供了与触摸屏直接相连的4个模拟输入引脚AIN[4-7],YP,YM,XP,XM。在触摸屏的不同位置按下触摸屏将产生不同的模拟输入电压值,驱动据此来辨别坐标。编写触摸屏的驱动涉及两个中断,一个...

2017-11-18 21:12:34 5252

原创 内核LCD驱动结构分析及实例分析

    内核中,LCD是作为帧缓冲设备来使用的,帧缓冲设备是标准的字符设备,主设备号为29。内核LCD驱动的结构包含了字符设备的结构和paltform设备的结构,以smdk2410为例,其主要涉及4个文件:               linux-2.6.22.6\arch\arm\mach-s3c2410\mach-smdk2410.c               linux-2.6.2...

2017-10-20 18:08:24 2649

原创 s3c2440裸板驱动之LCD

        s3c2440片上集成了LCD控制器,用于驱动外接LCD屏,LCD屏的硬件特性是固定的,LCD裸板编程重点是根据外接LCD的硬件特性和用户需求配置LCD控制器的寄存器组。而配置寄存器的重点又是理解LCD的工作时序,本文重点分析了LCD的工作时序和与时序相关的寄存器的配置,也结合代码简单介绍LCD使用思路。        LCD控制器提供了驱动外接LCD屏所需的所有控制信号,RE...

2017-10-16 16:54:02 3565 1

原创 输入子系统匹配过程之list_for_each_entry()函数分析

输入子系统匹配过程之list_for_each_entry()函数分析本文主要结合input_subsystem详细分析了list_for_each_entry()函数。其中包含offsetof (type,member)函数,container_of(ptr, type, member)函数,list_entry(ptr, type, member)函数,及这些函数的参数之间的关系。

2017-10-08 15:07:48 4748 1

原创 最新secureCRT成功安装教程含资源链接

最新secureCRT成功安装教程含资源链接 一键安装含注册机

2023-09-03 23:35:13 179

原创 支付宝当面付方案(个人免签方案)

作者作为个人开发者,想接入支付功能,所以了解了下目前支付相关的方案,发现大体有以下几种(参见xpay):支付宝和微信官方支付接口:基本都需要企业资格才能开通,最起码也要是个体工商户才可以(有营业执照)。第三方支付平台:例如图灵支付,xpay等,支持个人开发者,但是手续费太高。野路子:网上有开源方案是监听支付宝app收款通知,实现收款,例如PaysApi、绿点支付等,本质上依然是采用挂机监听的策略,但针对的是移动端支付宝或微信的收款通知消息,成本高,配置麻烦,需24小时挂台安卓手机,不免费以上方案要

2020-06-08 18:26:05 2056 3

原创 GPIO模拟SPI驱动OLED

这个裸板驱动的流程:1、配置与OLED连接的引脚为输入或输出引脚,并设置有关引脚的默认或初始状态。2、根据spi时序,实现主机SPISendByte()函数,以便配置OLED或向其发送数据时调用。3、实现OLED 操作集,包括选择芯片,设置数据/命令模式,地址模式等函数。4、实现OLED的初始化函数 OLEDInit()和功能函数 OLEDPutChar(int page, int col...

2018-08-03 23:04:51 6253

原创 s3c2440裸板实现播放音乐

        之前已经写了一篇文章《3线接口与wm8976声卡驱动》,但那不是裸板驱动,只是修改了声卡uda1314的硬件部分的代码,移植过来的,需要在内核下其他模块的支持,才把wm8976用起来了。为了更深入的理解声卡的工作过程,这次不止写了wm8976的裸板驱动,还有IIS和DMA的编程,并利用它们一起来实现裸板播放音乐的功能。也是说把存储在nand    flash上的一首歌(.wav格式...

2018-07-30 16:03:59 1261

原创 2.6内核下写I2C设备驱动

        I2C核心是内核自带的,一般不需要修改,它提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。        adapter驱动是硬件相关的,不同的soc有不同的adapter驱动,它操作IIC控制器,adapter的i2c_algorithm成员实现了一套通信方法,adapter利用i2c_algor...

2018-06-19 19:16:29 858

原创 s3c2440 IIC控制器裸板程序

        I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。要点:1、总线空闲:I2C总线空闲的时候,两条线SDA和SCL都是高电平。2、开始信号 S 信号:SCL 为高电平时,SDA由高电平向低电平跳变,开始传送数据。3、结束信号 P 信号:SCL 为高电平时,SDA由低电平向高电平跳变,结束传送数据。4、响应信号 ACK:接收器在接收到8位数据后,在第9个时钟周期,...

2018-06-13 00:25:17 626 1

原创 msghdr结构通过UNIX域套接字实现文件描述符的本地传递

        本文介绍msghdr结构体借助UNIX域套接字和sendmsg()函数和recvmsg()函数来传递文件描述符,sendmsg()函数和recvfmsg()函数还可以传递其他控制信息,这里不作介绍。函数声明:ssize_t sendmsg(int sockfd,const struct msghdr *msg,int flags);ssize_t recvmsg(int sockf...

2018-06-09 23:02:47 1215

原创 进程间通信之UNIX域套接字(UDS)

UNIX域套接字(UDS):UNIX Domain Socket        UNIX域socket实现本地进程间通信,需要一个进程作为服务器端,一个进程作为客户端,使用方法有点像socket网络,但又不经过网络底层的那些东西。与网络编程最不一样的地方是服务器端bind的时候用的是sockaddr_un结构,客户端connect的时候用的也是sockaddr_un结构,而不是sockaddr_...

2018-06-09 09:08:35 11190

原创 使用socketpair实现父子进程双向通信

        socketpair()函数会创建两个socket对象,其文件描述符保存在其第四个参数fds[2]数组中。通信时,父子进程中,其中一进程读写fds[0],另一进程读写fds[1],一进程从fds[0]写,另一进程从fds[1]中读出。反之亦然。读写fds[]的阻塞问题:1、当还没有往fds[1]写数据,尝试从fds[0]读数据时,将阻塞读。2、当往fds[1]写了数据后,并且...

2018-06-08 23:56:32 938

原创 进程间通信之共享内存

        共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限,大小和最近访问的时间等。该数据结构定义:struct shmid_ds{ struct ipc_perm shm_perm; /* operation permission struct */ s...

2018-05-21 00:42:30 360

原创 进程间通信之信号量

        信号量主要用于进程间同步,避免并发访问共享资源。        信号量集合数据结构struct semid_ds:在此数据结构中定义了整个信号量集合的基本属性,如访问权限。信号量数据结构struct sem:信号量集合使用指针指向一个由数组组成的信号量单元,在此信号量单元中存储了各信号量的值。它们的定义:信号量集合数据结构:struct semid_ds{ st...

2018-05-21 00:11:18 394

原创 进程间通信之消息队列

        这两天在复习Linux应用编程,感谢杨宗德老师的书《Linux高级程序设计》,写得非常通俗易懂又不乏严谨,一路看下去非常顺利,即便第三版的书中有些小的编辑错误,但不影响阅读。我这两天的文章的内容大部分来自杨老师的书本,整理了一下。 IPC:进程间通信(Inter Process Communication),指多个进程之间进行数据交换。        system V提供的...

2018-05-20 22:32:07 9668 6

原创 SIGALRM信号与实时定时

1、alarm()函数单次定时(秒位单位):            extern unsigned int alarm(unsigned int __seconds)        每个进程只能有一个闹钟时钟,如果在调用alarm时,以前已为该进程设置过闹钟时钟,而且它还没有超时,则将该闹钟的余留值作为本次alarm函数调用的返回值。以前登记的闹钟时钟则被新值代替。        如果有以前...

2018-05-17 12:52:34 4396 1

原创 进程间通信之信号

信号使用步骤:1、在目的进程中安装信号,需要提供一个信号处理函数。2、信号被某个进程产生。3、操作系统响应信号,在目的进程中被注册。(信号在目的进程中被注册,操作系统将添加信号到目的进程的PCB的未决信号数据结构中)4、信号在进程中注销,进程在执行信号处理函数之前,首先要把信号在进程中注销。 5、信号生命终止,保护上下文,进程捕获信号,即执行信号处理函数。 发送信号函数:...

2018-05-17 10:52:18 2319 1

原创 tslib应用(电子书支持ts输入)

        这篇文章把之前写的《freetype实现电子书》代码修改一下,改为用触摸屏输入来进行上下翻页和退出。代码中把触摸屏分为上中下3个区域,分别对应输入的上一页,退出,和下一页。        使用触摸屏的前提是按上一篇《tslib移植和测试》移植好tslib,因为要用到tslib库。系统对触摸屏事件的检测频率非常高,轻轻按一下触摸屏,就会被检测到几次触摸事件。即对我们人来说,我们只按了...

2018-05-13 13:00:06 838

原创 tslib移植与测试

移植tslib到arm上 linux-3.4.2:一、首先编译东山老师之前在linux-2.6.22.6写的s3c_ts.c及其Makefile,以便测试tslib:修改Makefile:把: KERN_DIR = /work/system/linux-2.6.22.6改为:KERN_DIR = /work/system/linux-3.4.2make,出现下面错误:/work/drivers_a...

2018-05-12 12:25:15 1543

原创 svgalib安装与应用

svgalib编译安装:一、要先安装libx86-1:http://packages.ubuntu.com/lucid/libx86-1tar xzf libx86_1.1+ds1.orig.tar.gz gunzip libx86_1.1+ds1-6.diff.gzcd libx86-1.1/patch -p1 < ../libx86_1.1+ds1-6.diff make // 出错,修...

2018-05-09 22:52:58 1420

原创 HZK16实现电子书

        本文用汉字库点阵和ASCII点阵实现电子书,汉字库点阵来自汉字库文件HZK16,ASCII字符点阵来自ASCII字符点阵数组fontdata_8x16,实际上ASCII字符点阵也可以从HZK16文件中获得,本文并没有这样实现,那样可能会好点,有兴趣的朋友可以那样去实现它。        这个电子书只是对我上一篇文章《freetype实现电子书》的代码做了些修改。不一样的地方是:现...

2018-05-09 13:56:24 1591

原创 freetype实现电子书

      这个电子书的功能很简单,通过在控制台输入"u"/"n"来控制显示上一页,下一页,并且使用轮询方法实现,很占CPU资源,后面我会慢慢改进。源码下载地址:https://download.csdn.net/download/qq_22863733/10399962      总共3个文件:main.c、function.c、function.hfunction.h:#include &lt...

2018-05-08 13:25:01 784

原创 进程间通信之管道

无名管道PIPE:|        无名管道是一种特殊类型的文件,在内核中对应的资源即一段特殊内存空间,内核在这段空间中以循环队列的方式临时放入一个进程发送给另一个进程的信息,这段内核空间完全由操作系统管理和维护,应用程序只需要,也只能使用系统调用来访问它。        | 将两个命令连接起来,如:rpm -qa |grep telnet,把rpm -qa的输出作为 grep telnet ...

2018-05-06 22:25:52 482

原创 进程基本知识

进程环境及进程属性:        进程资源由两部分组成:内核空间进程资源及用户空间资源。内核空间资源即PCB相关的信息,包括进程控制块本身,打开的文件表项、当前目录、当前终端信息,线程基本信息、可访问内存地址空间。PID、PPID、UID、EUID等。也就是说通过PCB可访问该进程所有的资源。用户空间的进程资源包括:通过成员mm_struct映射的内存空间。        用户及进程拥有以下几种...

2018-05-06 17:06:57 700

原创 alsa-libs安装与ALSA应用编程

alsa在pc上安装(我安装的是als-lib-1.0.22):1、sudo tar xjf alsa-lib-1.0.22.tar.bz2 2、cd alsa-lib-1.0.22/3、./configure4、make 5、sudo make install这就把alsa-libs库安装好了。下面是一个使用alsa库播放.wav文件的例子main.c:#include<unistd.h&...

2018-05-03 07:42:01 1426 1

原创 详解getopt()函数

     结合一个小例子来说明关于getopt()函数的一些概念,一定要注意区分和理解我下面说的名词,千万不能混淆了。否则就容易概念不清了。#include <unistd.h>#include <stdio.h>int main(int argc, char * argv[]){ int i; int ch; printf("----...

2018-05-02 23:40:58 32420 1

原创 freetype安装与应用编程

        点阵显示有局限性,如字形固定,大小固定,为解决这些问题,本文介绍应用freetype来显示字体。FreeType库是一个开源的、可移植的字体引擎,它功能强大,简单说就是支持字体的花样显示。        pc上安装freetype库:1、首先自行下载freetype压缩包,我下载的是freetype-2.4.10.tar.bz22、解压:tar xjf freetype-2...

2018-04-30 00:52:55 5884

原创 ASCII字符点阵和汉字库点阵显示

    字符编码方式有ASCII,GBK和Unicode等,ASCII编码方式用 1 byte来表示一个字符,ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。    GBK码用两个字节表示一个汉字。    Un...

2018-03-28 10:54:08 19290 1

原创 BusyBox制作根文件系统

文件系统的特点:    Linux系统将磁盘、flash等存储设备划分为若干个分区,在不同的分区存放不同类别的文件,与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必须的文件,比如内核映像文件(在嵌入式系统中,内核一般单独存放在一个分区中)、内核启动后运行的第一个程序(init)、给应用户提供操作界面的shell程序、应用程序所依赖的库等。这些必须的、基本的文件合称为根文件系...

2018-03-27 22:56:19 6257

原创 移植linux-3.4.2内核到JZ2440

    移植之前,首先了解一下相关的一些理论知识。    linux内核Makefile文件分类:   1、顶层Makefile:他是所有Makefile文件的核心,从总体上控制着内核的编译、连接。   2、.config文件: 配置文件,它在配置内核时生成。所有Makefile文件(包括顶层目录及各级子目录)都是根据.config来决定使用那些文件。   3、arch/$(ARCH)/Makef...

2018-03-27 10:21:02 1051

原创 移植uboot(支持yaffs2及制作补丁)

支持yaffs2:进入include/configs  smdk2444.h,加上:#define CONFIG_CMD_NAND_YAFFS/drivers/mtd/nand nand_util 修改一处逻辑错误,否则会导致只烧写一页数据:567行:把if(!rval)改为:if(rval)烧写的时候用 nand wirte.yaffs2556行:把ops

2018-01-16 16:01:30 1132 1

原创 移植uboot(易用性修改与uboot裁剪)

易用性修改与裁剪uboot:uboot启动:1、读环境变量2、判断是否有效,有效则使用,无效则使用代码中写死的默认环境变量重启uboot后,会打印:*** Warning - bad CRC, using default environment,读启动参数,格式不对,这说明没有找到环境变量,使用默认的环境变量uboot做一次分区(mtdparts_init()函数,

2018-01-16 15:57:52 1253

原创 移植uboot(支持DM9000)

支持DM9000:根据net下make修改配置文件/include/configs/smdk2440.h:去掉8900相关宏定义,添加:#define CONFIG_DRIVER_DM9000#define CONFIG_DM9000_BASE 0x20000000#define DM9000_IO CONFIG_DM9000_BASE#define DM9000_DATA

2018-01-16 15:48:14 516

原创 移植uboot(支持nand)

复制S3C2410_nand.c为S3C2440_nand.c,修改drivers/mtd/nand/makefile编译S3C2440_nand.c而不编译S3C2410_nand.c添加:COBJS-$(CONFIG_NAND_S3C2440) += s3c2440_nand.osmdk2440.h中:#define CONFIG_NAND_S3C2410#define CON

2018-01-16 15:34:49 664

原创 移植uboot(识别nor flash及重设栈)

识别nor flash:   board.c中board_init_r()有下面代码:puts("Flash: ");...flash_size = flash_init();flash_size = flash_init();是对nor flash的识别,nand 启动的话,根本无法识别nor flash,会导致调用下面代码挂死。puts(failed);hang(); 

2018-01-16 15:08:50 1563

原创 移植uboot到JZ2440的笔记

移植的是u-boot-2012.04.01    下面基本上都是东山老师移植uboot视频的实验笔记,移植中出现的很多问题,下面可能都会有你想要的答案。虽然下面这个笔记对着实验按部就班,没有什么深度,但我觉得很有用,解决问题的过程中,不懂的地方也就懂了,实践是学习的好方法,既检验理论知识,遇到问题又促进思考,互相作用,效果很好。uboot配置、编译:两条命令搞定:1

2018-01-16 14:54:19 1699

原创 自己写个一简单的bootloader

步骤:1、关看门狗2、设置栈,调用C函数进行其他初始化,但从定位代码前的代码,必须保证位置无关性。3、初始化时钟4、初始化存储控制器,以使用SDRAM5、设置存储控制器后,SDRAM可用了,重新设置栈指向SDRAM最高处。6、初始化串口7、初始化nand flash8、重定位代码9、清楚bss段 //参考uboot源码    //步骤123456789都可以

2018-01-14 21:06:44 1378

原创 uboot命令实现

command.h中:#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \ cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name,

2018-01-09 23:11:38 881

原创 U-boot启动内核流程的详细分析

U-Boot属于两阶段的Bootloader。第一阶段的文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S,前一文件是平台相关的,后一文件是开发板相关的。Uboot第一阶段分析:1、硬件设备的初始化:将cpu的工作模式设置为管理模式,关闭WATCHDOG,设置FCLK,HCLK,PCLK的比例,关闭mmu,cache.

2018-01-09 22:13:04 1531

armPay源码.zip

支付宝当面付个人支付接口完整项目代码,含非常详细的使用说明,只需配置几个参数即可正常运行起来,即使是不懂代码的小白也能轻轻松松拥有属于自己的支付接口。

2020-06-08

用HZK16实现电子书

这是我用HZK16实现的电子书,是对我前面freetype实现电子书的代码做了点修改实现的,供大家学习用。

2018-05-09

freetype实现电子书

我用freetype实现的电子书,功能简单,只能上下翻页,供学习用。

2018-05-08

移植uboot到JZ2440的笔记

100ask 移植uboot部分的视频笔记,我对移植过程中出现的问题的解决方法做了比较详细的记录。

2018-04-20

Android API

Android API大全

2017-08-13

深入理解Android 卷1

android 学习资源

2017-08-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除