연구 노트

    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..

    어셈블리 파일 확장자 .s와 .S는 다르다.

    1주일도 넘게 멈춘 진도 최근 RTOS 공부를 시작하면서 어셈블리어로 작성된 코드를 다루게 되었습니다. 제대로 배운 적은 없지만, 많이 어려운 내용이 아니라서 그래도 따라갈 만하다고 생각했었는데요, 도저히 풀리지 않는 오류가 발생해서 많이 헤맸습니다. 어셈블리 코드 상단에 C언어처럼 #include를 이용해 헤더 파일을 불러와 사용하려는데 빌드 오류가 나는 겁니다. 아래처럼요. ➜ rtos git:(working) ✗ make all mkdir -p build arm-none-eabi-gcc -march=armv7-a -mcpu=cortex-a8 -Iinclude -c -g -o build/Entry.o boot/Entry.s boot/Entry.S: Assembler messages: boot/Entr..

    파이썬으로 파일을 정렬하고 이름 변경하기

    제가 평소에 다루는 파일 중에 capture_{번호}.bmp라는 형식으로 저장된 이미지 파일들이 있습니다. 저는 이 파일들을 sequence_{스텝 번호}_{패턴 번호}.bmp라는 형식으로 파일 이름을 고치려고 합니다. 이때 {패턴 번호}는 0부터 5까지 순환 증가하고 {스텝 번호}는 패턴 번호가 5에서 0으로 바뀔 때마다 1씩 증가해야 합니다. 결과를 예상해보자면 다음과 같이 파일명이 바뀔 것입니다. capture_0.bmp --> sequence_0_0.bmp capture_1.bmp --> sequence_0_1.bmp capture_2.bmp --> sequence_0_2.bmp capture_3.bmp --> sequence_0_3.bmp capture_4.bmp --> sequence_0_4...

    [TM4C] ADC 초기화 과정

    [TM4C] ADC 초기화 과정

    들어가며 이 글에서는 Texas Instruments사의 Cortex-M4칩인 TM4C123GH6PM의 ADC 초기화 설정 방법을 설명합니다. 예제 코드는 공개 강좌인 Embedded Systems - Shape the World Chapter 14의 예제 코드를 기반으로 합니다. 여담으로 앞서 언급한 강좌는 MCU 공부를 시작하는 사람에게 많은 도움이 될거라 생각합니다. 관심이 있다면 시간을 들여서 보시는 것을 추천합니다. ADC 초기화 내용 초기화 과정에서 하는 일은 크게 두 가지 입니다. ADC 입력 소스로 사용할 GPIO 설정과 ADC 설정 설정입니다. 우리는 ADC 9번 채널로 사용할 수 있는 GPIOE 4번 핀에 아날로그 입력을 받을 수 있도록 기능을 설정할 것입니다. 그리고 하나의 소스로부터..

    파이썬으로 원하는 데이터 골라내기

    10초마다 한 줄씩 추가되는 데이터 파일에서 원하는 데이터만 골라내는 프로그램입니다. 처리할 데이터의 형태를 보면 아래와 같습니다. 12-08,09:35:00,21,37,31,67,129,135 12-08,09:35:10,21,39,36,64,128,134 12-08,09:35:20,21,41,40,61,126,134 12-08,09:35:30,21,42,43,59,126,134 12-08,09:35:40,22,44,46,58,125,134 12-08,09:35:50,22,45,48,58,125,133 12-08,09:36:00,23,46,50,59,124,133 12-08,09:36:10,23,47,52,58,124,133 ...(생략)... CSV 타입으로 작성된 데이터로 {날짜}, {시각}, {데이..

    [TM4C] GPIO 초기 설정 방법 해설

    [TM4C] GPIO 초기 설정 방법 해설

    들어가며 이 글에서 다룰 예제는 버튼스위치를 이용해서 LED를 켜고 끄는 코드입니다. GPIO 입/출력 관련 설정을 하고 GPIO 데이터 레지스터에 접근하여 값을 읽기도 하고 쓰기도 합니다. 우리는 이 예제를 통해서 레지스터 설정과 접근 방법에 대한 기본을 이해할 수 있을 것입니다. 실습에 필요한 재료는 개발 보드 EK-TM4C123GXL 이고 별다른 추가 회로는 필요하지 않습니다. 이번 글에서는 GPIO 초기 설정 위주로 코드를 해설하고자 합니다. 예제 코드 #include "tm4c123gh6pm.h" #include #define PF4 (*((volatile unsigned long *) 0x40025040)) // SW1 void Switch_Init(void) { volatile unsigne..