当前位置: 技术问答>linux和unix
LINUX下如何访问硬件内存地址
来源: 互联网 发布时间:2016-08-15
本文导语: 在LINUX下如何访问一个硬件的内存数据?(不是写驱动程序,我只需要读写一个指定的内存地址就行) 例如:串口1的内存地址0x400, 串口2的内存地址0x402,USB的内存地址:0xD03C0000 看了书上介绍的,用ioremap映射,然后用ioreadx读取...
在LINUX下如何访问一个硬件的内存数据?(不是写驱动程序,我只需要读写一个指定的内存地址就行)
例如:串口1的内存地址0x400, 串口2的内存地址0x402,USB的内存地址:0xD03C0000
看了书上介绍的,用ioremap映射,然后用ioreadx读取即可,但我在编译的时候提示未定义这两个函数.
这两个函数的头文件,书上介绍的是在asm/io.h里面,但我的asm/ 没有这个文件.只有sys/才有这个文件,但也没定义这两个函数
例如:串口1的内存地址0x400, 串口2的内存地址0x402,USB的内存地址:0xD03C0000
看了书上介绍的,用ioremap映射,然后用ioreadx读取即可,但我在编译的时候提示未定义这两个函数.
这两个函数的头文件,书上介绍的是在asm/io.h里面,但我的asm/ 没有这个文件.只有sys/才有这个文件,但也没定义这两个函数
|
根据你的硬件平台,从而确定io.h的位置.
例如在mips平台, 2.6.18 kernel:
例如在mips平台, 2.6.18 kernel:
includeasm-mipsio.h
/*
* ioremap - map bus memory into CPU space
* @offset: bus address of the memory
* @size: size of the resource to map
*
* ioremap performs a platform specific sequence of operations to
* make bus memory CPU accessible via the readb/readw/readl/writeb/
* writew/writel functions and the other mmio helpers. The returned
* address is not guaranteed to be usable directly as a virtual
* address.
*/
#define ioremap(offset, size)
__ioremap_mode((offset), (size), _CACHE_UNCACHED)
|
用__raw_writel(v,a),__raw_readl(a)函数
|
哦,学习了!!!
|
用mmap