임베디드 스터디 - NFS
임베디드 Linux 개발 환경의 NFS 마운팅을 학습한다. NFS를 통한 원격 루트 파일시스템 마운트 원리, /etc/exports 서버 설정과 no_root_squash 옵션, U-Boot bootargs를 이용한 타겟 보드 NFS 루트 설정, tftp+NFS 개발 환경 전체 흐름을 다룬다.
임베디드 Linux 개발 환경의 NFS 마운팅을 학습한다. NFS를 통한 원격 루트 파일시스템 마운트 원리, /etc/exports 서버 설정과 no_root_squash 옵션, U-Boot bootargs를 이용한 타겟 보드 NFS 루트 설정, tftp+NFS 개발 환경 전체 흐름을 다룬다.
임베디드 Linux의 초기 RAM 디스크를 학습한다. 루트 파일시스템 마운트의 닭-달걀 문제, initrd와 initramfs 차이, initramfs 내부 구성과 /init 실행 흐름, 그리고 경량 유틸리티 모음인 BusyBox의 구조와 동작 방식을 다룬다.
임베디드 Linux의 플래시 메모리 관리를 학습한다. NAND Flash의 Bad Block·Wear Leveling 문제, MTD 서브시스템 역할, Log-Structured 방식의 JFFS2와 UBI 논리 블록 매핑 기반의 UBIFS 파일시스템 구조를 다룬다.
임베디드 Linux의 2nd Stage 부트로더 U-Boot을 학습한다. SPL의 DRAM 초기화와 U-Boot Proper 로드 과정, bootcmd·bootm 환경변수 설정, tftp/nfs 네트워크 마운팅을 활용한 개발 방식과 SD카드/eMMC 기반 양산 부팅 방식을 다룬다.
임베디드 C의 함수 포인터와 콜백 패턴을 학습한다. typedef를 활용한 함수 포인터 선언, 이벤트 핸들러·디스패치 테이블·상태 기계(State Machine) 콜백 구현 패턴, 함수 포인터 사용 시 주의사항을 다룬다.
PC/임베디드 Linux의 OS 부팅 절차를 학습한다. BIOS·UEFI 차이, MBR/GPT 디스크 구조, POST 자가진단, GRUB Stage 실행 흐름, 그리고 커널 스타트업 코드에서 start_kernel()·systemd(PID 1)까지의 부팅 과정을 다룬다.
임베디드 부트로더를 학습한다. OS 기반 펌웨어의 1st/2nd Stage 부트 과정, Flash XIP의 한계, BootROM·U-Boot 역할, 그리고 베어메탈 스타트업 코드와 부트로더 기반 시스템의 실행 흐름 차이를 다룬다.
임베디드 크로스 개발 환경을 학습한다. arm-none-eabi-gcc 툴체인 명칭 구조, GDB·OpenOCD·JTAG 어댑터(J-Link/ST-Link)로 구성된 크로스 디버깅 환경, 하드웨어 브레이크포인트 제약, GDB 주요 명령어 활용법을 다룬다.
임베디드 C의 Struct·Union·Enum·Bitfield 타입을 학습한다. Struct 패딩 최적화와 packed 속성, Designated Initializer, FAM, Opaque 포인터 캡슐화, Union을 이용한 Type Punning과 레지스터 오버레이, Enum 상수 선언, Bitfield 이식성 문제와 MISRA 권장 대안을 다룬다.
임베디드 펌웨어의 ELF 파일 포맷을 학습한다. ELF 헤더·섹션·세그먼트 구조, .elf에서 .bin/.hex 변환 원리, 그리고 binutils(objdump·nm·readelf·size·objcopy)를 활용한 펌웨어 분석 방법을 다룬다.