본문 바로가기

Embedded System12

WFI / WFE 해당 ARM assembly instruction은 clock을 gate시켜 저전력 모드(low power state)로 진입하기 위한 명령어이다. WFI(Wait For Interrupt)standby mode로 진입하여, 인터럽트를 기다리고 있는 상태.인터럽트가 발생되면 wake up  WFE(Wait For Event)standby mode로 진입하여, 이벤트를 기다리고 있는 상태.이벤트가 발생되면 wake up(이벤트에 인터럽트가 포함되어 있음)이벤트는 주로 SEV or SEVL(Send EVent or Send EVent Local)라고 하는 명령을 통해 생성됨 주로 spinlock 상태에서 사용되며 계속 unlock을 기다리며 진입을 시도하기 보다는WFE를 통해 저전력 모드로 들어가있고, 다른.. 2024. 6. 27.
UART 정의 UART는 Universal Asynchronous Receiver/Transmitter(범용 비동기 송수신기)의 약자로서 두 device간 serial data를 교환할 때 사용하는 protocol을 의미함. Data Frame 단방향(Simplex) 통신, 반 이중(Half-duplex) 통신, 전 이중(Full-duplex) 통신을 지원하며, data는 frame 형태로 전송됨 RX: serial 형태의 data를 parallel하게 convesion TX: parallel 형태의 data를 serial하게 convesion Baud Rate RX / TX가 clk을 공유하지 않기 때문에 양측에 동일한 Baud Rate를 설정하므로서 데이터 전송 속도를 정함. 2024. 3. 5.
Xen Hypervisor Bare metal 구조(Type I)의 Hypervisor로서 기본적으로 반가상화를 통해 VMs은 Hypervisor Call을 통해 H/W resource에 대해 요청 함. Xen에는 Domain 0라고 하는 실제 device와 통신하는 driver가 있고, 각 도메인 Domain U(Unpriviledge)들을 관리하며 Dom u에 대한 요청을 처리 함. 동작에 대해 살펴보면 각 Dom U에서 H/W에 대한 요청을 Hypervisor Call을 통해 요청하면, Hypervisor는 Dom 0에게 전달하여 driver를 통해 실제 device에 접근 2024. 2. 23.
Assembly syntax Assembly syntax ARM Assembly Language 관련 syntax에 대해서 정리한 글 Assembly Identifiers .section , "" 섹션을 정의 .balign n 다음 주소가 n바이트 단위로 alignment .global .global 키워드를 사용하여 전역화 label without branch instruction 하기와 같이 예제코드에서 분기문이 없거나, 분기문이 실행되지 않는다면 순차적으로 다음 코드로 넘어감. # example 1: 해당 예제의 경우 1번째 분기문에서 case1으로 분기되지 않은 경우 순차적으로 다음 code인 "add $s2, $s0, $s1 "로 진행 beq $s0, $s1, case1 add $s2, $s0, $s1 case1: sub .. 2024. 2. 2.
가상화(Virtualization) 하나의 H/W system에 다수의 Virtual Machine(OS)이 동작할 수 있게 하는 기술로서 가상화 방식에 따라 크게 두 가지 방식으로 분류 됨. 하이퍼바이저 가상화(Type I) 호스트 OS가 필요 없이 직접 H/W에 Hypervisor를 설치하여 Guest OS를 관리하고 구동 시키는 방식(Bare metal 가상화). 각 Guest OS는 Hypervisor와의 통신을 위해 수정된 코드를 구현해야 반가상화 / 전가상화로 더욱 세분화. 호스트 가상화(Type II) Host OS 위에 가상화 소프트웨어를 통해 Guest OS가 구동되는 방식(e.g Windows OS에 설치해서 사용하는 Virtaul Box등) VM의 H/W resource 관련 I/O 요청이 반드시 호스트 OS를 통해야 .. 2024. 1. 30.
U-boot command U-boot가 부팅하고 나면 커널 부팅 외에도 다양한 service를 제공한다. 이를 CLI기반으로 command를 통해 실행할 수 있다. Kernel booting 관련 command U-boot에서 kernel 부팅 시 'bootargs' 라는 변수의 값 전달하여 linux kernel 부팅 Ex) CONFIG_BOOTARGS="console=ttyAMA0,115200n8 rootfstype=ramfs rdinit=/linuxrc root=/dev/ram0 rw rootwait" U-boot 부팅 관련 variable: u-boot에서 부팅 시, image들에 대한 memory 위치 정보를 하기 table의 변수를 통해 제공 ex) fdt_addr_r은 fdt가 load될 RAM 위치를 제공하고, f.. 2023. 12. 28.
728x90