[리눅스커널][디버깅] 편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개
By Guillermo Austin Kim | 2019년 4월 7일 |
편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개 이전 절까지 리눅스 커널 코드를 수정해서 ftrace나 커널 로그를 출력하는 방법을 소개했습니다. 리눅스 드라이버를 처음 접하거나 커널 코드에 익숙하지 않은 분은 커널 로그를 수정해 커널 빌드를 하는 것은 굉장히 낯선 일입니다. 왜나면 코드를 잘못 입력해 커널이 오동작하면 어떨지 걱정이 앞설 수 있기 때문입니다. 그런데 실수로 커널 코드를 잘못 입력하면 라즈베리파이가 부팅을 못할 수도 있습니다. 필자도 실수로 커널 코드를 잘못 수정한 후 컴파일한 적이 있습니다. 결과 라즈베리파이가 부팅이 안됐습니다. 처음 이런 상황을 겪으니 조금 당황스러웠습니다. 임베디드 리눅스 실전 개발자는 코드를 수정한 다음 커널 부팅이 안 되는 상황
수퍼패미콤 클래식 에디션 향 라즈베리파이 케이스 Retrofalg SUPERPi
By 잉여 Says | 2018년 10월 4일 |
닌텐도의 수퍼패미콤 클래식 미니와 사이즈나 모양, 만듦새 모두 흡사한, SUPERPi 케이스입니다. 중국의 Retroflag라는 업체에서 최근에 성황리(?)에 판매되었던 닌텐도의 수퍼패미콤 클래식 에디션에서 영감을 받아 만든 것이 분명한 라즈베피라파이 케이스업니다. 그런데 얘네 닌텐도에 라이센스 비용은 지불하고 만드는 거야? 아닐 것 같은데... Retroflag사의 홈페이지에 가 보면 북미판 NES 형태의 케이스와 SNES, 그리고 바로 이 일본판 SFC 모양의 케이스와 수퍼패미콤 게임패드의 디자인을 재현한 USB 게임패드만을 소개하고 있습니다. 닌텐도에서 이미 출시한 복각 게임기들의 디자인을 90%쯤 베껴 만든 제품들로 보입니다. 지금쯤 소니 플레이스테이션 클래식을 베낀 케이스를 제작하고 있지 않
[Crash-Utility] Radix Tree 디버깅: 'tree -t radix -N (struct radix_tree_node *) 구조체 주소'
By Guillermo Austin Kim | 2019년 9월 30일 |
이번 시간에는 크래시 유틸리티로 라덱스 트리를 디버깅하는 방법을 소개합니다. 라딕스 트리(Radix Tree)를 보기 위한 명령어 크래시 유틸리티로 라덱스 트리 노드를 보기 위한 명령어 포멧은 다음과 같습니다. tree -t radix -N (struct radix_tree_node *) 구조체 주소 예제 명령어 및 결과 ( struct radix_tree_node 구조체 주소가 0xFFFFFFFF3A806E79 인 경우) crash> tree -t radix -N 0xFFFFFFFF3A806E79ffffffff3f53c180ffffffff3f53c4c0ffffffff3f555180ffffffff3f5554c0ffffffff3f56e180ffffffff3f56e4c0ffffffff3f5
[라즈베리파이] 스케줄링(scheduling)이란 무엇일까?
By Guillermo Austin Kim | 2019년 2월 2일 |
여러분들은 리눅스 시스템이 탑재된 휴대폰이나 라즈베리파이를 쓰면 동시에 여러 프로그램을 실행할 수 있습니다. 휴대폰을 보면 다양한 프로그램이 동시에 실행하는 것을 확인할 수 있습니다. 예를 들면 브라우저를 실행하면서 음악을 듣거나 메신저를 하면서 어플리케이션을 다운로드 할 수 있습니다. 그래서 사람들은 여러 프로세스들이 동시에 CPU에서 실행한다고 느낄 수 있습니다. 하지만 CPU는 여러 개의 프로세스를 절대로 동시에 실행할 수는 없습니다. 리눅스 커널을 포함한 다양한 운영체제에서 스케줄링과 멀티 태스킹 기법이 생겨난 이유는 다음과 같습니다.CPU는 한 순간에 한 개의 프로세스의 코드만을 실행할 수 있습니다. 여러 개의 프로세스들이 효율적으로 번갈아 CPU에서 실행할 수 있게 규칙을 부여하고 프로세스들을