Project/simpleOS2012. 1. 15. 20:46
simpleOS 두 번째 동영상

Semaphore & Preemptive Scheduler 구현 

Task 3 개
Task 1(High Priority)
- 처음 시작할 때 Delay로 Wait 상태로 들어감
- Delay 후 Task 2가 가지고 있는 Semaphore를 얻어야 LED 1을 점멸

Task 2(Medium Priority)
- Task1이 Delay된 후에야 Scheduler가 Task 2를 선택하여 수행
- Semaphore를 얻은 후 5번 LED 점멸 후 Semaphore를 놓는다.

Task 3(Low Priority)
- Task 1,2와 관계 없이 FND Count
- Task1, Task 3가 모두 Delay로 Wait 상태에 있어야 동작

 

Posted by 머리
Project/simpleOS2012. 1. 12. 02:51
simpleOS For AVR
첫 번째 테스트 동영상.

Task 3개 생성
Task1 : LED1 점멸
Task2 : LED2 점멸
Task3 : FND Count

동영상은 3 개의 Task가 Multi-Tasking으로 동작하고 있는 모습이다.
LED는 선명하게 보이는데 보드를 한번 심하게 떨어뜨려서 그런지 FND 상태가 안좋다. 동영상 후반부에 주변을 좀 어둡게 하여 FND가 동작하는 모습을 확인할 수 있다.

다음 할 일 : Semaphore 구현

Posted by 머리
Project/simpleOS2012. 1. 7. 23:03
3학년 2학기 임베디드 시스템 / 실험 과목을 수강하고 난 후 아쉬운 점이 많아서 방학기간 동안에 임베디드쪽으로 뭔가 더 해볼까 생각했었는데, 마침 전에 사 두었던 ATmega128 Board가 생각나 이걸 가지고 뭔가 해보기로 맘먹었다.

그럼 이제 뭘 하느냐가 남았는데, 단순히 External I/O로 장난치는건 돈도 많이 들고 별로 재미도 없을 것 같아서.. 간단히 RTOS 하나를 만들어 보기로 하였다. RTOS라고 할 것도 없지만.. 목표하는 대략적인 구현 기능은 다음과 같다.

- Preemptive Multi-Task Scheduler (필수)
- Semaphore / Mutex 등 Critical Section Control을 위한 IPC (필수)
- Task Creation 및 Delete / Delay 등을 위한 몇 가지 API Library(필수)
- Message Queue나 Shared Memory 또는 기타 다른 IPC (선택) 
- Event (선택)
- UART (선택) 

처음엔 Timer Interrupt만 할줄 알면 속도가 붙겠지 생각했는데, 생각보다 어렵고 양도 많다... Datasheet도 조만간 여유 되는 대로 제본을 고려해야겠고, uC/OS나 freeRTOS  실제 OS Source Code도 계속 쳐다보고 있다. 특히 임베디드 시스템 시간에 uC/OS 을 배운 것이 큰 도움이 되고 있다. 

아마 수행 기간은 방학을 거의 다 잡아 먹을 듯 하고, 방학 안에 끝낼 수 있을지도 미지수다. 하지만  어차피 선택 부분은 부가적인 기능이기 떄문에 필수라고 적어놓은 것들은 꼭 해내고 싶다.  
Posted by 머리
Project/NFC2012. 1. 4. 20:18
NFC(Near Field Communication)는 원거리가 아닌 0~20cm의 근거리에서 데이터를 주고 받는 용도로 개발된 통신 방식이다. 
비슷한 통신방식의 예로는 RFID나 Bluetooth 등이 있을 수 있는데, NFC는 이러한 것들(특히 RFID)와 호환성을 유지하면서 좀 더 다양한 기능을 지원하고 있다.

NFC는 교통카드나 스마트 카드 등에서 사용되는 RFID 기술과 매우 흡사하다. 실제 동작도 NFC 기능이 지원되는 Reader가 다른 Reader나 Tag와 접촉하는 형식으로 동작한다. NFC의 동작 특성을 간략히 나열하면 다음과 같다.

- 사용 주파수 범위 : 13.56MHz
- 최대 동작 거리 : 20cm
- 최대 통신 속도 : 0.42Mbps
- 동작 모드 : Reader / P2P / Card Emulation

RFID와 비교해서 NFC의 가장 큰 특징은 다양한 모드를 지원한다는 점이다. NFC는 크게 다음과 같은 모드를 지원한다.

모드 설명 
Card Emulation Mode 기존 RFID Tag와 같은 방식 
Reader Mode  Card Reader 로서의 동작
P2P Mode  두 NFC 기기 간의 통신 모드 

