Guillermo Austin Kim
Posts
998 posts라즈베리 파이 시작하기_OS설치
출처: http://www.makewith.co/page/project/1009/story/2402/SD 카드 포멧, 라즈베리안 복사 관련 내용 제가 이번 프로젝트를 진행하면서 사용하게될 라즈베리파이는 라즈베리파이3입니다. 라즈베리파이3는 전 시리즈들이 32 비트를 사용했던 것에 비해 64 비트 Quad Core를 사용하고 있고, 속도도 1.2GHz로 확 올랐습니다. 무엇보다도 이전 시리즈와 다른 점은 Wi-Fi와 BLE(블루투스)가 내장되어 있다는 점인 것 같네요. 드디어 라즈베리파이를 개봉해보도록 하겠습니다. 케이스가 무척 예뻐요♥내부를 개봉하고 나면 위와 같습니다. 이제부터는 이 라즈베리파이3를 이용하여 프로젝트를 진행해보도록 합시다. 먼저 라즈베리파이를 사용하기 위해서 라즈베리파이에
[C언어] 포인터 (p + 1) 연산
포인터의 기본 문법에 대해서 조금 더 알아볼게요. 코드는 다음과 같습니다. int i = 10; int *p = &i; *p = 20; 이 때 64 비트 CPU 기반으로 메모리 구조를 한번 그려볼까요? 1008번지에는 i란 지역변수가 있고 1000 번지에는 p란 포인터 타입 지역 변수가 위치해 있죠.포인터 주소 값 | 1000 |--- 1008 | | p | 1008 |--- (10 -> 20) i 변수 i의 위치가 1008번지라면 포인터 변수 p에는 i 변수 주소를 대입했으므로 p는 int을 가르키는 주소가 됩니다.이 때 주소 변수를 선언하는 방법은 int *p입니다. 그런데 컴파일러는 이 선언부를 다음과 같이 해석합니다.pointer
[Linux][GCC]## 매크로 - 심볼 생성
리눅스 커널 코드를 읽다 보면 C 코드에는 존재하지 않는 함수를 호출하는 경우가 있습니다. 희한하게도 해당 함수를 아무리 검색해도 찾을 수 없는데 다른 함수에서 아무 문제 없이 호출합니다. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 end_page_writeback 함수에서 PageReclaim와 ClearPageReclaim 함수를 호출합니다. 이 함수는 페이지 write back 동작을 멈추는 역할을 하는 것으로 보이네요.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim(page); rotate_reclaimable_page(page); } PageReclaim
[Linux] 컴파일러(Complier) 소개
소프트웨어에 입문하는 분들은 컴파일러란 단어를 매우 자주 들을 가능성이 높습니다. 왜냐면 현업에서 가장 많이 쓰는 단어 중 하나이거든요.그럼 컴파일이란 단어를 영한 사전으로 찾으면 "안내서를 만들다.", "책을 편집하다."란 의미입니다.그러면 "컴퓨터에게 편집해서 안내서를 만든다"란 문장으로 컴파일이란 단어를 조합할 수 있는 것 같습니다. x86, ARM과 같은 CPU가 해석할 수 있는 것은 오로지 명령어이며, 이는 비트 패턴인 기계어를 뜻합니다."프로세스는 이미 정해진 특정한 비트 패턴에 반응한다"란 의미로 특정 비트 패턴을 명령어라고 부를 수 있습니다. 조금 쉽게 설명을 드리면 CPU는 여러가지 전기적 스위치로 구성돼 있으며, 어떤 특정한 전기 스위치를 작동시키려면 데이터 버스 선을 따라 전압이 "있
GCC - C언어 매크로(Macro) -(1)
C Macro를 잘 알아두면 편리합니다. Register 설정을 Macro로 관리하면 엄청 편하거든요. 주소를 다 외울 수는 없으니까요. 그리고 일단은 Macro도 argument를 받을 수 있어요. 이런 Macro를 선언해서 쓰는 방법도 여러 가지가 있습니다. Macro는 자주 쓰이는 코드 묶음을 한 개로 쓸 수 있다는 장점이 있어요. 예를 들어서 코드를 짜다 보니까, critical_section_in();ret = io_read ();critical_section_out(); 이라는 부분이 반복되면 계속 위 코드를 입력하기 귀찮겠죠? 이 코드들을 아름답게 하나의 Macro로 만들 수 있습니다. 그러면 #define으로 CRITICAL_IO_IN() 을 선언하는데, 반복되는 부분을 역슬래쉬 "\" 으로


