Tag Archives: C

[PXA270] 임베디드 시스템 프로그래밍 기말 프로젝트

사용자 삽입 이미지
예전에 임베디드 시스템 프로그래밍 수업시간에 제작했던 기말 프로젝트를 기록해둘까 한다. 당시에 몇가지 주제가 있었는데 Dot Matrix를 이용한 레이싱 게임을 만들기로 하였다.

PXA270이라는 장비는 교육용 장비로써 등치는 중국집 배달원의 철가방만하지만 요즘 나오는 안드로이드만 못한 성능을 보여주는 장비이다. 하지만 교육용으로는 최고의 느낌이다. 무언가 다루기 쉽다고나 할까. 직접 커널을 수정후에 올려서 돌려볼 수 있다는 점은 재미있는 경험이었던것 같다.

당시에 레이싱 게임을 만들기 위해 정해진 세부 구현 사항은 다음과 같았다.


– Dot Matrix 에 레이싱 트랙을 출력하고, 키를 이용하여 차를 조정
– 차의 진행에 따라 트랙이 아래로 스크롤
– 차는 한개의 점으로 표시
– 키를 이용하여 좌우로 장애물 회피(Key Matrix 혹은 GPIO키를 활용)
– 충돌하면 어디까지 갔는지 표시
– 트랙의 움직이는 속도는 적절히 결정

우리팀은 프로젝트가 다음과 같은 특성을 가지도록 개발하기로 하였다.


– 레벨은 끝이 없는 무제한
– 맵은 5개의 패턴을 이용하여 계속 이어붙여 끝없는 레이싱이 가능토록 함
– FND를 활용하여 현재 레벨과 점수를 표기
– 자동차를 단순한 한점으로 표기해야 하는 단점이 있어 벽과 구별이 어려워 깜빡이도록 함
– Character LCD에는 제작자 이름을 지속적으로 출력하도록 함
– 시작 및 자동차 충돌시 화려한 에니메이션 효과 추가

그렇게 해서 다음과 같은 작품이 탄생하였다. (Thanks to 5DMK2)



제작하였던 소스를 첨부하였다. 하지만 왜인지 리눅스 개발 환경도 UTF-8이었는데 인코딩이 죄다 깨져있는 문제가 있다. 수정을 할려다가 어차피 앞으로 돌릴수도 없을꺼 같아 그냥 올려둔다.

1006931823.zip
어떤분이 디바이스 드라이버를 요청하여 겸사겸사 딸려있던 파일들 다 올려둡니다.

1158138039.tgz

[리눅스 프로그래밍] 간단한 나만의 쉘(Shell) 만들기

작년에 리눅스 프로그래밍 과제로 만들었던던 간단한 쉘 입니다. 이름은 어찌 지어야 할지 몰라서 minish이라고 하였습니다. 몇가지의 간단한 기본 명령어를 구현하였으며 백그라운드 프로세스 실행 및 >, >>등의 리다이렉션과 파이프(|)를 구현 하였습니다. 환경 변수를 활용한 프롬프트의 모양 변경도 가능합니다. 최대한 심플하게 그리고 예외처리 없이(시간이 부족했었다곤…..ㅠㅠ) 제작 되었습니다.

사용자 삽입 이미지쉘의 기본적인 화면입니다. 심플 그 자체입니다.

사용자 삽입 이미지파일 복사 명령어인 cp명령어의 테스트 화면입니다.

사용자 삽입 이미지파일 삭제명령어인 rm의 실행 모습입니다.

사용자 삽입 이미지파일 이동 명령어인 mv입니다. 위에서는 파일 이름을 변경하는데 사용해보고 있습니다.

사용자 삽입 이미지디렉토리를 옮겨다니는 cd 명령어의 수행 모습입니다. 권한이 있다면 디렉토리를 이동해 다닐 수 있습니다.

사용자 삽입 이미지디렉토리 생성 명령어인 mkdir입니다. 디렉토리를 생성하고 들어가보는 것까지 해보았습니다.

사용자 삽입 이미지디렉토리 삭제 명령어인 rmdir의 실행 모습니다.

사용자 삽입 이미지리눅스에 기본적으로 있는 cat명령어이죠. 욕심을 가지고 만들다가 파일 리더 그이상의 기능을 구현하지 못하였습니다;; 원래는 표준입력을 받아서 파일을 생성할수 있어야 하는데 말이죠..ㅠㅠ

사용자 삽입 이미지쉘의 종료 명령어입니다.

사용자 삽입 이미지환경 명령어를 설정하는 모습니다. PS2에 일반적으로 쓰이는 형태의 프롬프트 모양을 입력해 두시면 그 쉘 모양대로 프롬프트가 뜨게 됩니다.

사용자 삽입 이미지파이프(|)를 사용하는 모습입니다. 이거 생각보다 구현하기가 까다롭습니다…ㅠㅠ

사용자 삽입 이미지리다이렉트의 생성&추가를 해보는 모습입니다. 표준입출력의 기본이죠.

사용자 삽입 이미지백그라운드 프로세스(&)를 실행하는 모습입니다. sleep명령어를 수행하면 그 시간만큼 쉘이 멈춰있게 되는데 바로 다른 명령어를 입력받는것을 볼 수 있습니다. 이거 구현을 조금 야매로 한 감이 있긴 한데 정상 동작을 하는 듯하면서도 아닌듯 하면서도;; 아하하…아무튼 그렇습니다.

만들었던 소스를 공개 합니다. 잘만들지는 않았지만 학습용으로는 좋을것이라 생각됩니다. 하지만 과제 제출용으로 쓰실려는 학생 여러분…처음부터 끝까지 혼자 능력으로 프로그래밍 잘 하는 사람은 없다고 봅니다. 하지만 이 자료를 받아서 노력하는데 보탬이 되는데 쓸 지언정…그대로 내진 마세요…예전에도 어떤 학생이 교수님한테 이 블로그를 걸렸다고 글을 내려달라는 요청을 받은적도 있는데;;ㅎㅎ 스스로 공부합시다.

참고로 안에 Makefile도 있으니 make로 돌려 컴파일 하여 사용하시면 됩니다.

1066519629.zip