Welcome to My World (www.dgmayor.com)

전체 글 341

9. PCB 조립 방법

반도체용 인쇄회로기판 이른바 ‘PCB(Printed Circuit Board)’는 기본적으로 ‘기판’입니다. 기판 자체는 별다른 기능을 발휘하지 못합니다. 여기에 각종 ‘전자부품’을 장착(조립)하면서 비로소 상품으로서의 부가가치가 올라갑니다. 이처럼 PCB에 전자제품을 장착하기 위해선 ‘표면실장기술(SMT·Surface Mount Technology)’이 필요합니다. 전자부품 공정 기술의 꽃이라고도 불리는 SMT에 대해 알아보겠습니다. 출처 셔터스톡 0.1mm 이하 간격으로 전자부품 납땜해야 PCB 공정의 마지막 단계는 조립입니다. 다만 일반적으로 생각하는 제조 분야의 조립과는 달리 고도로 전문적인 영역입니다. 즉, SMT를 바탕으로 하는 PCB 조립은 기판 위에 반도체나 다이오드, 칩 등을 다수 장비로..

8. PCB 설계 방법

PCB(Printed Circuit Board)는 제품에 특정한 기능을 부여하기 위해 반도체를 비롯해 다양한 부품을 하나의 판 위에 모아놓은 인쇄회로기판입니다. 부품이나 배선 등이 워낙 복잡하게 얽혀있다 보니 무턱대고 만들기에 앞서 철저한 설계 과정이 필수적입니다. 본격적인 제조, 건축에 들어가기에 앞서 '설계'를 우선적으로 해야한다는 점에서 집짓기와 비슷하다고 할 수 있습니다. 집을 짓기 위해선 먼저 '어떤 집'을 지을지에 대한 큰 그림을 그려놓는 작업이 필요합니다. 평수는 어느 정도로 할 것인지, 방은 몇 개로 할 건지, 방마다 창문은 몇 개씩 배치할 것인지, 층과 층 사이를 연결하는 계단은 어느 곳에 위치시킬 것인지 등등 전체적인 구조가 짜여야만 삽을 들지 포크레인을 부를지도 결정할 수 있겠죠. 창..

C언어 구글 공룡 게임

안녕하세요. BlockDMask 입니다. C언어나 C++을 책만보고 공부만하면 재미가 없잖아요. 그래서 제가 간단한 게임을 만들어서 소개해보려 합니다. 제가 만든 게임이 게임성이 없는 프로그램 일 수 있습니다. 순전히 예제, 연습용 게임들이니 너그럽게 이해해주시면 감사하겠습니다. 오늘은 "C/C++로 게임을 만들어보자" 그 첫번째 게임인 "구글 공룡 게임"을 만들어 보았습니다. 사실 게임이라고 하기도 좀 그런게, 충돌판정이나 게임오버 점수주기 이런게 아무것도 없이, 캐릭터 움직임, 점프, 장애물 이동하기 이 세개만 만들어 보았습니다. 이영상을 통해서 "아 C/C++을 이용해서 이렇게 간단히 게임을 만들 수 있구나"를 보여드리고 싶었습니다. 1. 게임 이름 및 설명 2. 게임영상 3. C언어 구글 게임 소..

22. 실질 퇴사 22.6.30, 22.9.30 법적퇴사

