自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨正的专栏

嵌入式软件开发

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

转载 Linux Platform驱动程序框架解析

1.platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问

2013-12-31 15:45:17 775

转载 Linux驱动 container_of

在学习Linux驱动的过程中,遇到一个很好玩的内核函数,准确的说是一个很好玩的宏,叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:439/**440 * container_of - cast a member of a structure out to the containing structure441 * @ptr: th

2013-12-30 20:41:28 699

转载 C的|、||、&、&&、异或、~、!运算

位运算    位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有:    &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。    其中,按位取反运算符是单目运算符,其余均为双目运算符。    位运算符的优先级从高到低,依次为~、&、^、|,    其中

2013-12-30 19:44:29 665

转载 GPIO驱动相关笔记

打算跟着友善之臂的《mini2440 linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的定义,并对驱动加以验证 ***************************************

2013-12-30 10:59:42 877

转载 __FILE__,__LINE__,FUNCTION__实现代码跟踪调试

先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H         #define GLOBAL_H         #include          int funca(void);         int funcb(v

2013-12-30 10:48:09 691

原创 LED 驱动程序

一、开发环境软件开发环境:linux-3.0硬件开发环境:fl2440开发板日期:2013.12.28二、驱动程序1.注册主次设备号2.注册驱动程序3.led硬件初始化,配置相应寄存器4.释放资源/*******************************************************************************

2013-12-28 20:37:08 1121

原创 FL2440 ADC 数据采样

一、开发环境软件开发环境:linux-3.0硬件开发环境:fl2440开发板日期:2013.12.22二、这个ADC驱动程序虽然很简单,但是我在写的时候费了很多时间,因为一开始我用中断来读数据,然而AD的中断号跟LCD的中断号共用了,用了共享中断,还是没能解决,由于能力有限,就没有用中断。下面是我写的ADC驱动的代码:/*************************

2013-12-28 20:23:36 939

转载 消灭编译警告(Warning)

如何看待编译警告当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息。警告信息可能意味着程序中隐含的大错误,也可能确实没有问题。对于警告的正确处理方式应该是:尽可能地消除之。对于编译程序给出的每个警告都应该仔细分析,看看是否真的有问题。只有那些确实无问题的警告才能放下不管。说明:由于编译的警告各种各样,根本不可以一一罗列出来,下面只是列举出比较典型的一些警告

2013-12-19 20:42:24 1749

转载 linux字符设备驱动实例

//#globalvar.c#include //模块所需的大量符号和函数定义#include //指定初始化和清楚函数#include //文件系统相关的函数和头文件#include //cdev 结构的头文件#include //在内核和用户空间中移动数据的函数MODULE_LICENSE("GPL"); //指定代码使用的许可证//文件操作函数的声明

2013-12-19 20:40:39 1408

转载 vim 正则表达式整理

元字符含义.匹配任意一个字符[abc]匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字。[^abc]在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。/d匹配阿拉伯

2013-12-18 16:55:15 618

转载 source insight快捷键及使用技巧

退出程序                             : Alt+F4重画屏幕                             : Ctrl+Alt+Space完成语法                             : Ctrl+E复制一行                             : Ctrl+K恰好复制该位置右边的该行的字符     

2013-12-18 15:42:28 630

转载 yaffs2文件系统的制作及移植

【环境】1:Ubuntu 10.102:u-boot-2010.033:优龙FS24104:交叉编译器:arm-none-linux-gnueabi-gcc version 4.3.2第一步:在内核里添加yaffs2的支持1)下载源码tony@Ubuntu:~/ win$ sudo apt-get install gitt

2013-12-18 10:52:55 1129

转载 u-boot移植到2440

第1页:编译第2页:移植在RAM中运行第3页:DM9000网卡驱动移植第4页:支持nand flash启动第5页:yaffs2文件系统移植第6页:支持内核引导第1页:编译2010年初曾经将uboot 2009.11.1移植到我们自己做的一块2440单板上,该单板具有64M SDRAM

2013-12-18 10:51:22 1403

转载 U-Boot第一阶段代码

1. 了解u-boot主要的目录结构和启动流程,如下图。   u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;     u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。    各个部分的流程图如下: U-Boot启动第一阶段代码分析

2013-12-18 10:38:37 1024

转载 U-Boot启动第二阶段代码

U-Boot第一阶段的启动流程。(nandflash启动,把nand的4k代码考到sram中,因为nand没址线,不能映射到内存,所以通过sram进行过度,sram中4k代码把整个uboot拷贝到sdram上,初始化好堆栈,为c语言提供条件,进入uboot的第二阶段! )这个阶段主要是初始化硬件设备,为加载U-Boot的第二阶段代码准备RAM空间最后跳转到lib_arm/board.c中start

2013-12-18 10:35:54 1823

转载 任务调度与上下切换

1. 任务调度概述:    任务调度(schedulers)是内核的主要职责,实际上它就是一个法官,决定当前由哪个任务占用CPU,多数实时内核都是基于优先级调度算法的,每个任务根据其重要程度的不同被赋予一定的优先级。基于此算法,CPU总是让处于就绪而且优先级最高的任务优先运行,然而何时高优先级任务能够得到CPU使用权,由内核的类型而定。基于优先级的内核有两种:不可抢占型和抢占型。1)

2013-12-18 09:50:31 1113

转载 wake_up_interruptible 函数

功能:唤醒注册到等待队列上的进程原型:    #include    void wake_up_interruptible (wait_queue_head_t *q);说明:    唤醒 q 指定的注册在等待队列上的进程。该函数不能直接的立即唤醒进程,而是由调度程序转换上下文,调整为可运行状态。变量:q :  等待队列变量指针。  

2013-12-18 09:49:56 21720 1

转载 内核request_mem_region 和 ioremap的理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:  (1)I/O映射方式(I/O-mapped)  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令

2013-12-17 15:48:40 673

原创 应用程序与驱动程序是如何发生关联的

一般驱动函数通过file_operations这个结构体预留出外部接口(这种接口一般包括read,write,open,ioctl等),只有当驱动程序中预留了这种供外部访问的接口,用户程序才能访问驱动程序,即read,write,open,ioctl。也就是通过该结构把系统调用和驱动程序相关联起来的;当应用程序向系统审请要对相应硬件进行I/O操作时,即read,write,open,ioctl。系

2013-12-17 11:45:08 2108

原创 ntsysv的操作方法

ntsysv:类图形界面管理模式来设置开机启动。(RedHat特有的,基本上chkconfig就很好用了。)总结一下功能按钮:上下键:可以在中间的方框当中,在各个服务之间移动;空格键:可以用来选择你所需要的服务,[*]表示开起启动;tab键:可以在方框、OK、Cancel之间移动;[F1]键:可以显示该服务的说明。

2013-12-17 09:56:54 2494

原创 writel()和readl()函数的作用

writel() 往内存映射的 I/O 空间上写数据,wirtel() I/O 上写入 32 位数据 (4字节)。 原型:#include void writel (unsigned char data , unsigned short addr )readl() 从内存映射的 I/O 空间读取数据,readl 从 I/O 读取 32 位数据 ( 4 字节 )。原型:#inclu

2013-12-16 15:06:16 5036

转载 ADC驱动在FL2440的开发

一、开发环境    主   机:fedora 14 (2.6.33.7)    开发板:FL2440(nandflash:K9F1G08 128m)    编译器:arm-linux-gcc 4.3.2 二、原理分析    1. S3C2440内部ADC结构图。我们从下面的结构图和数据手册可以知道,该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN

2013-12-15 21:29:29 1105

转载 Linux设备驱动Hello World程序介绍

本文由赵锟翻译,转载于“酷壳”:http://cocre.com/?p=566  by Valerie Henson07/05/2007(译者注:本文的例子是只能在linux的2.6内核下使用的,2.6以上的内核,译者没有做过实验,2.4是要修改make文件才能运行。)本文的出处:这里自古以来,学习一门新编程语言的第一步就是写一个打印“hello

2013-12-15 19:07:12 633

转载 我是怎么招聘程序员的

很早以前就想写一篇和面试相关的文章了,今天在网络上看到一篇关于如何去面试程序员的英文文章,发现其中有很多和我共鸣的东西,所以仿照其标题通过自己的经历写下了这篇文章。工作这么多年来,即被面试过,也面试过他人,对于程序员的面试,经历过很不错的面试,很专业的面试,也经历过一些BT和令人不爽的面试,我个人觉得一个好的面试,面试官是很重要的,所以,本文想从“面试官”的角度来阐述一下。于是,有了下面这

2013-12-15 19:04:54 570

转载 用GDB调试程序

GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:    1、启动你的程序,可

2013-12-15 19:01:48 676

转载 再谈我是怎么招聘程序员的

(请勿用于商业用途,转载时请注明作者和出处) 来自:酷壳 http://coolshell.cn原文:http://coolshell.cn/articles/4506.html, http://coolshell.cn/articles/4490.html   我以前写过一篇“我是怎么招聘程序员的”的文章(在CSDN那里有很多人进行了回

2013-12-15 18:59:58 740

转载 其实Unix很简单

陈皓 很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大多数时候,我发现问这些问题的朋友都有两个特点:1)对Unix有畏难心理,对其没有信心;2)喜欢用拿Windows来和Unix做比较。 这两种特点就像两个“心理暗示”,暗示着自己Unix很不好学,暗示着Unix很糟糕,不如Windows

2013-12-15 18:48:09 749

转载 十条不错的编程观点

酷壳:http://CoolShell.cn 原文:http://coolshell.cn/?p=2424 在Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及千把个子回贴中,好像并不是

2013-12-15 18:46:13 495

原创 /usr/bin/ld: cannot find -lc 解决

这已经是N+1次出现这个问题了:[guowenxue@centos6 mtd-utils-1.4.9]$ make  CHK     include/version.h  LD      ftl_format/usr/bin/ld: cannot find -lccollect2: ld returned 1 exit statusmake:

2013-12-13 15:27:08 2573

转载 关于报错“syntax error near unexpected token `”和回车换行

本来是很简单一个事情,转过来是因为打字机这事比较有趣……http://blog.csdn.net/xyp84/archive/2009/08/11/4435899.aspx 摘要一下: 回车换行0D0ACarriage ReturnLine Feed

2013-12-13 14:52:53 1967

原创 解决在用wget命令下载时出现“the host is unknow”的问题

发现提示the host isunknow,可以断定是DNS的设置有问题。解决这类错误,可以修改/etc/resolv.conf,找到nameserver项修改成下面的,没有的话添加下面的nameserver 4.2.2.2nameserver 8.8.8.8nameserver 202.103.24.68如何没有这个文件,就自己vim写个进入。

2013-12-13 09:59:31 2796

浅谈gui框架

描述gui框架,认识gui,是gui初学者难得一见的好文档,文档主要讲解了整个gui的设计流程,以及一些思路

2014-08-25

Mplayer的移植

移植mplayer到arm9上的详细过程

2014-08-13

空空如也

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

TA关注的人

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