프로그래밍 공부/리눅스 & 임베디드 시스템

프로그래밍 공부/리눅스 & 임베디드 시스템

폭탄 해체 게임(BOMB BREAKDOWN GAME)

Hybus-Smart4412 타겟시스템과 리눅스 환경에서 크로스컴파일하여 만든 게임입니다. 제 깃허브 주소 (https://github.com/Oh3gwnn/IoT_HSmart4412)에 전부 정리되어 있습니다. 이 문서는 처음으로 나오는 README 파일을 수정한 것입니다. 자세한 것은 깃허브 주소를 참고해주세요! 1. 프로젝트 계획 H-Smart4412 타겟 시스템의 다양한 장치를 이용하고 싶어서 계획한 폭탄 해체 게임. 게임을 해결해나가는 아이디어 부분은 Keep Talking and Nobody Explodes 게임을 참고하였습니다. 'Keep Talking and Nobody Explodes' 사이트 링크 참고 2. 프로젝트 사전조사 이전에 누군가 진행하였던 타겟시스템 실습 내용들을 확인 프로젝..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ⑦ 타겟시스템 실습 - 2

1. led 응용프로그램을 수정하여 0,2,4,6과 1,3,5,7이 번갈아 점멸하는 프로그램 제작 타겟시스템의 장치들을 이용하기 위해서는 드라이버를 작성해야 한다. 크게 알아본 드라이버 작성법은 4가지가 있었는데, 여기선 타겟시스템의 'dev' 폴더 안에 드라이버가 정리되어 있다. 그래서 가져다가 쓰면 된다. - 'led.c' 코드파일 작성 dev, i, data : 장치와 반복문 변수 선언, data는 led 출력을 위한 값 #define led "/dev/led" : dev 폴더의 led라는 파일을 'led' 라는 이름으로 사용하겠다고 선언 dev = open(led, O_RDWR); : dev라는 변수에 led 장치를 읽고 쓸 수 있게 불러오는 것 (장치 안의 /dev/led 폴더, 파일 != 작성..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - GCC 4.4버전 컴파일러

컴파일러 gcc 4.4버전 사용에 대해서 추가로 포스팅해보겠습니다. 타겟시스템 자체도 옛날거라서 컴파일러 문제가 좀 있습니다. 리눅스 환경(Ubuntu, CentOS 등)이 발전하면서 컴파일러인 GCC도 옛날 버전 패키지가 존재하지 않는다. (2022-05-14 기준 8~10 버전까지 존재) 그 때문에 패키지 주소를 추가하여 다운로드가 가능하도록 해야 한다. 우분투 환경에서 gcc 패키지 경로를 설정할 수 있고, 원하는 버전의 경로를 확인하고 입력해야 한다. 본인은 4.4버전 설치를 위해 밑의 명령어를 입력하였다. ‘sudo add-apt-repository ppa:ubuntu-toolchain-r/test’ 그 후 ‘sudo apt-get update’로 업데이트 진행 ‘sudo dpkg -l |gre..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ⑥ 타겟시스템 실습 - 1

0. 윈도우 리눅스 공유폴더 설정 (초반부터 진행해온 저와 같은 환경에서 리눅스를 사용하고 있다면 윈도우-리눅스 공유 관련 어려운 방법보다 간단한 방법이 있어서 소개합니다. 사실 이것저것 시도해봤는데 이 방법만 제대로 되서 적어봅니다.) 1. 윈도우에서 공유하고 싶은 폴더를 생성 (여기선 ‘linuxshare’ 라고 이름 붙였다.) 2. 사용하고 있는 VirtualBox 환경에서 ‘장치-공유 폴더-공유 폴더 설정...’을 들어간다. 3. 그 후 만들어 놓은 폴더 경로를 설정하고, 이름을 확인한다. 자동 마운트와 항상 사용하기 체크 후 마운트 지점을 Z로 지정한다. 4. 다음 루트 계정으로 로그인 한 후, 공유하고 싶은 지점(폴더)을 들어간다. ‘mount –t vboxsf [윈도우 공유 폴더 명] [리눅..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ⑤ 타겟시스템 리눅스 설치

h-4412 장치에서 보통 부팅 안되는 경우는 usb 케이블 연결이 제대로 안 되었거나, 연결은 했는데 드라이버가 설치되지 않았거나, sd card에 제대로 부트로더가 설치되지 않는 경우이다. 내가 할 때는 USB는 딱히 문제 없었어서 부트로더 설치, sd 퓨징만 설명하고 건너갈려고 한다. USB는 개발 CD Util폴더 참고하고, OTG cable의 경우 드라이버 설치 후 시스템 변수 경로 설정을 진행하면 된다. (platform-tools 경로도 포함) 교재 따라가면 딱히 어려운 것은 없다. 근데 이제 본인은 Sd카드 날려먹고 난리도 아니었기 때문에 그것에 대해 진행해보려 한다. 뭐 건드리지만 않으면 사실 그냥 될거다... ㉠ 우선 부트로더가 설치되었는지 확인하기 위해 지금까지 진행했던 리눅스 환경에..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ④ 파일시스템 빌드

1. 파일시스템 개요 1) 임베디드 리눅스 파일시스템의 사용 목적과 기능에 대해 파일 시스템이란 운영체제가 물리적 저장 장치 파티션 속 정보를 저장, 관리하기위한 방법 또는 체계를 뜻한다. 임베디드 시스템은 일반적인 리눅스와는 다르게 하드디스크(시스템 운영을 위한 실행 파일은 플래시, ROM과 일정 영역 RAM에서 실행)나 별도 모니터가 필요 없고 특정 목적(임베디드 시스템과의 호환이 가능한 파일시스템, 보안, 성능 등)을 위해 사용된다. 임베디드 시스템의 파일시스템의 주요 특징으로는 제한된 자원을 사용하여 효율성을 추구하고, 열약한 환경에서도 안정적으로 가동이 가능하다. 또한 열약한 환경에서 만약 전원을 차단하거나 문제가 발생 시 자동으로 복구를 진행하거나 데이터 손실 없이 재가동이 된다. 그리고 파일..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ③ 커널 빌드

1. 커널 개요 1) 임베디드 리눅스의 커널의 사용 목적과 기능에 대해서 커널은 운영체제의 핵심 요소로 응용 프로그램의 동작 환경을 제공한다. 또한, 부팅 시 메모리에 적재되며 컴퓨터의 모든 자원을 관리한다. 특히 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공하는데 프로세스(생성 및 소멸, 프로세스간 통신, CPU 스케줄링 동기화 등), 메모리(가상 메모리 관리기법, 메모리 하드웨어의 효율적인 관리), 파일 시스템(가상 파일 시스템에 의한 여러 파일 시스템 지원 등), 디바이스 드라이버(입출력 요청의 검증, 입출력 작업 스케쥴링 등), 네트워크(통신 프로토콜 구현(TCP/UDP, IP 등))를 관리하며 정보통신과 컴퓨터 기술의 발전으로 네트워크, GUI 관리까지 확장되었다. 커널의 서비스..

프로그래밍 공부/리눅스 & 임베디드 시스템

임베디드 개발환경 - ② 부트로더 빌드

1. U-Boot 개요 부트로더는 타깃 초기화 및 타깃 동작환경을 설정하고 시스템 운영체제 부팅, 플래시 메모리 관리 등의 역할을 한다. 하지만 부트로더 자체의 기능만 사용한다면 다른 부트로더를 사용해도 무방하다. U-boot(Universal BOOTloader)는 PowerPC와 ARM 임베디드 시스템에서 기반을 두고 사용되는 부트로더이며, 가장 활발하게 개발되고 다양하게 사용되는 오픈소스이다. PPC, ARM, MIPS 등 다양한 CPU를 지원하며, TFTP를 이용하여 운영체제 부팅이 가능하고 플래시 메모리, IDE, SCSI 등 다양한 매체를 이용하여 부팅도 가능하다. JFFS2파일 시스템을 비롯한 다양한 파일시스템을 관리하는 기능이 있으며, 각 CPU에 대한 명령어 체계가 동일하여 다른 Plat..

티키택
'프로그래밍 공부/리눅스 & 임베디드 시스템' 카테고리의 글 목록