21년 10월 1일 입사 ~ 22년 6월 30일까지 근무... 대신 9월 30일까지 법적으로는 재택 근무를 하는 것으로 하여 경력 1년의 개발자로 취업을 할 수 있게끔 현 대표님이 만들어 주었다. (뭐... 사람 등신으로 만들어서 자진 퇴사 시키는 게 심적, 법적 부담감이 들었을 수도 있고... 좋은 뜻이었을 수도 있고.... 뭐... 솔직히 말하면 다른 거 들어 올 때는 좋게 생각했는데.... 근태 체크 들어 올 때는 이게 맞다는 생각이 들었다. 뭐 어떤 개발자 놈은 감사하며 다니라는데.... 나는 다른 업무도 아니고.... 최소한 개발자가 이런 걸로 평가를 받는 건 아니라는 생각이 들었다. 말로 해야지 이걸 문서로 주는 것은 아니라는 생각이 너무 들어서..... 뭐 그래서 혈압이 올라 개발자 방에서도..

21. 부트 스트랩 정리

이전 포스팅에서는 환경설정에 대해서 다루었다면 지금 포스팅부터는 OS를 직접 만드는 것에 초첨을 마추고 글을 작성하도록 하겠다. 가장 처음 컴퓨터가 부팅되고 난 뒤에 POST(Power On Self Test)과정을 거쳐 특정 OS 파일에서 첫 512바이트트만큼을 가져온다. 여기서 가장 먼저 실행되는 코드라고 하는데 이를 만들고 알아보도록 하자. 부트과정 처음 컴퓨터에 전원이 들어와서 부팅과정을 거치는데 이를 부트스트랩이라고 한다. 부트스트랩은 장화(boot)의 끈(strap)을 묶고 일어나려는 사람을 가르키기도 하며 그 과정은 아래와 같다. 이 포스팅에서 직접 수정하고 테스트 할 부분은 Step 3 이후에 로드된 MBR(Master Boot Record)이다. 3.20 전산대란이 일어났을 때나 특정 악..

20. 하드디스크 드라이버 쓰기

https://github.com/SIMHANGSUB/HoGoS/tree/master/20 20강 소스코드입니다. -------------------------------------------------------------------------------- 안녕하세요 오늘은 하드디스크에 쓰는 함수를 구현해봅시다. 논리는 하드디스크를 읽었을 때와 똑같습니다. 다른 점은 하드디스크에 내릴 명령이 읽기(0x20) 이 아니라 쓰기(0x30)인 점, 그리고 쓸 때 명령어 "rep outsw " 를 사용할 것이라는 점입니다. 바로 코드를 봅시다. 19강에 짰던 코드와 거의 차이가 없음을 알 수 있을 겁니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23..

19. 하드디스크 드라이버 읽기

https://github.com/SIMHANGSUB/HoGoS/tree/master/19 19강 소스코드입니다. -------------------------------------------------------------------------------- 안녕하세요 Qemu 환경으로도 옮겼겠다 이제 하드디스크 드라이버를 구현하는 일밖에 없습니다. 미리 말했듯이 처음 보면 굉장히 난해합니다. 따라서 드라이버 구현을 몇 단계로 나누어 포스팅할 생각입니다. 17강에서 언급했던 흐름을 그대로 코드 구현할 겁니다. 일일이 주석을 달았으니 시간을 가지고 음미하시기 바랍니다(?) 먼저 오래전에 구현했던 Interrupt.c 코드에서 90 ~ 100 줄에 해당하는 소스를 다음과 같이 수정합시다. 1 2 3 4 5 ..

18. 하드디스크 드라이버 - Q Menu

안녕하세요 저번 강의에서 예고했듯이 Qemu라는 가상환경을 설치해보겠습니다. https://www.qemu.org/download/#windows 공식 링크로 들어가 최신 버전을 다운받읍시다. 자신의 윈도우 운영체제가 32비트 / 64비트에 따라 설치합니다. 설치를 완료하면 qemu 폴더를 찾아가봅시다. 그리고 다음과 같이 커맨드창을 띄워 입력합시다( ​Qemu 폴더 안에서 실행해야 합니다 !! ) "qemu-img create hdd.img 1M" ​말 그대로 1MB짜리 hdd.img 파일을 생성하는 명령어입니다. 이렇게 간단한 명령어 한 줄로 하드디스크를 만들었습니다. 이젠 이 하드디스크를 우리의 가상컴퓨터에 마운트(끼우는) 작업을 해야겠죠? 이는 가상컴퓨터를 실행하는 동시에 마운트도 같이 할 겁니다..

17. 하드디스크 드라이버

오늘은 대망의 파일시스템 그 첫 번째 챕터입니다. 파일시스템을 위해서는 하드디스크를 읽고 쓸 줄 알아야겠죠? 우린 이미 첫 강의때 Real Mode 상에서 지원하는 인터럽트 13으로 플로피디스크를 읽어본 경험이 있습니다. 그런데 슬프게도... 우리는 Real Mode 16비트 환경에서 Protected Mode 32비트 환경으로 넘어왔습니다. 이 32비트 환경에서 더 이상 인터럽트 13 으로 디스크를 읽지 못합니다. 대신 I/O 레지스터 프로그래밍을 통해 하드디스크에 직접 명령을 내리는 수 밖에 없습니다. 이번 포스트에서는 어떤 i/o 레지스터에 명령을 내려야 하드디스크를 읽고 쓸 수 있는지 분석해볼겁니다. 그리고 다음 포스트부터 본격적으로 이를 구현해볼 겁니다. https://wiki.osdev.org..

16. 기초적인 쉘

https://github.com/SIMHANGSUB/HoGoS/tree/master/16 16강 소스코드입니다. -------------------------------------------------------------------------------- 오늘은 Shell 을 만들어봅시다! Shell을 만드는 궁극적인 목적은 사용자로부터 명령어를 입력받아 처리하기 위함입니다. 키보드 드라이버를 저번 강의 때 구현했기 때문에, Shell은 이를 이용하기만 하면 됩니다. 따라서 어떤 방식으로 구현하던지 상관이 없겠죠? 아래의 코드를 참고로 자신만의 Shell을 만들어봅시다. 코드를 수정하기에 앞서 다음과 같이 shell.h와 shell.c 를 추가합시다. ( 새로 만들었으니 당연히 makefile 에 추..

15. 인터럽트 - 키보드 드라이버 2

https://github.com/SIMHANGSUB/HoGoS/tree/master/14 14 ~ 15 강 소스코드입니다. -------------------------------------------------------------------------------- 자 저번 강의에 이어서 ScanCode를 아스키코드로 바꾸는 작업을 진행해봅시다. interrupt.h에 다음과 같은 함수를 하나 선언해줍시다. ( ScanCode가 담긴 char 형을 받아 아스키값을 리턴해줄겁니다. ) unsigned char transScan(unsigned char); 그리고 이 함수를 interrupt.c 에 다음과 같이 구현해봅시다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18..