linux 重用 short 为 I/O 内存

short 例子模块, 在存取 I/O 端口前介绍的, 也能用来存取 I/O 内存. 为此, 你必须告 诉它使用 I/O 内存在加载时; 还有, 你需要改变基地址来使它指向你的 I/O 区.

例如, 这是我们如何使用 short 来点亮调试 LED, 在一个 MIPS 开发板上: mips.root# ./short_load use_mem=1 base=0xb7ffffc0

mips.root# echo -n 7 > /dev/short0

 

使用 short 给 I/O 内存是与它用在 I/O 端口上同样的. 下列片段显示了 short 在写入一个内存位置时用的循环:

while (count--) { iowrite8(*ptr++, address);

wmb();

}

 

注意, 这里使用一个写内存屏障. 因为在很多体系上 iowrites8 可能转变为一个直接赋 值, 需要内存屏障来保证以希望的顺序来发生.

 

short 使用 inb 和 outb 来显示它如何完成. 对于读者它可能是一个直接的练习, 但是, 改变 short 来使用 ioport_map 重映射 I/O 端口, 并且相当地简化剩下的代码.

posted @ 2019-07-06 11:52  樊伟胜  阅读(245)  评论(0编辑  收藏  举报