2013年1月14日 星期一

register讀寫 (透過mmap)

此code,主要透過mmap讀寫 ,但是必須先知道memory的規劃

此code位置是0x10000000開始為mips register....

code位置

https://docs.google.com/file/d/0B8hm-I2M8BD7LXVfanVQQldIbEE/edit


如何看mmap失敗的原因?
#include <errno.h>

base_address = (unsigned long)mmap(0, reg+getpagesize(), PROT_READ | PROT_WRITE , MAP_SHARED, fd, 0);

if (base_address == MAP_FAILED) {

        printf("mmap error:%s\n", strerror(errno));
        return;
    }

更新:
base_address = (unsigned long)mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE , MAP_SHARED, fd, reg);

第1個參數: 想要在哪裡開始創建映射位址,建議NULL由系統決定
第2個參數: 想要映射的大小
第6個參數: 想要被映射的物理記憶體位址

沒有留言:

張貼留言