http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/
发布时间:2012-12-17 18:53:17
1,rpm redhat 上安装 rpm 文件: #rpm -ivh libXX 2. Ubuntu 11.10下如何设置主机名 主机名存放在/etc/hostname中 ,sudo gedit /etc/hostna......【阅读全文】
发布时间:2012-12-17 15:18:04
先准备好两个镜像文件rhel-server-6.0-x86_64-boot.isorhel-server-6.0-x86_64-dvd.iso6.0中已经没有images\boot.iso这个文件了,而是直接提供了一个镜像。而5.5的应该还是用这个镜像来引导。第一步制作启动U盘:这个跟网上说的差不多,用UltraISO打开rhel-server-6.0-x86_64-boot.iso,然后点击启动光盘->写入硬盘镜像,选择硬盘驱动器为U盘。写入方式为:usb-hdd+->最后点击“写入”,提示刻录完成。第二步提取rhel-server-6.0-x86_64-dvd.iso中的ima......【阅读全文】
发布时间:2012-12-17 15:16:24
今天用U盘安装Redhat Linux6.0 的时候报错"#1 缺少iso9600图像".经过上网查资料和自己的实验总算是搞明白了. 用U盘安装缺少iso9600的原因是:iso9600 是光盘的文件格式,在Redhat Linux6.0和fedora14 中用了新的文件格式,把iso镜像文件写入U盘中不支持这种新的文件格式. 其解决办法是:用UlsterISO把iso镜像文件写入U盘后再把整个Iso镜像文件都考入到U盘中去.......【阅读全文】
发布时间:2012-12-17 11:11:52
内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都是可用的,所以要实现的是设备驱动程序而不是事件驱动程序。设备驱动程序可以利用一个已经存在的,合适的事件......【阅读全文】
发布时间:2012-12-14 18:32:53
七:evdev概述 Evdev对应的设备节点一般位于/dev/input/event0 ~ /dev/input/event4.理论上可以对应32个设备节点.分别代表被handler匹配的32个input device.可以用cat /dev/input/event0.然后移动鼠标或者键盘按键就会有数据输出(两者之间只能选一.因为一个设备文件只能关能一个输入设备).还可以往这个文件里写数据,使其产生特定的事件.这个过程我们之后再详细分析.为了分析这一过程,必须从input子系统的初始化说起. 八:input子系统的初始化Input子系......【阅读全文】
发布时间:2012-12-14 18:29:11
七:evdev概述 Evdev对应的设备节点一般位于/dev/input/event0 ~ /dev/input/event4.理论上可以对应32个设备节点.分别代表被handler匹配的32个input device.可以用cat /dev/input/event0.然后移动鼠标或者键盘按键就会有数据输出(两者之间只能选一.因为一个设备文件只能关能一个输入设备).还可以往这个文件里写数据,使其产生特定的事件.这个过程我们之后再详细分析.为了分析这一过程,必须从input子系统的初始化说起. 八:input子系统的初始化Input子系......【阅读全文】
发布时间:2012-12-14 18:25:38
一,前言:1, 近日要写一个很特殊的键盘驱动,故对linux的input子系统分析了一番,写下分析笔记,以防不日即忘。2, 使用input子系统的一般流程为:input_allocate_device()申请一个input_dev设备――>初始化该 input_dev――>input_register_device()向子系统注册该设备――>中断时input_event()向子系 统报告事件。此流程一目了然,即使不看input子系统,我们按照它给出的一般流程也可以把自己写的IO驱动加入到input子系统里去,但 input_event()提交完数......【阅读全文】
发布时间:2012-12-14 18:19:50
内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就 是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底 层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都 是可用的,所以要实现的是设备驱动程序而不是事件驱动程序......【阅读全文】
发布时间:2012-12-14 18:17:23
内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就 是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底 层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都 是可用的,所以要实现的是设备驱动程序而不是事件驱动程序......【阅读全文】
发布时间:2012-12-14 18:13:55
最近看到linux的设备驱动模型,关于Kobject、 Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞 s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用。但从来就没有想过具体的驱动注册并调用probe的过程。于是打开SourceInsight追踪了一下:从driver_register看起:in......【阅读全文】
发布时间:2012-12-14 18:12:39
1、I/O 端口和 I/O 内存每个外设都是通过读写其寄存器来控制的。通常一个设备有几个寄存器,它们位于内存地址空间或者I/O地址空间,并且地址是连续的。在硬件层上,内存区和I/O区域没有概念上的区别: 它们都是通过在地址总线和控制总线上发出电信号来存取(即,读写信号),并且通过数据总线来读写数据。在一些CPU制造商在其芯片上实现了一个单地址空间(统一编址)的同时,其它的CPU制造商认为外设不同于内存,应该有一个独立的地址空间给外设(单独编址),其生产处理器(特别是x86家族)的I/O端口有自己的读写信号线和特殊的CPU指令来存取端口。因为外设要与外设总......【阅读全文】
发布时间:2012-12-14 18:09:15
1、I/O 端口和 I/O 内存每个外设都是通过读写其寄存器来控制的。通常一个设备有几个寄存器,它们位于内存地址空间或者I/O地址空间,并且地址是连续的。在硬件层上,内存区和I/O区域没有概念上的区别: 它们都是通过在地址总线和控制总线上发出电信号来存取(即,读写信号),并且通过数据总线来读写数据。在一些CPU制造商在其芯片上实现了一个单地址空间(统一编址)的同时,其它的CPU制造商认为外设不同于内存,应该有一个独立的地址空间给外设(单独编址),其生产处理器(特别是x86家族)的I/O端口有自己的读写信号线和特殊的CPU指令来存取端口。因为外设要与外设总......【阅读全文】
发布时间:2012-12-14 18:08:16
一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、 并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘, 显示器……对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个......【阅读全文】
发布时间:2012-12-14 16:42:18
看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事:Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的函数不使用的C++的名字修饰,而是用C的The following code shows a header file which can be used by C and C++client applications:// MyCFu......【阅读全文】
发布时间:2012-12-14 16:40:59
如果直接操作结构体成员是不会取到不期望的值 但是对于要求连续数据格式的时候需要考虑对齐的问题 例如通讯中的数据帧格式等 ,如 ip数据包等#pragma pack(1) struct tagStruct { ... } t; #pragma pack() 的方式来强制连续存放 其中前面 pack(1) 是指对齐边界为 11。几个结构体例子:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( ......【阅读全文】
发布时间:2012-12-14 16:38:47
/*creat a bittree*/#include "stdlib.h"#include "stdio.h"typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode, *BiTree;BiTNode* getnode(){ BiTNode* p; p = (BiTNode*)m......【阅读全文】
发布时间:2012-12-14 16:36:57
测试代码:#include <stdio.h>int main(void){ int n = 0; int i = 0; &nbs......【阅读全文】
发布时间:2012-12-14 16:25:16
预编译(预处理)就是在正式编译之前的,为正式编译做准备,处理以#开头的指令。1, 在看linux内核代码时会看到某些结构体的定义中包含宏定义:12345678910111213struct i2c_msg { __u16 addr; /* slave address */  ......【阅读全文】
发布时间:2012-12-14 16:23:40
要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 编译器在编译时是以c文件为单位进行的,也就是说如果你的项目中一个c文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目 标文件进行函数与变量的重定位,生成最终的可执行文件,在P......【阅读全文】
发布时间:2012-12-14 16:19:40
1)Xmodem (2012.03.30)1.通过单片机显示器把运行的流程显示出来(问题:延时??)2)keil c51 是提示“auto segment too large”可能是数组之类的定义的所在段超出范围了,可以通过定义时 添加“code”或“xdata”等解决3)串口调试,可用软件“CommMonitor串口监控”软件,可以显示出PC和单片机相互发送的数据4)通过超级终端运行rt_thread 程序时,如果显示不正常,可以尝试设置 停止位 为 2 位5)rt_thread&n......【阅读全文】
发布时间:2012-12-14 16:11:41
1,Linux 内存管理 在 linux 系统中,进程的 4GB 内存空间被分为两个部分------用户空间与内核空间。用户空间地址一般分布为 0 ~ 3GB,这样剩下的 3 ~ 4GB为内核空间,用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间虚拟地址。用户进程只有通过系统调用(代表用户进程在内核态执行)等方式才可以访问到内核空间。  ......【阅读全文】
发布时间:2012-12-14 10:04:03
前几天一个同事问我:如果一个模块要调用另一个模块的函数,要不要做什么特别的处理?我当时只是知道需要将被调用的函数EXPORT_SYMBOL();。但是由于具体的模块实验自己还没有做过,我就立马做了一个给他看,自己也验证一下。这实验一做,问题就来了:虽然在编译通过了(有警告:WARNING: "exported_function_2" [/home/tekkaman/development/research/Linux_module/caller/caller.ko] undefined!),但是当把导出函数的模块挂载后,再挂载调用模块的时候出了错误无法挂载:# in......【阅读全文】
发布时间:2012-12-13 11:47:32
异常体系比较复杂,但是linux已经准备了很多的函数和框架,但是因为中断是和具体的开发板相关,所以中断需要我们自己来处理一些方面,但是这也是很少的一部分,很多公用的处理函数内核已经实现,linux内核搭建了一个非常容易扩充的中断处理体系。 中 断系统结构涉及的方面很多,而且分布在很多的函数中,这里我主要理清一些结构和流程顺序已经在哪些函数中实现,我不知道其他人怎么样?但是我自己一开始怎 是找不到linux内核是怎么把GPIO设置成中断的,我找了很久都找不到,还有我们很多的设置,初始化等等东西好像都没有实现,清除中断寄存器也不知道 是怎么实现的,只是知道使用中断,差不多用request......【阅读全文】