-계속-
Posted by 머리
Project/Project Backup2012. 1. 4. 02:50
프로젝트명 : Verilog를 이용한 Simple AES 구현
프로젝트 수행 기간 : 2011.7~2011.8 [KEEPER 여름방학 프로젝트]
프로젝트 개요
- Verilog HDL을 이용하여 Simplified AES를 구현한다.

이 프로젝트는 지난 2011년 여름방학때 KEEPER 프로젝트로 진행한 것이다.
Verilog HDL을 공부한 후 이를 이용해 AES 알고리즘의 축소판인 Simple AES를 구현한 후 Simulator로 검증해 보는 프로젝트였다.
아쉽게 따로 문서화되어 있는 것은 없기 때문에 수행하면서 사용한 최종 발표 자료만을 공개한다. 소스코드는 따로 공개하지 않는다. 

처음 공부한 분야다 보니 미숙한 점이 많은 프로젝트였다. 이 프로젝트 이후에 현재 수행하고 있는 RSA 구현은 좀 더 체계적으로 연구해 볼 계획이다.

 
Posted by 머리
Project/NFC2012. 1. 4. 02:39
프로젝트명 : NFC와 ECC에 기반한 인증서 시스템 구현
프로젝트 수행 기간 : 2011.4~2011.8 [KEEPER 상반기 기술문서 프로젝트]

프로젝트 개요
 
주요 개발 장비
- ACR 122 : NFC Reader (Windows PC에서 Reader로 사용)
- Nexus S : Android Smartphone (RFID Reader)

주요 구현 개념
- NFC : Near Field Communication, RFID통신의 일종
- ECC : Elliptic Curve Cryptography. 타원 곡선 암호


이 프로젝트는 지난 2011년 동아리 상반기 기술문서 프로젝트로 수행한 것으로,  Nexus S와 Reader가 부착된 PC가 NFC P2P Mode로 통신을 할 수 있도록 구현한 프로젝트이다. 통신 과정에서는 타원 곡선 암호를 구현하여 통신을 하도록 하였다.
본 포스팅은 이 프로젝트에 대한 개요로, 기술문서 자체는 동아리 재산으로 업로드 하지 않을 생각이다. 다만, 프로젝트를 수행하면서 NFC 자료의 절대량이 매우 부족했고, 또한  국내 자료는 전무하다시피 하였기 때문에 추가 포스팅을 통해 간략한 구현 과정을 설명할 계획이다.

덧. 나중에 발표할 때 알았는데 구현한 인증서 방식은 실제로는 인증서 방식이 아니라 단순한 공개키 암호라는 지적을 받았다.
 
Posted by 머리
Project/Project Backup2012. 1. 4. 02:21
프로젝트명 : NCURSES 기반의 다중 사용자 격투 게임
프로젝트 수행 기간 : 2학년 1학기 유닉스 시스템 Term Project [2010년 1학기]

프로젝트 개요
- Linux System에서 NUCRSES를 이용하여 3인칭 격투 게임을 구현한다.
- 다중 사용자가 접속하여 채팅 및 게임을 할 수 있도록 한다.
- IPC 기능을 이용하여 다중 접속이 가능하게 한다.

이용한 주요 IPC
- Shared Memory : Player들의 게임과 채팅을 위한 IPC
- Semaphore : Process 간 Shared Memory 접근 제어

 

Posted by 머리
Project/Project Backup2012. 1. 4. 02:06
프로젝트 제목 : 경매 시스템 설계 및 구현
프로젝트 수행기간 : 2학년 2학기 논리 회로 설계 및 실험 Term Project [2010년 2학기]
프로젝트 개요
- 실제 경매 환경을 본따 경매 시스템을 설계한다.
- 설계한 시스템을 실제 논리 회로로 Design 하여 FPGA에서 구동시켜 본다.

설계한 시스템 구성
- FPGA Board는 경매에서의 사회자 역할을 수행한다.
- ATMega128은 FPGA와 연동되어 FPGA의 Output Signal을 바탕으로 CLCD를 통해 사회자를 보조하는 역할을 한다.
- 추가로 외부 I/O Board를 구성에 FPGA와 연동하며, 이 Board는 경매 참여자의 역할을 한다.

설계한 주요 모듈
- I/O Module : Keypad, 7-Segment, Button Switch, Dip Switch Dot Matrix, External I/O Module
- System Module : 4 Bit Full Adder, State Clock, Level to Pulse, Instruction Encoder
- MCU Kit : Instruction Decoder, CLCD Module

개발 환경
FPGA : 한백전자 HBE-COMBO II
MCU : ATMega 128
Logic Design Tool : Flowrian / Quaters II
 

 

Posted by 머리