[Armadillo:01636] Re: Armadillo-210 CON 4の GPIO 制御方法
email@hidden
2007年 6月 4日 (月) 16:23:10 JST
中井様
ご丁寧に対応いただきましてありがとうございました。
実機にて動作確認できました。
--- nakai <email@hidden> wrote:
> 中井です。
>
> A210のGPIOドライバはPortA:2には対応していません。
> ドライバに該当ポートの処理を追加することもできますが、
> アプリケーション側で対応できるのでサンプルを張ります。
>
> yuic23 at yahoo
> さんのサンプルでは、mmapのオフセットに仮想アドレスが指
定されていますが、
> ここでは、物理アドレスを設定してください。
>
> ちなみに、オフセットは次のとおりです。
> PADDR:gpio_base[4]
> PADR:gpio_base[0]
>
> ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓
> /* サンプル:mmapを使用したLED赤制御 */
>
> #include <stdio.h>
> #include <unistd.h>
> #include <fcntl.h>
> #include <sys/mman.h>
>
> typedef unsigned long u32;
>
> #define GPIO_PHYS_ADDR (0x80840000)
> #define GPIO_MAP_LEN (0x100)
>
> int main(void)
> {
> int fd;
> u32 *gpio_base;
>
> fd = open("/dev/mem", O_RDWR);
> if (fd < 0) {
> perror("open");
> return -1;
> }
>
> gpio_base = mmap(NULL, GPIO_MAP_LEN, PROT_READ |
> PROT_WRITE, MAP_SHARED,
> fd, GPIO_PHYS_ADDR);
> if (gpio_base == MAP_FAILED) {
> perror("mmap");
> close(fd);
> return -1;
> }
> printf("PEDR:\t0x%08lx\n", gpio_base[8]); /*
> offset: 0x20 */
> printf("PEDDR:\t0x%08lx\n", gpio_base[9]); /*
> offset: 0x24 */
>
> /* LED[RED: ON */
> gpio_base[8] |= 0x01;
> msync(gpio_base, GPIO_MAP_LEN, MS_SYNC);
>
> sleep(1);
>
> /* LED[RED: OFF */
> gpio_base[8] &= ~0x01;
> msync(gpio_base, GPIO_MAP_LEN, MS_SYNC);
>
> munmap(gpio_base, GPIO_MAP_LEN);
> close(fd);
>
> return 0;
> }
>
> _______________________________________________
> armadillo mailing list
> email@hidden
>
http://lists.atmark-techno.com/mailman/listinfo/armadillo
>
--------------------------------------
Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
http://pr.mail.yahoo.co.jp/toolbar/
armadillo メーリングリストの案内