임베디드 실습 (5) 썸네일형 리스트형 6. 임베디드 실습 : 버튼 동작(Polling, Interrupt) 버튼을 동작시켜 보자. 두 가지 방식이 있다. 첫 번째 방식은 폴링(Polling)이고, 나머지 하나는 인터럽트(Interrupt)이다. 폴링 방식은 장치, 프로그램 등에 대해 충돌 회피, 동기화 처리 등을 목적으로 다른 장치 또는 프로그램의 상태를 주기적으로 검사하여 일정 조건이 만족하는 지를 판단하는 것이다. 실습할 것을 예로 들면, 버튼이 눌렸는 지를 판단하기 위해, main loop에 상에 주기적으로 버튼이 눌렸는 지 판단하는 함수를 추가하는 것이다. 인터럽트 방식은 폴링 방식과는 다르다. 인터럽트 방식은 프로그램이 실행되고 있는 중에, 하드웨어적인 오류, 사용자 정의한 상황 등 예외상황이 발생하여 처리가 필요할 때, MCU가 이를 먼저 치리하도록 하는 것이다. 실습의 예로 들면 버튼이 눌릴 경우.. 5. 임베디드 실습 : GPIO + Systick 이제 드디어 LED를 켜볼 것이다. 간단한 동작을 위해 참 돌아돌아 온 것 같다. 이번 글에서는 보드에 장착되어 있는 LED를 주기적으로 키고 끌 예정이다. GPIO(General Purpose Input Output)는 입력이나 출력을 포함한 동작이 런타임 시에 사용자에 의해 제어될 수 있는, 집적 회로나 전기회로 기판의 디지털 신호 핀이다. GPIO를 조작하기 위해서는 다음과 같으 과정을 거쳐야 한다. 조작할 pin을 포함한 포트에 클럭소스를 배분한다. 해당 pin 입출력을 설정한다. 레지스터를 조작하여 디지털 출력을 조정한다. 사용하는 레지스터는 다음과 같다. 각각의 레지스터에 대해서 간단하게 설명해 보겠다. APB2ENR 레지스터는 입출력 장치에 클럭 소스를 배분할 지 안할 지를 결정한다. CPI.. 2. 임베디드 실습 : ldscript 작성 컴파일한 오브젝트 파일들은 대부분 바로 실행할 수 있는 형태가 아니다. 오브젝트 파일들을 그룹 짓고, 심볼 간 의존성을 해결해야 하는데, 이러한 작업을 링킹(Linking)이라고 한다. 링커 스크립트는 타깃에서의 메모리 섹션의 서술을 담은 파일이다. 링커가 플래시의 올바른 위치에 심볼을 위치시키고, 코드가 참조할 수 있는 메모리 매핑 영역의 특수위치에 대해 소프트웨어 구성요소에 지시하기 위해 사전에 알고 있어야하는 정보이다. 스크립트는 C 코드와 상호작용할 수 있고, 스크립트에 의해 정의된 심볼을 내보낼 수 있다. 다음은 실습에 사용할 스크립트 파일의 내용이다. MEMORY { FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K RAM (rwx) : ORIGIN = 0x2.. 1. 임베디드 실습 : 전체적인 그림 진짜 코드를 작성하기에 앞서서 작성한 코드가 어떻게 보드에 올라가서 동작하는 지 알 필요가 있다. 그래야 이 실습이 보다 유익하고 의미있어질 것이다. 과정은 다음과 같다. 소스 코드를 작성한다.(주로 C 내지는 C++을 이용하여 작성한다.) 작성한 코드를 컴파일하여 오브젝트 파일을 만든다. 오브젝트 파일들을 링킹하여 실행가능한 형태로 만든다. (ELF 파일 형태로) ELF 파일을 다시 바이너리 이미지로 변환한다. 바이너리 이미지를 JTAG 등을 사용하여 보드 위에 올린다. 1. 코드를 작성한다. 너무 당연한 말이지만 보드를 동작시키기 위해서는 소스 코드를 작성해야 한다. 소스 코드는 컴퓨터를 동작시키기 위한 명령어의 집합이다. 그렇다면 컴퓨터(내지는 마이크로컨트롤러)는 어떻게 코드를 이해하는 가 ? 우리.. 0. 임베디드 실습 : 시작 + 환경설정 임베디드 시스템 아키텍처(다니엘 라키메라 저) + 인터넷에 떠도는 자료를 이용해서 실습을 진행하였다. 실습의 목표는 ST의 NUCLEO-F103RB 보드를 이용하여 시스템 클락 설정, 입출력, 인터럽트 설정 등을 해보는 것이다. 실습의 취지에 맞추어 외부 라이브러리를 사용하지 않고, 데이터 시트를 읽으며 실습을 진행할 예정이다. 실습 환경 실습 보드 : NUCLEO-F103RB MCU : STM32F103RB 코드 에디터 : STM32CubeIDE, Vscode 사용 언어 : C 타겟 보드에 대한 간단한 스펙( NUCLEO-F103RB) STM32 microcontroller in an LQFP64 or LQFP48 package 1 user LED shared with ARDUINO® 1 user an.. 이전 1 다음