Run if you want it
300x250

Embedded 10

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를 설정하므로서 데이터 전송 속도를 정함.

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에 접근

ARMv8 Exception Handling

Exception vector table에 mapping된 address로 Program Counter가 분기하게 되어 유발된 exception을 처리하는데 이를 Exception Handler라고 함. Synchronous Exception Handling 1. Memory Abort Memory Abort이 발생한 경우 ARM core는 PSTATE를 SPSR_EL1에 백업 PSTATE.EL 값을 변경할 EL로 업데이트 ELR_EL1 / ESR_EL1을 업데이트 이후 PC를 synchronous exeption handler인 VBAR_EL1 + 0x400의 주소로 분기하여 핸들러 호출을 통해 Memory Abort 처리 위 네 가지 과정은 Hardware적으로 처리 됨 이후 Exception vec..

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 ..

Memory type

메모리 영역 type Text(Code) 영역: 프로그램 명령 코드 자체를 저장하는 메모리 영역으로, Hex(16진수) 파일이나 BIN(2진수) 파일이 저장되는 영역 Data 영역: 전역변수, 정적변수, 배열, 구조체 등 valid한 값들로 초기화된 변수들이 저장되는 영역 초기화 되지 않은 변수는 BSS(Blocked Stated Symbol)영역(= .ZI영역, 0으로 초기화된)에 저장 Heap 영역: malloc(), new() 같은 동적인 메모리를 할당할 때 위치하는 메모리 영역 -> 힙의 경우 하위주소에서 상위주소로 할당을 진행 Stack 영역: 지역변수, 매개변수, 리턴값 등 잠시 사용되었다가 사라지는 임시 데이터를 저장하는 영역 -> 스택의 경우 상위주소에서 하위 주소로 할당을 진행 data영..

CS 2024.01.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..

U-Boot Sequence 및 구조 분석

u-boot의 entry point는 ENTRY(_start)로 기재한 것처럼 start.S파일의 _start이다. 해당 시퀀스에서는 reset을 통해, vector table을 세팅하고(세팅 전 boot params 저장), lowlevel_init 등을 수행하고 _main으로 jump. _main는 crt0.S에 작성되어 있는데 crt0.S의 목적은 C언어로 작성된 프로그램의 메인 함수를 호출하기 전에 필요한 초기화를 수행하는 루틴의 집합(crt == c runtime) 크게 board_init_f(), relocate_code(), board_init_r()로 나뉘어 수행한다. board_init_f() board_init_f() 호출 전에 stack address 및 gd(global data)에..

Bootloader(U-Boot) Overview

개요 전원 인가 시, 내부 ROM이 실행되어 Operation Mode에 맞게 Bootloader를 sram에 loading하고 실행되어 cpu 및 memory, hw 초기화 등을 수행하고 OS를 DRAM에 load하고 제어권을 넘기는 프로그램. U-boot 임베디드 장치에서 장치의 운영 체제 커널을 부팅하기 위한 지침을 패키징하는 데 사용되는 오픈 소스 기본 bootloader. ARM processor 기반 & 임베디드 Linux 시스템 경우 주로 u-boot를 사용 u-boot를 기반으로 자신의 system or board에 맞게 porting을 진행 directory 구성 arch: 주로 architecture에 dependency가 있는 code, start.S 코드가 위치 board: 보드 관..

0. 공부를 시작하며...

해당 도서를 가지고 공부를 하기 전 공부하는 이유와 마음가짐에 대하여 끄적여보려고 한다. 이직 23년에 들어서면서 이직을 마음먹고, 이직을 하게되었다. 물론 연봉이나 좀 더 나은 환경을 원했던 것도 있지만 업무적, 커리어 적으로 발전이 필요하고 원했던 시점이었다. 이직하기 전 업무는 주로 HAL단과 SDK platform 일을 하다가 좀 더 H/W, SoC와 가까운 커널에 대한 업무를 하고 싶었다. 출근 첫 주 원래 하던거보다 한 단계 아랫단인 커널을 주 업무로 하여금 일을 할 줄 알았는데, 첫 출근하여 일주일 정도 업무 파악을 해보니, 좀 더 core하고 h/w적인 펌웨어 업무를 한다는 것을 알게되었다.(학생 때 좋아했던 마이컴 수업이 생각나는...!) 물론 학생때 마이크로프로세서 수업과, 이전 회사에..

PACKAGECONFIG

Description Yocto recipe상에서 해당 레시피에 대한 feature에 대하여 enable하거나 disable 또는 dependency를 설정할 수 있는 변수로서 아래와 같은 형태로 사용한다. 기본형태 PACKAGECONFIG ??= "f1" PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1" 1. PACKAGECONFIG에 명시된 feature에 대하여 해당 feature에 대한 configure를 설정 ex) f1이 PACKAGECONFIG에 명시되어 있으므로 PACKAGECONFIG[f1]이 활성화 되어 정의된 configure 적용 2. 각 feature에 대한 configure 설정, 4 가지 config 설..

728x90