嵌入式linux和uboot中关于读写寄存器的函数(__raw_writel, writel等)
2012-07-26 17:40
489 查看
uboot中是这么定义的:
u-boot_2.3.5/arch/arm/include/asm/io.h
/*
* Generic virtual read/write. Note that we don't support half-word
* read/writes. We define __arch_*[bl] here, and leave __arch_*w
* to the architecture specific code.
*/
#define __arch_getb(a) (*(volatile unsigned char *)(a))
#define __arch_getw(a) (*(volatile unsigned short *)(a))
#define __arch_getl(a) (*(volatile unsigned int *)(a)) //就是把值通过指针读出来
#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))
#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) //写入v
#define __raw_writeb(v,a) __arch_putb(v,a)
#define __raw_writew(v,a) __arch_putw(v,a)
#define __raw_writel(v,a) __arch_putl(v,a)
#define __raw_readb(a) __arch_getb(a)
#define __raw_readw(a) __arch_getw(a)
#define __raw_readl(a) __arch_getl(a)
#define writeb(v,a) __arch_putb(v,a)
#define writew(v,a) __arch_putw(v,a)
#define writel(v,a) __arch_putl(v,a) //好像与“__raw_writel” 没有什么区别
#define readb(a) __arch_getb(a)
#define readw(a) __arch_getw(a)
#define readl(a) __arch_getl(a)
u-boot_2.3.5/arch/arm/include/asm/io.h
/*
* Generic virtual read/write. Note that we don't support half-word
* read/writes. We define __arch_*[bl] here, and leave __arch_*w
* to the architecture specific code.
*/
#define __arch_getb(a) (*(volatile unsigned char *)(a))
#define __arch_getw(a) (*(volatile unsigned short *)(a))
#define __arch_getl(a) (*(volatile unsigned int *)(a)) //就是把值通过指针读出来
#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))
#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) //写入v
#define __raw_writeb(v,a) __arch_putb(v,a)
#define __raw_writew(v,a) __arch_putw(v,a)
#define __raw_writel(v,a) __arch_putl(v,a)
#define __raw_readb(a) __arch_getb(a)
#define __raw_readw(a) __arch_getw(a)
#define __raw_readl(a) __arch_getl(a)
#define writeb(v,a) __arch_putb(v,a)
#define writew(v,a) __arch_putw(v,a)
#define writel(v,a) __arch_putl(v,a) //好像与“__raw_writel” 没有什么区别
#define readb(a) __arch_getb(a)
#define readw(a) __arch_getw(a)
#define readl(a) __arch_getl(a)
相关文章推荐
- linux中readl()和writel()函数---用于读写寄存器
- linux内核的水很深,分享一下关于__raw_writel()出错的问题
- 【基于EDK的嵌入式系统】 关于Xilinx EDK添加自定义IP核到PLB总线后linux无法boot的问题
- 嵌入式linux开发uboot移植(三)——uboot启动过程源码分析
- 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南七——MiniGUI 1.1.0 引入的新 GDI 功能和函数之二
- Linux socket 完整的读写函数
- linux中readl()和writel()函数
- 嵌入式linux(Uboot)
- LINUX网络编程-完整的读写函数
- Linux下读写芯片的I2C寄存器
- 在linux中关于cpu的函数
- 关于数据库读写函数
- 关于linux下system()函数的总结
- 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)
- 关于嵌入式Linux培训课程安排改革的思考
- 嵌入式linux开发uboot移植(四)——uboot启动内核的机制
- 作业疑点:关于Linux下数学函数math.h无法编译问题
- python open函数关于w+ r+ 读写操作的理解
- 关于新手学习嵌入式linux
- 嵌入式Linux学习:u-boot源码分析(1)--AM335X系列的2014.10版