Linux NFS启动慢的问题 开机加速 Redhat更改计算机名 嵌入式linux读写io端口驱动函数

Linux NFS启动慢的问题
Redhat在VMWare虚拟机启动的时候,在启动NFS服务时候停留很长时间,原因及解决方法如下:
因为每次客户端mount过NFS而又没有正常umount后,在/var/lib/nfs/rmtab里会留下记录,每次NFS启动的时候都会去check以前的IP,如果不通,要等到timeout才行。cat rmtab看一下,很多用过的IP都在里面记着,难怪慢的象蜗牛一样!清空了后试了一下,速度就快起来了。
Linux更改计算机名
do as the following steps:
1)open a shell, tpye the command below:
[root@kcn-110]#hostname kcn-110mw
2)edit the file:/etc/sysconfig/network, change the value of 'HOSTNAME':
[root@kcn-110]#vi /etc/sysconfig/network
=======================================================================
NETWORKING=yes
HOSTNAME=kcn-110mw
=======================================================================
3)edit the file:/etc/hosts, change the ip address and your hostname
[root@kcn-110]#vi /etc/hosts
=======================================================================
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 localhost.localdomain localhost
192.168.0.110 kcn-110mw kcn-110mw
Linux驱动 读写IO端口
在Arm ,Linux里面,全部都会做phy->virt的映射。映射方式中的一种是静态映射,ioremap是动态映射。在静态映射之后,仍然可以通过ioremap动态映射,也 就是一个IO物理地址可以映射到多个虚拟地址。
(1)关于IO与内存空间:
在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、 out指令格式为:
IN 累加器, {端口号│DX}
OUT {端口号│DX},累加器
目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在内存空间。内存空间可以直接通过地址、指针来访问,程序和程序运行中使用的 变量和其他数据都存在于内存空间中。 即便是在X86处理器中,虽然提供了I/O空间,如果由我们自己设计电路板,外设仍然可以只挂接在内存空间。此时,CPU可以像访问一个内存单元那样访问外设 I/O端口,而不需要设立专门的I/O指令。因此,内存空间是必须的,而I/O空间是可选的。
(2)inb和outb:
在Linux设备驱动中,宜使用Linux内核提供的函数来访问定位于I/O空间的端口,这些函数包括:
· 读写字节端口(8位宽)
unsigned inb(unsigned port);
void outb(unsigned char byte, unsigned port);
· 读写字端口(16位宽)
unsigned inw(unsigned port);
void outw(unsigned short word, unsigned port);
· 读写长字端口(32位宽)
unsigned inl(unsigned port);
void outl(unsigned longword, unsigned port);
· 读写一串字节
void insb(unsigned port, void *addr, unsigned long count);
void outsb(unsigned port, void *addr, unsigned long count);
· insb()从端口port开始读count个字节端口,并将读取结果写入addr指向的内存;outsb()将addr指向的内存的count个字节连续地写入port开始的端口。
· 读写一串字
void insw(unsigned port, void *addr, unsigned long count);
void outsw(unsigned port, void *addr, unsigned long count);
· 读写一串长字
void insl(unsigned port, void *addr, unsigned long count);
void outsl(unsigned port, void *addr, unsigned long count);
上述各函数中I/O端口号port的类型高度依赖于具体的硬件平台,因此,只是写出了unsigned。
(3)readb和writeb:
在设备的物理地址被映射到虚拟地址之后,尽管可以直接通过指针访问这些地址,但是工程师宜使用Linux内核的如下一组函数来完成设备内存映射的虚拟地址的读 写,这些函数包括:
· 读I/O内存
unsigned int ioread8(void *addr);
unsigned int ioread16(void *addr);
unsigned int ioread32(void *addr);
与上述函数对应的较早版本的函数为(这些函数在Linux 2.6中仍然被支持):
unsigned readb(address);
unsigned readw(address);
unsigned readl(address);
· 写I/O内存
void iowrite8(u8 value, void *addr);
void iowrite16(u16 value, void *addr);
void iowrite32(u32 value, void *addr);
与上述函数对应的较早版本的函数为(这些函数在Linux 2.6中仍然被支持):
void writeb(unsigned value, address);
void writew(unsigned value, address);
void writel(unsigned value, address);


发表于:2012-08-12 05:10:11

原文链接(转载请保留): http://www.multisilicon.com/blog/a30171823.html

友情链接: MICROIC
首页