linux
文章平均质量分 58
bbs598598
这个作者很懒,什么都没留下…
展开
-
移植u-boot-1.3.4到S3C2440
移植u-boot-1.3.4到S3C2440一.预备知识: 1. 首先,U-Boot1.3.4还没有支持s3c2440,移植仍是用2410的文件稍作修改而成的。2. 2440和2410的区别:2440和2410的区别主要是2440的主频更高,增加了摄像头接口和AC‘97音频接口;寄存器方面,除了新增模块的寄存器外,移植所要注意的是NA转载 2016-05-06 16:07:31 · 932 阅读 · 0 评论 -
linux驱动编写之十三(设备模型之sysfs,bus,device,driver源代码分析)
sysfs文件系统存在于内存中,是一个虚拟文件系统,其提供了kobject对象层次的视图,可以让用户以一个简单文件系统的方式来观察系统中的各种设备的拓扑结构,使用属性对象,kobject可以导出文件的方式,将内核变量提供给用户读取或者写入。在2.6内核的系统中,都拥有sysfs文件系统。sysfs将kobject对象与目录项紧密联系,通过kobject结构体中的dentry字段实现的。sy转载 2012-07-01 18:30:40 · 1134 阅读 · 0 评论 -
class_create(),class_device_create()或device_create()自动创建设备文件结点
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_creat转载 2012-07-01 17:26:28 · 669 阅读 · 0 评论 -
超级终端无法输入指令
串行选项中,数据流控制全部不选,为无。原创 2012-06-30 15:54:32 · 11815 阅读 · 0 评论 -
Linux Shell编程基础
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题。只要举一些例子就可以了: alias l='ls -l' ;用 l 代替 ls -l 命令(Xenix 下就有类似的 l 命令)转载 2012-07-01 21:56:30 · 522 阅读 · 0 评论 -
嵌入式Linux启动过程中的问题积累
1.Bad Magic Number ## Booting image at 33000000 ...Bad Magic NumberOMAP5912 OSK # (tftp下载好kernel的uImage后就停止在这,不能启动kernel)问题原因:启动参数设置错误,0x30000000处不可以执行。有的开发板sdram不是在0x33000000,所以不能把kerne转载 2012-07-01 21:09:19 · 675 阅读 · 0 评论 -
secureCRT串口传送文件
传输文件:要用到rz和sz命令,另外,使用putty也可以在提供的小工具psftp中传输,不过,还是推荐一站式解决问题,于是就上网翻一翻,找了些办法总结到这里,您没事儿的时候也可以抽空回回贴,说说更好的办法。因为之前都是用WinSCP上传文件,偶尔用WinSCP下载文件比对。不过SecureCRT下也可以上传和下载,SecureCR下的文件传输协议有ASCII、Xmodem、Zmo转载 2012-06-30 16:31:25 · 22213 阅读 · 0 评论 -
与中断有关的数据结构
1.概述通过前文,我们已经知道了中断通常由上下两部分组成。在上部分,也就是中断处理程序,完成中断请求的响应以及完成那些对时间要求紧迫的工作;而在下部分,通常完成那些被推后的工作,因为这部分工作对时间的要求相对宽松一些。通过了解上下两部分的工作情况,可以更好的理解中断这个概念。从下半部分执行机制来看——不管是tasklet还是工作队列——这些推后的工作总是在上半部分被调用,然后交给内核在适当转载 2012-07-11 20:14:18 · 1500 阅读 · 0 评论 -
fl2440按键中断驱动
#include #include #include #include #include #include #include #include #include #include #include //copy_to_user#include //内核时钟#include //atomic_t#include //转载 2012-07-11 15:56:22 · 634 阅读 · 0 评论 -
转:一个相当详细的MINI2440按键驱动详解
/*mini2440_buttons_my.c*//*后面加了_my*//*按键驱动程序*//*mini2440所用到的按键资源*//**************************************************//* 按键 对应的IO寄存器 对应的中断引脚*//* K1 GPG0转载 2012-07-11 13:42:49 · 944 阅读 · 0 评论 -
红帽子下的防火墙的开启与关闭
从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc/init.d/iptables stop禁止防火墙在系统启动时启动/sbin/chkconfig --level 2345 iptables off重启iptables:/etc/init.d/i转载 2012-06-29 16:19:47 · 6443 阅读 · 0 评论 -
Linux字符设备驱动程序的一个简单示例
一.开发环境:主 机:VMWare--Fedora 9 开发板:友善之臂mini2440--256MB Nandflash 编译器:arm-linux-gcc-4.3.2 二.驱动源码:该源码来源于国嵌的学习资料,是一个很浅显易懂的程序,非常适合初学者,我加上了一些注释。memdev.h#ifndef _MEMDEV_H_#define _MEMDEV_转载 2012-06-28 21:36:47 · 739 阅读 · 0 评论 -
Linux下搭建Telnet和Ftp配置
配置网络配置: netconfig 命令 IP: 192.168.1.199 255.255.255.0 输入netconfig命令后,出现下面对话框,按照提示做即可。 图形界面配置网络第一步:选择小红帽->系统设置->网络,打开网络配置对话框,如下图:第二步:在打转载 2012-06-29 16:19:03 · 1316 阅读 · 0 评论 -
linux中断之中断注册
专业的linux驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux下通过request_irq来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以linux-2.6.34为例,对比老版本进行说明。 request_irq()函数在include/linux/interrupt.h中定义,原型为: static inline int __must_转载 2012-07-11 13:37:46 · 5743 阅读 · 1 评论 -
linux设备驱动程序之简单字符设备驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一转载 2012-06-28 22:04:08 · 1053 阅读 · 0 评论 -
简单linux驱动小例子
我们来写一个最简单的字符设备驱动程序。虽然它什么也不做,但是通过它可以了解Linux的设备驱动程序的工作原理。把下面的C代码输入机器,你就会获得一个真正的设备驱动程序。不过我的kernel是2。0。34,在低版本的kernel上可能会出现问题,我还没测试过。#define __NO_VERSION__#include #include char kernel_vers转载 2012-06-27 21:28:47 · 1153 阅读 · 0 评论 -
我的第一个简单的linux打印输出驱动(文件自动注册有问题)
平台:linux 2.6.28.7#include #include #include #include #include #include #include #include /*#include #include #include #include */static struct class *firstdrv_class;s原创 2012-07-01 20:39:50 · 859 阅读 · 1 评论 -
'/etc/init.d/rcS'启动打不开
'/etc/init.d/rcS' 文件系统中有这个文件啊 怎么报错说没有呢? 用光盘里面的内核镜像就不会出现这个问题 自己移植的内核刷上去就会这样 怎么办啊?以前也移植成功过没出现这个问题啊 已经搞了N天了快崩溃了 急急急补充一下 rcS 以及 init.d 和 etc 目录的权限都是 777原因找到了 是这个选项 choose原创 2012-07-01 20:44:10 · 4736 阅读 · 0 评论 -
poll机制分析(韦东山)
poll机制分析所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。一、内核框架:对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析sys_poll,即可理解p转载 2012-07-12 14:38:30 · 867 阅读 · 0 评论 -
基于ARM的嵌入式Linux移植真实体验(1)――基本概念
http://21cnbao.blog.51cto.com/109393/120254转载 2012-07-30 09:39:52 · 563 阅读 · 0 评论 -
ARM的嵌入式Linux移植体验之BootLoader
BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。尽管如此,我们仍然可转载 2012-07-30 09:36:22 · 1844 阅读 · 0 评论 -
宋宝华谈 ARM 的嵌入式 Linux 移植体验之三:操作系统
在笔者撰写的《C 语言嵌入式系统编程修炼之道》一文中,主要陈诉的软件架构是单任务无操作系统平台的,而本文的侧重点则在于讲述操作系统嵌入的软件架构,二者的区别如下图 嵌入式操作系统并不总是必须的,因为程序完全可以在裸板上运行。尽管如此,但对于复杂的系统,为使其具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处转载 2012-07-30 09:35:05 · 8636 阅读 · 0 评论 -
ARM的嵌入式Linux移植体验之应用实例
应用实例的编写实际上已经不属于Linux操作系统移植的范畴,但是为了保证本系列文章的完整性,这里提供一系列针对嵌入式Linux开发应用程序的实例。 编写Linux应用程序要用到如下工具: (1)编译器:GCC GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]。 我们应该使转载 2012-07-30 09:33:37 · 749 阅读 · 0 评论 -
ARM的嵌入式Linux移植体验之设备驱动
作者:宋宝华 文章来源:天极开发设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: ·设备初始化、释放; ·提供各类设备服务; ·负责内核和设备之间的数据交换; ·检测和处理设备工作过程中出现的错误。 Linux下的设备驱动程序被组织为一组完成不同任务的函数转载 2012-07-30 09:32:38 · 640 阅读 · 0 评论 -
十 ARM9(2440)的IIC——理论知识及程序实例
原文地址:十 ARM9(2440)的IIC——理论知识及程序实例作者:骨Zi里德骄傲概述S3C2440A RISC 微处理器可以支持一个多主控IIC 总线串行接口。一条专用串行数据线(SDA)和一条专用串行时钟线(SCL)传递连接到IIC 总线的总线主控和外设之间的信息。SDA 和SCL 线都为双向的。多主控IIC 总线模式中,多个S3C2440A RISC 微处理器可转载 2012-07-30 09:26:41 · 1649 阅读 · 0 评论 -
ioctl 函数
本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功 -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:套接口操作文件操作接口操作ARP 高速缓存操作路转载 2012-07-18 14:30:28 · 703 阅读 · 0 评论 -
register_chrdev()与register_chrdev_region()
分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下:extern int register_chrdev_region(dev_t,unsigned int,const char*);表示静态的申请和注册设备号extern int alloc_chrdev_region(dev_t,unsigned int,const char*);表示动态的申请和注册设备号e转载 2012-07-18 16:47:13 · 805 阅读 · 0 评论 -
memset函数
需要的头文件 在C中 or 在C++中 void *memset(void *s, int ch, size_t n); 函数解释:将s中前n个字节替换为ch并返回s; memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。常见错误 第一: 搞反了ch 和 n的位转载 2012-07-18 10:51:01 · 563 阅读 · 0 评论 -
嵌入式开发板linux驱动与pc——linux驱动的makefile
1、开发板linux驱动makefileKERN_DIR = /bbs/linux-2.6.28.7all:make -C $(KERN_DIR) M=`pwd` modules clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m += globalmem.o2、p转载 2012-07-17 21:22:24 · 1368 阅读 · 0 评论 -
XP下Virtualbox 虚拟Linux 共享文件夹设置
环境:主机操作系统是Windows XP,虚拟机是VirtualBox,虚拟主机为Linux系统, 1. 安装增强功能包(Guest Additions) 安装好Linux虚拟主机后,运行它并登录。然后在VirtualBox的菜单里选择"设备(Devices)" -> "安装增强功能包(Install Guest Addi转载 2012-07-17 15:46:18 · 1159 阅读 · 0 评论 -
自旋锁
一种广泛应用的同步技术是加锁。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把”锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁上。如果内核控制路径希望访问资源,就试图获取钥匙”打开门”。当且仅当资源空闲时,它才能成功。然后,只要它还想使用这个资源。门就依然锁着。当内核控制路径释放了锁时,门就打开,另一个内核控制路径就可以进入房间。图5转载 2012-07-16 10:54:06 · 2995 阅读 · 0 评论 -
异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasyncxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信转载 2012-07-14 09:23:07 · 1361 阅读 · 0 评论 -
详细注释FL2440按键中断驱动(含poll机制),测试成功
平台:FL2440 内核版本linux 2.6.28效果:没有按键时,程序进入休眠,每5秒打印超时信息。按键时响应中断,并输出是按下还是松开。转载注明:http://blog.csdn.net/bbs598598/article/details/7742052#include /*模块有关的*/#include /*内核有关的*/#include /*文件系统有关的*/原创 2012-07-12 22:23:52 · 2094 阅读 · 0 评论 -
异步通知
异步通知意味着设备可以通知应用程序自身可被访问,实现了异步IO。 在ldd3中给出了设备驱动实现异步信号的详细操作顺序:1.当发出 F_SETOWN,什么都没发生,除了一个值被赋值给 filp->f_owner.2.当 F_SETFL 被执行来打开FASYNC, 驱动的 fasync方法被调用.这个方法被调用无论何时 FASYNC的值在 filp->f_fla转载 2012-07-13 09:52:08 · 586 阅读 · 0 评论 -
linux内核移植-移植2.6.35.4内核到s3c2440
硬件平台:FL2440主机平台:Ubuntu 11.04交叉编译器:arm-linux-gcc 4.3.2原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/6604616本来是想移植最新的内核2.6.39但是总是在编译快完成的时候报错,有人说是新的内核对arm平台的支持不好,所以就降低了一下版本,这转载 2012-06-26 19:48:08 · 611 阅读 · 0 评论 -
cdev结构
在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构,在写驱动时,转载 2012-07-07 15:47:15 · 750 阅读 · 0 评论 -
udev轻松上路 (做2.6移植的朋友不要错过:)
第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单! 嵌入式的udev应用尤其简单。 第二、为什么udev要取代devfs? 这是生产关系适应生产力的需要,udev好,devfs坏,用好的转载 2012-07-07 16:31:13 · 2073 阅读 · 0 评论 -
读写INI文件
INI文件的格式与windows的完全一样#include //写INI文件 /* 第一个参数为的test.ini为文件名称,www为section,qwe为ident 第二个参数为值 它们之间用=分割,则会在程序当前目录生成INI文件 据说用/分割会在 ~/.gnome或~/.gnome_private目录下生成INI文转载 2012-05-04 10:40:25 · 2882 阅读 · 0 评论 -
linux写日志文件
/****************************************************************函数说明 :获取当前系统时间入口参数 :返回类型 :fmt 0-返回:yyyy-mm-dd hh24:mi:ss 1-返回:yyyy-mm-dd 2-返回:hh24:mi:ss初始时间 :2012-5-2 Lebaish转载 2012-05-04 10:46:06 · 1181 阅读 · 0 评论 -
linux下 c中怎么让才能安全关闭线程
多线程退出有三种方式:(1)执行完成后隐式退出;(2)由线程本身显示调用pthread_exit 函数退出; pthread_exit (void * retval) ; (3)被其他线程用pthread_cance函数终止: pthread_cance (pthread_t thread) ; 用event来实现。在子线程中,在转载 2012-05-05 10:05:32 · 11942 阅读 · 0 评论