일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 다익스트라
- 전송 계층
- 임베디드
- Transport layer
- 데이터베이스
- Database
- Djikstra
- 네트워크
- Embedded
- 자료구조
- leetcode
- DB
- swea
- 부트시퀀스
- Network
- BHS
- ps
- 관계형 모델
- 문제풀이
- Application Layer
- 응용 계층
- dp
- baekjoon
- 프로그래머스
- boot sequence
- BST
- STL
- 릿코드
- 백준
- C++
- Today
- Total
목록Embedded (11)
BOBO's Note

리눅스는 다양한 상황에서 전력을 관리한다. 예를 들어 프로세스를 잠시 멈추었다가 시작할 때, CPU가 idle하거나 부하가 작은 작업을 할 때 전력을 적게 소모하도록 관리하고 있다. Background Energy(에너지)와 Power(전력)은 다르다. 에너지는 전체 시간동안 소모된 총 전력량이다. CPU의 전력 소모량은 크게 두 부분으로 나뉜다. CPU의 상태와 관계없이 항상 일정량 소모되는 과 CPU 상태에 따라 달라지는 으로 구성된다. 이때, 은 capacitor, frequency, voltage에 의해 결정된다. voltage가 일정하다고 가정할 때, frequency를 낮추면 가 줄어든다. 이로 인해 도 줄어들기 때문에 일을 처리하기 위한 시간이 오래 걸린다. 반대로 frequency를 높이면..
Bare Metal Bare Metal은 운영체제가 설치되어 있지 않은 컴퓨터 하드웨어를 의미한다. Bare Metal Programming은 운영체제 없이 바로 하드웨어를 제어하는 형태의 프로그래밍이다. 임베디드 시스템에서는 운영체제를 구동하는 것 자체도 오버헤드가 큰 작업일 수 있다. 또는 특정 하드웨어를 오직 한 애플리케이션에서만 제어하기 때문에 굳이 OS로 자원을 관리해줄 필요가 없는 경우도 있다. 이런 경우, 베어 메탈 프로그래밍을 통해 하드웨어를 제어하는 것이 더 좋다. 베어 메탈 프로그램을 이미지로 만들어서 하드웨어에 포팅한다. 부팅 단계에서 커널 이미지 대신에 우리가 개발한 이미지로 실행되도록 한다(이런 관점에서 커널도 일종의 베어 메탈 프로그램이라 볼 수 있다). 예제 코드 베어 메탈 프..

임베디드 시스템에서 외부 디바이스와 통신할 때 high bandwidth가 필요하지 않은 경우, 주로 사용하는 인터페이스는 다음과 같다. I2C SPI UART GPIO GPIO GPIO는 General Puprpose Input Output의 약자로, pin의 용도를 정해놓지 않고 사용자가 자유롭게 input 또는 output 핀으로 사용할 수 있다. 한편, 보드에서 하나의 pin이 GPIO 외에 I2C와 같이 미리 정의된 기능에 연결되어 있을 수도 있는데, 이를 alternative functionality라고 한다. 핀의 모드를 설정해줌으로써 GPIO 또는 alternative functionality로 사용할 수 있다. 프로세스에서는 Memory Mapped I/O를 통해 GPIO 핀에 접근한다...

Interrupt 인터럽트란 CPU가 프로그램을 실행 중일 때, I/O 하드웨어 등의 디바이스나 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려주는 것이다. 인터럽트는 크게 HW 인터럽트와 SW 인터럽트로 나뉜다. HW 인터럽트(=interrupt): 하드웨어가 발생시키는 전기적 신호이다. 주로 인터럽트라고 하면 HW 인터럽트를 의미한다. (예. I/O, timer, console 등) SW 인터럽트(=trap): exception과 시스템 콜이 SW 인터럽트에 해당한다. Exception: 프로그램 실행 중 발생하는 예기치 못한 에러이다. (예. divided by 0) System Call: 프로세스와 커널 사이의 인터페이스로, user 프로세스에서 privileged operation을 하고..
Kernel Modules 커널 모듈은 커널 모드로 실행되어야 하는 프로그램이며 확장자는 .ko이다. 부팅 후 필요할 때 동적으로 로드해 커널에 포함시킬 수 있어 커널 이미지 크기를 줄이는 데에 도움을 주고, 부팅 시간을 줄여준다. root 권한을 가진 사용자만 커널 모듈을 로드/언로드할 수 있다. dmesg 커맨드로 시스템 부팅시 출력되는 메세지와 커널에서 출력(예. printk(), pr_info(), pr_alert() 등)하는 로그 메세지를 확인할 수 있다. kernel module과 관련된 커맨드는 다음과 같다. modinfo : 해당 커널 모듈에 대한 정보를 출력한다. lsmod: 로드된 커널 모듈 목록을 출력한다. sudo insmod .ko: 해당 커널 모듈을 로드한다. sudo rmmod..

Android Boot Sequence 안드로이드는 리눅스 기반의 운영체제이기 때문에 리눅스 부팅 과정과 흡사하다. 그리고 대부분의 안드로이드 기반 시스템은 ARM 프로세서를 사용한다. 따라서 일반적인 boot sequence에 대해 헷갈린다면, 먼저 이 글을 읽고 오자! 2020/05/25 - [Embedded System] - Generic Boot Sequence Generic Boot Sequence BOBO's Note Generic Boot Sequence 본문 Embedded System Generic Boot Sequence bobo_hee 2020. 5. 25. 23:32 Prev 1 2 3 4 5 6 ··· 8 Next bobo-dev.tistory.com 2020/05/26 - [Em..

일반적인 boot sequence에 대해 헷갈린다면, 이 글을 먼저 보고 오자! 2020/05/25 - [Embedded System] - Generic Boot Sequence Generic Boot Sequence BOBO's Note Generic Boot Sequence 본문 Embedded System Generic Boot Sequence bobo_hee 2020. 5. 25. 23:32 Prev 1 2 3 4 5 6 ··· 8 Next bobo-dev.tistory.com 임베디드 시스템의 Boot Sequence 일반적인 임베디드 시스템에서의 boot sequence는 다음과 같은 순서로 진행된다. ROM 코드: SoC에 위치한 ROM에 boot code를 저장해놓는다. ROM 코드는 스토..

Linux Boot Sequence 컴퓨터에 전원이 들어와 운영체제의 로그인 화면이 뜨기 전까지 여러 과정을 거치게 된다. 보통 다음과 같은 순서를 따른다. 컴퓨터에 전원이 들어오면 ROM에 저장된 BIOS 코드를 실행시킨다. BIOS란, Basic Input/Output System의 약자로, 부팅에 필요한 다양한 주변 장치(예. CPU, RAM, 디스크, USB 장치 등)를 인식하고, I/O 및 동작을 확인하여 초기화한다. 그 후, stage 1 부트로더를 로드한다. POST (Power On Self Test): 주변 장치의 상태 확인 및 초기화, 인터럽트, 메모리 범위, I/O 포트 등을 정리한다. UEFI BIOS: Legacy BIOS를 대체하는 새로운 시스템으로, 2TB 이상의 디스크를 인식..