BeagleBone Black에서 LED 깜빡이도록 하기 ( mmap 사용 )Beaglebone Black2015. 8. 26. 21:17
Table of Contents
반응형
2015.9.6
다시 확인해보려고 실행시켜 봤는데 실행시키면 아래와 같은 에러가 뜨면서
Bus error
dmesg 명령으로 확인해보면 아래와 같은 에러 메시지가 보였습니다.
Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6f55134
아래 세 줄을 코드에 추가해주어야 에러 없이 정상적으로 수행이 됩니다.(http://stackoverflow.com/a/20874882)
system("echo 5 > /sys/class/gpio/export");
system("echo 65 > /sys/class/gpio/export");
system("echo 105 > /sys/class/gpio/export");
비글본 블랙 P8의 2번과 8번에 LED를 연결하고 Gpio2_3의 값을 변경해서 LED가 깜빡이게 해보았습니다.
이미지 출처 : http://www.ctrlinux.com/blog/?p=87
AM335x Sitara™ Processors데이터 시트의 Memory Map에서 확인한 GPIO2 시작 주소는 0x481AC000이고 크기는 4K입니다.
GPIO를 입력으로 사용할지 출력으로 사용할지 결정하기 위해서 필요한 레지스터로 원하는 비트를 0으로 설정하면 출력상태가 됩니다.
GPIO 출력 핀의 값을 설정하기 위해서 사용되는 레지스터입니다. 1로 세팅하면 LED가 켜지고 0으로 세팅하면 LED가 꺼지게 됩니다.
전체 소스코드입니다.
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <sys/mman.h>
- #define GPIO2_BASE 0x481AC000
- #define GPIO_OE 0x134
- #define GPIO_OUT 0x13c
- #define PIN1 (1<<3)
- int main()
- {
- int fd = open( "/dev/mem", O_RDWR|O_SYNC );
- if ( fd < 0 ){
- printf( "can't open /dev/mem \n" );
- exit(-1);
- }
- char *gpio_memory_map = (char *)mmap( 0, 4096, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, GPIO2_BASE );
- if ( gpio_memory_map == MAP_FAILED )
- {
- printf( " Error : mmap \n" );
- exit(-1);
- }
- volatile unsigned int* gpio = (volatile unsigned int*)gpio_memory_map;
- gpio[GPIO_OE/4] &= (~PIN1);
- int i;
- for ( i=0; i<5; i++ )
- {
- gpio[GPIO_OUT/4] |= PIN1;
- sleep(1);
- gpio[GPIO_OUT/4] &= (~PIN1);
- sleep(1);
- }
- munmap( gpio_memory_map, 4096);
- return 0;
- }
반응형
'Beaglebone Black' 카테고리의 다른 글
BeagleBone Black에서 커널 모듈 프로그래밍 (6) | 2015.09.20 |
---|---|
BeagleBone Black의 SPI 활성화 하기 (1) | 2015.09.14 |
Beaglebone Black을 USB 연결 시 인터넷 사용하기 (0) | 2015.09.14 |
BeagleBone Black에서 스위치 누르면 LED켜보기 (0) | 2015.09.06 |
BeagleBone Black 처음 사용해보기 (0) | 2015.08.18 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!