[세미나] "Fundamentals of embedded linux" NDC TechTown 2022.11
·
Insights/Seminar !
https://youtu.be/BdKyq56Cijo?si=vzkmvPCDzcLH8ri0책 "Mastering Embedded Linux Programming" 의 저자중 한분이신 Chris Simmons 개발자님의 "Fundamentals of embedded linux(2022)"강연을 정리해 보았다. Why Embedded Linux?왜 임베디드 리눅스를 써야할까?1. Moore's law : 무어의 법칙에 따라 Chip들은 굉장히 복잡해지고있다. 따라서, 이런 복잡한 칩을 사용하는 현대 디바이스들을 적절히 활용하기 위해선 복잡한 시스템인 리눅스가 필요하다.2. 리눅스는 무료다 : 소스코드를 다운받아 수정하는 것 모두가 무료이다.3. 기능적이다 : 많은 범위의 HW들을 지원한다.4. 최신식 SW이다 ..
[운영체제] '파일 시스템'이란 무엇인가? (파일 시스템, 파일 관리자, 파일 테이블, 파일 디스크립터, 파일 헤더)
·
소프트웨어/운영체제
디스크를 포맷해본 경험이 있다면 한번쯤은 봤을 메뉴화면이다. FAT32, NTFS 그리고 리눅스의 경우 ext2, ext3. 파일 시스템이란 무엇인가? 파일 시스템? 파일 관리자? 파일 디스크립터??운영체제는 사용자가 다른 사용자의 파일을 훼손하는 경우를 방지하기 위해 '응용 프로그램의 직접적인 파일 접근을 불허'한다. 그 대신, 파일을 관리하고 보관하는 '파일 관리자'를 두어 저장장치의 관리를 맡기는데 이를 '파일 시스템'이라고 한다. 가상 메모리에서 MMU(메모리 관리 유닛)가 메모리 매핑 테이블을 이용해 가상 주소를 물리 주소로 변환하듯, 저장장치는 파일 시스템의 '파일 관리자'라는 녀석이 '파일 테이블'을 사용해 파일의 생성, 수정, 삭제 등을 수행한다. 또한 사용자가 파일을 사용하고자 할 때 읽..
[컴퓨터 구조] 최고의 ALU 내부 로직 설명 영상
·
Embedded Systems/MCU 기본
아래 3가지 영상을 보고 ALU 원리를 (마침내)직관적으로 이해하게 되었다. ALU 작동 원리를 복습하던 중, 유튜브에서 명료하게 동작을 이해할 수 있는 소스를 찾고있었다. 그러던 중 직관적으로 ALU의 동작과 SRAM의 동작을 트렌지스터 레벨로 설명하는 core dumped라는 유튜버의 영상을 찾았다. 영상은 작은 트렌지스터로의 동작 원리로 부터 AND OR NOT 게이트의 원리를 설명한다. 그리고 XOR과 Binary Decoder, Gated Latch를 설명한 뒤, 이 것들을 활용해 Full Adder 와 Full Subtractor, N-bits Register, MUX, N-Bit Adder 가 어떻게 구성되는지 설명해주었다. 마지막으로 SRAM과 ALU가 어떻게 구성되는지까지 간단한 도식으로..
[운영체제] '이미지'란 무엇인가? (디스크 이미지, 커널 이미지)
·
소프트웨어/운영체제
임베디드 리눅스 공부를 하면서, 계속해서 '이미지'라는 말이 나오는데 한번도 이미지가 무엇인지 명료하게 정리한 적이 없는 것 같아 이해에 어려움이 있었다. 디스크, 커널 의 맥락에서 '이미지'란 무엇인지 정리하여 향후 개념을 이해하는데에 어려움이 없도록 대비하고자 정리하여 글을 쓴다. 글쓰기의 용이함에 맞추어 개념을 넓혀가며 이해하는 방식으로 글을 써봤다. 우선 결론은,disk image는 원본 소스와 데이터 구조까지 100% 동일한 드라이브의 압축본 이고kernel image는 부팅 시 kernel을 메모리에 올리기 위해 필요한 "리눅스 커널을 컴파일한 실행파일"을 의미하는 것이다. 디스크 이미지, 커널 이미지?사진이 아닌 '이미지'를 생각했을 때 가장 먼저 떠오르는 단어는 '디스크 이미지'와 '커널..
[linux] gcc를 이용한 소스 코드 빌드 과정
·
Embedded Systems/리눅스
gcc를 이용한 소스 코드 빌드 과정을 그림으로 그려봤다.linux에서 gcc 컴파일러를 이용한 소스코드 빌드 과정은 windows의 빌드와 동일하게 컴파일과 링크 과정으로 나눌 수 있다.컴파일 과정은 소스코드를 어셈블리어인 목적 파일(object code)로 만드는 과정이다.그 순서는 가장 먼저 #include나 #define과 같은 전처리기들을 처리한 뒤, ccl이라는 컴파일러와 as라는 어셈블러를 통해 목적 파일을 생성한다. 이 때 stdio.h나 unistd.h 같은 헤더 파일이 별도로 필요하다. 링크는 여러 목적 파일들을 묶어 하나의 실행파일로 만드는 과정이다. 링크를 할 때는 정적 혹은 공유 라이브러리가 필요하다.링크 과정이 끝나면 실행파일(a.out)이 생성된다!