라즈베리파이4가 생각보다 빨리 나왔군요.
By being nice to me | 2019년 6월 24일 |
라즈베리파이 하면 저가격 저성능(?)이라는 이미지였는데 이번에 4는 성능이 많이 강화된 것 같네요. 그냥 귀찮아서 위 공식 사이트의 스팩표를 캡쳐했습니다. 특히 칩셋이야 그럭저럭 경쟁자들에 비해 우위가 약간 있기도 했지만 USB 2.0이라 느려터진 I/O로 인해 제약이 상당했는데(그래서 에뮬게임기용으로는 좋았...?) 4는 그점이 특히 강화된 듯 하여 현실적으 다른 목적으로 사용할 수 있을 가능성이 커졌습니다. 다만 가격도...가격이 메모리 용량에 따라 티어가 있는데 기존과 똑같은 1GB모델은 가격 유지지만 2, 4GB가 주가되면서 가격이 10파운드씩 뜁니다. 원래 내년을 목표로 했었다는데 칩셋이 빨리 공급되어(...) 앞당겨졌다고 하는 듯 ... 에뮬 게임 머신으로 쓸만할 것 같은데 좀
[라즈베리파이] 커널 타이머 -동적 타이머는 누가 언제 호출하나? (1)
By Guillermo Austin Kim | 2018년 8월 15일 |
이전에 동적 타이머를 설정하는 코드 흐름까지 알아봤습니다. 이 과정을 요약하면 다음과 같습니다. 1. 동적 타이머를 표현하는 자료 구조인 struct timer_list 구조체에 기본 정보를 채운 다음 add_time() 혹은 mod_time() 함수를 호출합니다. 동적 타이머 기본 정보는 타이머 만료 시각(HZ단위)과 동적 타이머 핸들러 함수와 매개 변수입니다. 2. 동적 타이머를 초기화했을 때 실행했던 CPU 번호 기준으로 per-cpu 오프셋을 적용해서 timer_base 주소를 읽습니다. 이 주소에는 struct timer_base 구조체 멤버가 있는데 타이머 벡터 해시 인덱스에 동적 타이머를 등록했습니다. 이어서 이번에는 동적 타이머를 누가 언제 처리하는지 살펴봅니다. 동적 타이머는 커널 시스
[라즈베리파이] 시스템 콜 - 커널 공간에서 시스템 콜 테이블 확인하기
By Guillermo Austin Kim | 2018년 11월 21일 |
시스템 콜 테이블은 sys_call_table 심볼에 저장돼 있습니다. 쉽게 설명을 드리면 전역 변수라고 봐도 무방합니다. T32 프로그램으로 시스템 콜 테이블을 확인하면 다음과 같습니다.d.v %y.l sys_call_table________address||value______|symbolNSD:80107FC4| 0x8012C6F4 \\vmlinux\kernel/signal\sys_restart_syscallNSD:80107FC8| 0x801212C0 \\vmlinux\exit\sys_exitNSD:80107FCC| 0x8011C100 \\vmlinux\fork\sys_forkNSD:80107FD0| 0x8026AB24 \\vmlinux\read_write\sys_readNSD:80107FD4|
[라즈베리파이] 인터럽트 디버깅 - proc/interrupts #CS
By Guillermo Austin Kim | 2018년 5월 30일 |
새로운 리눅스 시스템을 접했을 때 인터럽트의 개수와 종류를 바로 파악하려면 proc 파일 시스템을 활용할 필요가 있습니다. 그럼 라즈베리안에서 인터럽트 종류와 개수를 바로 알려면 어떤 명령어를 입력해야 할까요? 우선 리눅스 커널 proc 파일 시스템이 알려주는 인터럽트 정보(/proc/interrupts)를 활용할 필요가 있습니다. 그럼 이 정보부터 같이 점검하기 위해 다음 명령어를 입력해볼까요?root@raspberrypi:/home/pi# cat /proc/interrupts 그럼 다음과 같은 정보를 볼 수 있습니다. CPU0 CPU1 CPU2 CPU3 16: 0 0 0 0 b