본문 바로가기

컴퓨터 공학 자료(학부)

[PIC16C57] mini CPU 설계 및 image processing test 이 프로젝트는 PIC16C57를 verilog로 기술하여 구현하는 것을 목표로, 해당 칩의 설계는 어떻게 되어있는지, 명령어 셋은 어떻게 동작하는지에 관한 지식을 필요로 한다. 한 학기, 약 3달간의 프로젝트 기간안에 완료하는 것을 목표로하고 칩 설계 및 테스트 절차는 다음과 같다. 우선 Bit-oriented file register operation, Literal and control operation에 대한 Byte Oriented Instruction ASM(Algorithm State Machine) 차트를 구상한다. 1.PIC16C57 마이크로 프로세서에서 설계한 블록을 Veriolg Module로 작성하고 통합한다. 2. 결과를 RTL Level 시뮬레이션과 Gate Level에서 시뮬레이.. 더보기
증강현실(AR)을 이용한 캠퍼스 정보 안드로이드 앱(android app) 마지막 학부 프로젝트로 조원들과 진행한 증강현실 캠퍼스 정보 앱. 스마트폰으로 주위를 촬영하면, 건물들의 영상 위로 증강현실기술을 적용, 건물정보와 위치, 거리를 실시간으로 계산하여 사용자에게 보여준다. 또한 최단경로 찾기 알고리즘(A* algorithm)을 적용하여 현위치부터 원하는 장소까지 최단거리로 가는 경로를 구글 맵 api를 써서 보여주도록 하였다. 제작기간은..정말 놀면서 해서 2,3주쯤?; 빡세게 했으면 1주면 다 만들 수 있을 정도 였던 것 같다. 앱만드는 것에는 관심이 없어서 제대로 만들어본게 이번에 두번째인데, 안드로이드는 UI 디자인 툴이 왜이리 구린지 모르겠다; ppt로 발표자료를 만들어 둔게 있어서 내용을 설명하는 것을 갈음한다. 아래는 시연 동영상. 늘 함께 고생해준 조원들에게 .. 더보기
하둡 디렉토리 구조 각각의 디렉토리에 관한 간략한 설명이다. ( 0.20 버전 디렉토리 구조. 0.21dptjsms mapred, hdfs, common으로 디렉토리 구조가 분리, 소스는 각 디렉토리 내부로 이동됨) bin 하둡을 실행하거나 관리하는 스크립트 c++ JNI기반의 c++ 클라이언트 라이브러리 conf 환경 설정 파일 contrib streaming, scheduler, eclipse-plugin 등과 같이 하둡 메인 코드에는 반영되지 않았지만, 다양한 기능을 수행하게 하는 도구들이 포함돼 있다. 이 디렉토리는 이미 빌드돼 jar파일로 패킹되어 있으며, 소스는src 디렉토리에 있다. docs 하둡관련 문서와 javadoc API문서 ivy 하둡에서 사용하는 라이브러리의 의존성 관리를 위한 ivy설정. 하둡을 빌.. 더보기
C 컴파일러 구현 최종 프로젝트로 컴파일러 프로젝트를 해야한다. 가장 친숙한 c를 선택해서(사실 c++의 상속, 다형성을 구현할 자신이 없어서;) ANSI 에서 조금 더 간략화한 small C를 target language로 선택하였다. 생성된 프로그램 source를 컴파일 할 수 있는 컴파일러를 설계하고 구현하는 것이 목표이다. 기존의 Compiler들과 마찬가지로 Text 형태의 source code를 받아들여 오류를 찾고, 오류가 없다면 중간 code를 생성하여 code 최적화를 수행한 후 목적 code를 생성하고 실제 실행이 가능한 실행 파일까지 만드는 것이 구현 최종 목표이다. 컴파일러를 설계하고 구현하기 위해서는 실제 코딩보다 Yacc를 통한 문법 정의 및 실제 심볼 테이블 설계, 컴파일 프로세스 정의 등 설계.. 더보기
shift/reduce conflict , reduce/reduce conflict의 정의 yacc나 bison에 -v 옵션을 붙여서 컴파일 하면 output 파일이 나오는데, 이를 열어보면 yacc 코드의 어느부분이 conflict를 발생시키는 지 알 수 있다. name.output 의 예 : State 93 conflicts: 1 reduce/reduce State 94 conflicts: 4 shift/reduce State 134 conflicts: 1 shift/reduce 현재 총 6개의 충돌이 있고, state 134에 어떤 충돌이 있는지 따라가보니 state 134 31 SelectionStmt: IF '(' Expr ')' IFDE Stmt . 33 | IF '(' Expr ')' IFDE Stmt . ELSE $@2 Stmt ELSE shift, and go to state .. 더보기
윈도 환경 세팅(bison, flex, gcc) 당연히 리눅스환경에서 해야할 줄 알았는데 물어보니 윈도우용 flex, bison도 있었다 gcc는 당연히 있고. 밑에 링크에서 다운받아서 설치하고, 환경변수 설정해주면 쾌적?한 환경에서 컴파일러를 만들 수 있다. 윈도우용 Bison을 다음 링크로부터 다운로드 받아 설치한다. http://gnuwin32.sourceforge.net/packages/bison.htm 윈도우용 Flex를 다음 링크로부터 다운로드 받아 설치한다. http://gnuwin32.sourceforge.net/packages/flex.htm 윈도우용 GCC를 다음 포스트를 참조하여 설치한다. http://devday.tistory.com/entry/윈도우용-GCC-MinGW-사용기 Bison 예제는 다음으로부터 다운로드 받거나 다음 .. 더보기
하둡 설치방식 분류 하둡 동작 방식 master node 에서 hadoop 스크립트를 실행한다. hadoop 스크립트는 hadoop-site.xml의 정보를 읽어서 master node의 HOSTNAME:PORT정보를 얻어온다. ssh 프로토콜을 이용해서 master node의 HOSTNAME:PORT로연결을 한다. 연결후 hadoop-env.sh을 실행시켜서, data node의 hadoop실행환경을 확인한다. master node의 hadoop이 실행이 되고, hadoop-site.xml의 정보를 이용 분산디렉토리 루트를 생성한다. slaves 에 있는 data node host 목록을 읽어들인다. slaves 로 연결해서 hadoop-env.sh를 읽어서 hadoop을 실행 분산 디렉토리 운용을 시작한다. HDFS 설.. 더보기
ssh 설치 및 설정 하둡을 사용하기 위해서는 마스터-슬레이브 통신을 위해서 ssh를 설치해서 설정해주어야하고 rsync를 내부 데이터 리플리케이션을 위해 설치해야한다. 1. 설치 $ sudo apt-get install ssh 2. 기본 포트 변경 $ sudo gedit /etc/ssh/sshd_config # port 22 에서 ‘#’ 를 제거하고 원하는 포트로 변경 바꾸는 이유는 찾아보니 기본포트로 해두면 끊임없이 brute force attack 이 끊임 없이 들어온다고하니 원하는 포트로 바꿔두어야 한다 3. 데몬 재시작 및 확인 $ sudo /etc/init.d/ssh restart $ netstat -ntl tcp6 0 0 :::22(포트번호) :::* LISTEN 이면 정상 작동 중 ssh 의 보안설정 음. ub.. 더보기
embedded term[Real OS 보드에 올리기] 동영상. 1. 설계 과제의 개요 ▪ ARM기반의 임베디드 시스템에 대한 실무능력과 설계능력 배양을 위하여, 시스템 설계수업에서 습득한 지식을 바탕으로 ARM core를 내장한 임베디드 시스템 application을 설계, 제작하여 본다. 임베디드 시스템용 하드웨어(target board)에 적절한 실시간 운영체제(RTOS)를 활용한 소프트웨어를 설계해봄으로써 임베디드 시스템 설계에 대한 종합적인 능력을 배양한다. 2. 설계 환경 2.1. Operation System 2.1.1. RTOS 기존의 OS는 멀티태스킹이 시간적 정확성을 보장해주기 힘들기 때문에, 임베디드 시스템에서는Real-Time으로 동작하는 RTOS가 많이 이용된다. 2.1.2. µC/OS-II Kernel Structure - Micro.. 더보기
(3-2학기 실험) arm7 을 이용한 랜카드 설계와 firmware porting, 어플리케이션 통신 실험 네트워크 랜카드를 직접 '만드는' 수업이다. 즉 CPU(ARM7), 램, 롬, LED,LCD,부터 트렌지스터 다이오드 까지 모두 직접 납땜을 해서 롬에 펌웨어를 어셈블리어+C로 코딩을 해서 올리고, MAX232 칩과 PCI 버스를 이용, 내 컴퓨터와 상대방 컴퓨터+랜카드와 통신해서 동작하는 어플리케이션 까지 만드는게 수업의 목표다. 즉 하드웨어 low level부터 소프트웨어 application 레벨까지 모두 알 수 있는, 컴공 하면서 들었던 수업중에 가장 재미있고 삽질을 많이하고 배운게 많았던 수업이었다. 우선 설계한 랜카드 회로도는 다음과 같다 워낙 도는 족보가 많아서; 참고를 하긴 했지만 여하간 이렇게 납떔을 했다. 사실 이 실험의 묘는 위에 언급한대로 다양한 분야를 한꺼번에 해보는데에도 있지만 .. 더보기