Embedded
ABI, EABI 그 의미를 이해하고 툴 체인 이름까지 해석하기
ABI와 EABI, 그게 뭐야? 아무 생각 없이 공부 자료를 보다가 문득 'ABI'의 의미를 알아야겠다는 생각이 들었습니다. 이에 대해 알아보고 정리한 자료입니다. ABI 'Application Binary Interface'의 약자입니다. 바이너리 수준의 인터페이스 규약을 말합니다. 서로 다른 컴파일러가 소스 코드를 컴파일하더라도 오브젝트 파일끼리 링킹이 될 수 있도록 합니다. EABI 임베디드 환경의 ABI를 의미합니다. ABI와 EABI의 차이점 이런 것들이 있습니다. 권한 명령이 응용 프로그램 코드 안에서 실행됩니다. 동적 링크 요구하지 않으며 아예 허용하지 않을 수도 있습니다. 메모리 저장을 위해 더 작은 스택 프레임을 가집니다. 위에 적힌 차이점 중에서 가장 크게 ..
Windows 10에서 RTOS 개발환경 구축하기 3 - WSL 2에서 GUI 프로그램을 실행하기 위한 준비
이제 막 개발환경 구성을 마친 WSL 2에 설치된 리눅스에서 QEMU를 실행하면 아래와 같은 오류 메시지가 출력되고 QEMU가 실행되지도 않을 것입니다. 이 글에서는 이 문제의 원인을 알아보고 어떻게 해결할 수 있는지 설명합니다. Unable to init server: Could not connect: Connection refused ...(생략)... 왜 이런 오류가 발생할까? 이런 오류는 WSL 2에서 GUI 프로그램을 실행 할 때 나타날 수 있습니다. WSL 2는 GUI를 기본으로 지원하지 않습니다. 따라서 GUI 프로그램을 실행할 수 있도록 무언가 작업이 이뤄져야 하지요. QEMU도 역시 GUI 방식으로 실행되는 프로그램입니다. WSL 2에서 GUI 프로그램을 실행하려면 '디스플레이 서버'라는..
Windows 10에서 RTOS 개발환경 구축하기 2 - 개발 도구 설치하기
앞서 Windows 10의 WSL 2를 활성화하는 과정을 설명하였습니다. 이제는 일반 리눅스와 거의 똑같이 RTOS 개발 환경을 만들 수 있습니다. 필요한 개발 도구 목록은 다음과 같습니다. 컴파일러: gcc (gcc-arm-none-eabi) 하드웨어 가상화 도구: QEMU 디버거: gdb (gdb-multiarch) 빌드 도구: make 각 도구 설치 방법은 apt 패키지 관리자 기준으로 정리하였습니다. gcc 컴파일러 설치하기 아래의 명령으로 컴파일러를 설치합니다. $ sudo apt install gcc-arm-none-eabi 설치가 완료되었다면 확인을 위해 설치된 컴파일러 버전을 출력해봅니다. $ arm-none-eabi-gcc -v ...(생략)... gcc version 9.2.1 2019..
Windows 10에서 RTOS 개발환경 구축하기 1 - WSL 2를 활성화하자
최근 RTOS 공부를 하고 있습니다. 임베디드 OS 개발 프로젝트라는 책을 참고하고 있고요. 내용이 어렵지 않고 이해하기 쉽게 잘 설명되어있어 RTOS 공부를 시작하는 분에게 도움이 될 거라 생각합니다. 이 책에서는 리눅스 시스템에서 개발하는 방법을 설명하고 있습니다. 따라서 책의 내용을 그대로 따라하기에는 리눅스 운영체제를 네이티브로 갖춘 컴퓨터에서 작업하는 게 최선이겠지요. 하지만 여러 가지 이유로 그렇지 못하고 Windows 10을 사용해야 하는 경우 개발을 시작하기 전에 몇 가지 준비를 해야 합니다. Windows 10에서 리눅스 개발 환경을 세팅하는 데 이 글이 참고가 되었으면 좋겠습니다. 그 첫 번째 과정으로 Windows 10 내부에서 리눅스 시스템을 사용할 수 있도록 하는 WSL 2(Win..
[TM4C] ADC 초기화 과정
들어가며 이 글에서는 Texas Instruments사의 Cortex-M4칩인 TM4C123GH6PM의 ADC 초기화 설정 방법을 설명합니다. 예제 코드는 공개 강좌인 Embedded Systems - Shape the World Chapter 14의 예제 코드를 기반으로 합니다. 여담으로 앞서 언급한 강좌는 MCU 공부를 시작하는 사람에게 많은 도움이 될거라 생각합니다. 관심이 있다면 시간을 들여서 보시는 것을 추천합니다. ADC 초기화 내용 초기화 과정에서 하는 일은 크게 두 가지 입니다. ADC 입력 소스로 사용할 GPIO 설정과 ADC 설정 설정입니다. 우리는 ADC 9번 채널로 사용할 수 있는 GPIOE 4번 핀에 아날로그 입력을 받을 수 있도록 기능을 설정할 것입니다. 그리고 하나의 소스로부터..
CCS 프로젝트 include 경로 설정
#include 코드에 오류 표시가 떠요! 앞서 작성된 글에서 프로그래밍 모델에 따라서 포함시켜야 하는 헤더 파일이 달라질 수 있음을 알 수 있었습니다. 그래서 프로젝트에 맞는 헤더 파일을 추가시키고 빌드를 시켜봤더니 문제가 생기지 않던가요? 코드 편집 창에는 문제가 되는 줄 옆에 x 표시가 생깁니다. 그리고 콘솔창에는 아래와 같은 메시지가 출력되지요. 이 중에서 중요한 정보만 추려서 보겠습니다. "../main.c", line 1: fatal error #1965: cannot open source file "tm4c123gh6pm.h" main.c 파일의 첫 번째 줄에서 #1965 에러가 발생했다고 합니다. #1965 에러가 어떤 의미인지 모르겠지만 계속해서 메시지를 읽어보면 tm4c123gh6pm...
[TM4C] TivaWare 프로그래밍 모델
들어가며 주변 장치 드라이버는 두 가지 방식의 프로그래밍 모델을 제공합니다. 한 가지는 레지스터에 직접 접근하는 방식(Direct Register Access Model, DRA)이고 다른 한 가지는 소프트웨어 드라이버 모델입니다. 두 모델은 각각 장단점을 가지고 있으며 개발자는 상황에 맞게 개발 모델을 선택해야 합니다. 레지스터 직접 접근(DRA) 모델 DRA 모델은 제어하고자 하는 주변 장치(Peripherals) 레지스터에 직접 접근하여 개발하는 방식입니다. 레지스터에 접근하기 위해서는 레지스터 주소 값이 정의된 매크로를 이용합니다. 매크로에 정의된 주소 값은 개발하려는 칩마다 다를 수 있어 맞는 헤더 파일을 코드에 포함시킬 필요가 있습니다. 그렇다면 그 헤더 파일은 어디에 있는 걸까요? 헤더 파일..
[TM4C] TI사에서 제공하는 예제 프로젝트 추가하기
개요 Code Composer Studio(이하 CCS)에 있는 Resource explorer는 개발에 필요한 각종 자원을 찾는 데 도움을 줄 수 있는 도구입니다. 여기서 말하는 자원이란 각종 문서나 유틸리티 프로그램은 물론 예제 프로젝트 등을 말합니다. Tiva C 개발을 시작할 때 유용한 정보들을 Resource explorer에서 찾아볼 수 있겠습니다. 이번 글은 많은 자원 중 예제 프로젝트를 여러분의 작업 공간(workspace)에 추가하는 방법을 설명합니다. 예제 프로젝트 추가하기 CCS 상단 메뉴에서 [View]-[Resource Explorer]를 클릭합니다. Resource Explorer 창이 열린 모습을 확인할 수 있습니다. 왼쪽 폴더 모양의 메뉴 중 Software를 클릭합니다. 펼..