Pythonでのmmapの使い方
よろしくお願いします。
現在、SH3LSR7706マイコンのLEDを点滅させるプログラムをPythonで実装しています。
そこで、
http://mes.sourceforge.jp/mes2/index-j.html
こちらにあるプログラムを参考にさせていただいてるのですが
C言語で以下のように書いてある部分をPythonで書くにはどうすればよいでしょうか?
<<< code
mmaped = (volatile unsigned char*)mmap(0, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xa4000000);
>>>
Pythonのドキュメントよると
http://www.python.jp/doc/2.4/lib/module-mmap.html
mmapメソッドにoffsetの引数を渡すところがないので、↑プログラムの「0xa4000000」の部分をどうすればよいのか教えてください。
今は、↓のように書いてますがこれだとオフセットの指定がないので意図した意図したアドレスにアクセスできません。(Pythonのバージョンは2.5です)
<<< code
mmap.mmap(fd.fileno(), mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_READ | mmap.PROT_WRITE)
>>>
よろしくお願いします。
参考にさせて頂いているプログラム
<<< code
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <asm/page.h>
#define SCPDR 0x136
#define LED 0x10
int main() {
volatile unsigned char *mmaped, scpdr;
int fd, i;
fd = open("/dev/mem",O_RDWR);
if(fd < 0) {
fprintf(stderr,"cannot open /dev/mem\n");
return 1;
}
mmaped = (volatile unsigned char*)mmap(0, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xa4000000);
close(fd);
if(mmaped == MAP_FAILED) {
fprintf(stderr,"cannot mmap\n");
return 1;
}
for(i = 0;i < 3;i++) {
mmaped[SCPDR] |= LED;
sleep(1);
mmaped[SCPDR] &= ~LED;
sleep(1);
}
munmap((char*)mmaped, PAGE_SIZE);
return 0;
}
>>>
お礼
ありがとうございました。 参考になりました。