Linuxの/dev/memをmmapを使って操作しようとしています。
#define BASE_BRIGDE 0xFF200000 #define BASE_LEDPIO 0xFF210040 #define DEVNAME "/dev/mem" int main(int argc, char** argv) { int fd; unsigned long from, num, port; unsigned char *iomap; printf("this is IOmemory test program\n"); fd = open(DEVNAME, O_RDWR); if(fd <= 0){ perror(DEVNAME); exit(1); } from = BASE_LEDPIO; num = 0x20; iomap = mmap(0, num, PROT_READ|PROT_WRITE, MAP_SHARED, fd, from); if(iomap < 0){ perror(DEVNAME); exit(1); } printf("IOmem mmaped at %p\n", iomap); //port = 0xFF210041; //*(iomap + port - from) &= 0x00; munmap(iomap, num); close(fd); return 0; }
結果
this is IOmemory test program IOmem mmaped at 0xffffffff
正常な場合にiomapがいくつになるかは不明なのですが、
恐らく0xffffffffではないはず。多分・・・。
何が間違っているのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/02 01:31 編集
2019/08/02 01:43
2019/08/02 01:47
2019/08/05 00:27