전체 글 (484) 썸네일형 리스트형 [정보] 라즈비안 이미지 백업 위치 아래 경로에서 라즈비안 이미지를 내려 받을 수 있습니다. * 2019-07-10-raspbian-buster-full.zip 위치 https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-07-12/ * 전체 라즈비안 이미지 백업 https://downloads.raspberrypi.org/raspbian/images/ [Arm프로세서] HCR_EL2: 하이퍼바이저 콘트롤 레지스터 (Feat: Arm 강의) 하이퍼바이저 콘트롤 레지스터는 하이퍼바이저의 세부 동작을 설정하는 가장 중요한 레지스터 중입니다. HCR_EL2은 EL1에서 일어나는 세부 동작에 따라 EL2으로 진입(트랩)하는 방식을 설정할 수 있는 비트맵으로 구성돼 있습니다. 다음 그림은 HCR_EL2 레지스터의 비트 맵 정보입니다. 그림 12.3 HCR_EL2 레지스터의 비트 맵 다른 레지스터와 같이 레지스터를 구성하는 비트를 1로 설정하면, 해당 비트 맵과 관련된 동작이 수행됩니다. HCR_EL2 레지스터를 구성하는 비트 맵 중에 중요한 내용을 소개하겠습니다. IMO, bit [4] 이 비트가 1로 설정되면 EL2이나 EL1에서 설정된 인터럽트를 EL2에서 받아 처리합니다. 만약 SCR_EL3.IRQ 비트가 1로 설정되면 EL3가 인터럽트.. [Arm프로세서] GIC의 기본 기능 GIC는 Arm 사에서 디자인한 인터럽트 콘트롤러입니다. 다음 그림을 보면서 GIC의 구조를 배워봅시다. 그림 16.2 간략화한 GIC의 전체 구조 그림을 보면 가운데 박스에 GIC가 있습니다. 그림 왼쪽에 있는 ‘peripheral 1 ~ peripheral n’은 시스템을 구성하고 있는 외부 I/O 디바이스입니다. 예를 들어 peripheral이 3개인 경우 다음과 같은 peripheral로 구성될 수 있습니다. ● peripheral 1: 마우스 ● peripheral 2: 키보드 ● peripheral 3: 캠코더 센서 peripheral와 GIC 사이에 있는 화살표는 peripheral에서 GIC에게 전달되는 인터럽트를 나타냅니다. 그림 가장 오른쪽에 Processor가 있는데 이는 Arm 코어.. [Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점) Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를 보면 .. [Arm프로세서] 인터럽트 콘트롤러의 기본 구조 인터럽트 콘트롤러가 필요한 이유를 알아봤으니 이어서 인터럽트 콘트롤러를 소개합니다. 다음 그림은 인터럽트 콘트롤러의 기본 구조도입니다. 그림 16.1 인터럽트 콘트롤러의 기본 구조 그림에서 가장 왼쪽에 있는 USB나 센서, 키보드는 외부 I/O 디바이스를 나타냅니다. 이와 같은 외부 I/O 디바이스에서 인터럽트 신호를 발생하면 인터럽트 콘트롤러가 받아서 처리합니다. 보다시피 인터럽트 콘트롤러는 CPU 옆에 달려 있습니다. 여러 외부 I/O 디바이스에서 올려준 인터럽트를 처리하는 일종의 창구로 다음과 같은 역할을 수행합니다. “여러 외부 I/O 디바이스가 올려준 인터럽트를 받아 IRQ나 FIQ로 CPU에 전달” 이는 그림의 nIRQ나 nFIQ에 해당되며 인터럽트 콘트롤러와 CPU 사이의 인터페이스는 nIR.. BUG(): CONFIG_PANIC_ON_OOPS, CONFIG_PANIC_ON_OOPS_VALUE! Sometime I noticed that system does not crash when the call to BUG() is made in the kernel driver. I just observed the stack trace from the kernel log and then find that target is running rather than entering crash mode. To make the target crash when BUG() is called, the following config should be present; CONFIG_PANIC_ON_OOPS=y CONFIG_PANIC_ON_OOPS_VALUE=1 Let's look at kernel die() function wh.. [Arm프로세서] 메모리 아키텍처에서 캐시(Cache)란 컴퓨터가 발명된 후 초장기 시점에 컴퓨터는 어떤 모습일까요? 컴퓨터의 크기는 방 하나 정도였습니다. 그 당시에 CPU와 메인 메모리만 존재했습니다. CPU가 어떤 명령어를 실행하거나 데이터를 가져오려면 메인 메모리에 접근했습니다. 컴퓨터 기술이 발전하면서 컴퓨터의 성능을 키우려는 시도를 합니다. 처음에 CPU의 처리 속도(클럭)를 키우려는 방향으로 다양한 연구를 진행했는데 CPU의 성능을 최대로 키우면 이에 비례해 시스템의 성능도 함께 좋아질 것이라 예상했습니다. 그래서 CPU의 성능을 측정했는데 다음과 같은 흥미로운 사실을 알게 됐습니다. "CPU의 대부분 시간은 메인 메모리에 접근하는데 허비한다." CPU의 실행 속도는 매우 빠른데 메모리에 접근하는 시간은 CPU의 실행 시간에 비해 상당히 느리다는 .. [mm] anon page debugging crash64> bt ... #20 [ffffffc00932be70] do_el0_svc at ffffffd174227f30 #21 [ffffffc00932be80] el0_svc at ffffffd174d4d328 #22 [ffffffc00932bea0] el0t_64_sync_handler at ffffffd174d4da20 #23 [ffffffc00932bfe0] el0t_64_sync at ffffffd17421160c PC: 0000007fa528cb20 LR: 0000007fa5237f94 SP: 0000007fc3fc7ad0 X29: 0000007fc3fc7ad0 X28: 000000557d72f000 X27: 0000000000000000 X26: 000000557d6f5000 X25: 0.. 이전 1 ··· 12 13 14 15 16 17 18 ··· 61 다음