Embedded14 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. 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. 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)에.. 2023. 12. 28. 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: 보드 관.. 2023. 12. 28. 이전 1 2 3 다음 728x90