- 浏览: 74994 次
- 性别:
- 来自: 北京
文章列表
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
--------------------------------------------- ...