`
ackerman
  • 浏览: 72868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
http://www.go4pro.org/article/23
#include <stdio.h> #include <stdlib.h> typedef struct { int id; char name[20]; }Item; typedef struct node { Item data; struct node *next; }Node, *List; void initList(List *l) { *l = (List)malloc(sizeof(Node)); (*l) -> next = NULL; } void addFromHead(List *l, It ...
(1) 因为外设和外围总线相匹配,而最流行的I/O总线是基于个人计算机模型的,所以即使没有独立IO端口地址空间的处理器,在访问外设时也要模拟成读写I/O端口。基于同样的原因,linux在所有的计算机平台上都实现了I/O端口,并且为了便于移植,内核对驱动程序隐藏了这些细节。 (2) IO端口重映射是将IO端口映射为IO内存,这样就可以象操作IO内存一样操作IO端口了。这样做的好处是我们可以统一驱动程序的接口(都使用IO内存映射),避免为同一个设备提 供不同的驱动接口。这个函数同样定义在头文件中 extern void __iomem *ioport_map(unsigned lo ...
序言:前面我们提到,设备驱动程序的主要功能操作设备,更准确的说就是如何操作设备寄存器或设备内存。不同的计算机体系结构提供了不同的设备操作接口,主要就是 IO端口映射(Ports)或IO内存映射(Memory-Map )。例如X86平台,它对设备的访问就同时提供了IO端口映射方式或IO内存映射方式,这个在大学的汇编语言课程里有详细的介绍,当然还有一些平台紧提供 IO内存映射。IO端口映射方式是CPU提供了独立的地址空间给设备IO,并且使用特定的汇编指令操作IO端口。IO内存映射方式提供了统一的内存编址方 式来访问设备IO,就像你访问系统内存一样。通常对于一个给定的硬件平台电路板,它的设备寄存器或内 ...
一、外设的访问 几乎每一种外部设备都是通过读写设备上的寄存器来进行访问的,这些寄存器分为控制寄存器、状态寄存器和数据寄存器,而且一个外设的寄存器通常被连续编址。外部寄存器也成为"I/O端口"。 二、外设 ...
#include <iostream> const int SIZE = 5; int sum_arr(int p[],int size); int main() { int sum; int arr[SIZE] = {1,2,3,4,5}; std::cout << "sizeof (arr)=" << sizeof(arr) << ", address=" << arr <<std::endl; ...
http://hi.baidu.com/danforn/blog/item/87a05e66833a5e24ab184ced.html
解决方法: 1、在登录界面中调出Universal Access Preferences面板(登录界面上的小人),勾选第一个选项“Use on-screen keyboard”,重启动。 2、通过屏幕键盘输入密码登入系统,这时键盘就可以使用了。 3、编辑配置文件/etc /default/console-setup 把最后四行改为: XKBMODEL="SKIP" XKBLAYOUT="us" XKBVARIANT="U.S. English" XKBOPTIONS="" 修改为: XK ...
1. #如果已定义KERNELRELEASE,则说明是从内核构造系统调用的 #因此可以利用其内建语句 ifneq ($(KERNELRELEASE),) obj-m := helloworld.o #否则,是直接从命令行调用的, #这时要调用内核构造系统 else # KERNELDIR ?= /lib/modules/$(shell unname -r)/build KERNELDIR ?= /opt/EmbedSky/linux-2.6.30.4 PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M= ...
strlen int strlen( const char *str ) {  assert( strt != NULL );  int len;  while( (*str++) != '\0' )  {   len++;  }  return len; }  strcpy char * strcpy( char *strDest, const char *strSrc ) {  assert( (strDest != NULL) && (strSrc != NULL) );  char *address = strDest;  whil ...
这是一个解析配置文件的小程序,配置文件中只有“key=value”这样的项,面向于简单应用。网上的相关例子都很复杂,而且是可以解析section的,但是有时候配置文件并不需要这么复杂,很可能就几项。这样的文件还有个好处:在shell脚本里source一下,会把key值都设成变量,从而shell也可以操作这个文件。 初学,望指正。 file.h #ifndef FILE_H_ #define FILE_H_ #ifdef __cplusplus extern "C" { #endif #define out //用来表示参数是输出型的 //只有两 ...
#include <stdio.h> #include <string.h> #include <ctype.h> char *strtrimr(char *pstr) { int i; i = strlen(pstr) - 1; while (isspace(pstr[i]) && (i >= 0)) pstr[i--] = '\0'; return pstr; } char *strtriml(char *pstr) { int i = 0,j; j = strlen(pstr) - 1 ...

一个小模板

/* *2010-1.4 */ #include <stdio.h> /*提供标准I/O函数原型*/ #include <stdlib.h> /*提供EXIT_SUCCESS和EXIT_FAILURE*/ #include <unistd.h> /*提供getopt()*/ struct globalArgs_t { char *arg1; char *arg2; char *arg3; }globalArgs; static const char *optString = "a:b:c:h"; ...
1.安装好ubuntu10.04后,升级语言包,自动会把输入法和字体安装好。 2.passwd 修改unix密码,以允许root账户登录。 3.update-grub 以检测硬盘上的xp系统,编辑/boot/grub/grub.cfg改变启动顺序。 4.解决root账户下的声音问题: 修改/etc/default/pulseaudio,修改前两行为 PULSEAUDIO_SYSTEM_START=1 DISALLOW_MODULE_LOADING=0 打开“用户和组”,将root加入组pulse和pulse-acess. 5.linux QQ版本中,压缩包的最好用。 6.MSN ...
--------------------------------------------------------------------------------------------------------------------------------- 目标版:TQ2440,天嵌s3c2440开发板 目标版系统:Linux2.6.30.4,已经整合了alsa驱动。 交叉编译器版本:arm-linux-gcc 4.3.3 开发平台:ubuntu10.04 alsa-lib版本:1.0.22 --------------------------------------------- ...
Global site tag (gtag.js) - Google Analytics