Tina-Linux 부트로더 빌드 및 환경 설정 심화 가이드

Tina-Linux 부트로더 아키텍처 및 디렉터리 구조 Tina-Linux SDK에서 부트로더(Bootloader) 관련 소스 코드는 주로 lichee/brandy-2.0 경로에 위치합니다. 해당 디렉터리의 최상위 구조는 다음과 같이 구성되어 있습니다. user@dev-machine:~/tina-sdk/lichee/brandy-2.0$ tree -L 1 . ├── build.sh # 통합 빌드 스크립트 ├── opensbi # RISC-V 오픈소스 SB ...

8월 4일 22:54에 게시됨

STM32MP157 기반 U-Boot 이식 및 커스텀 보드 초기화 전략

1. 공식 소스 확보 및 빌드 환경 구축 STM32MP1 플랫폼에서 U-Boot 을移植하기 위해서는 먼저 스타크레디미컬(STMicroelectronics) 에서 제공하는 공식 소스 코드를 기반으로 작업해야 합니다. 일반적으로 OpenSTLinux 프레임워크 내에서 호스트된 U-Boot 소스를 활용하며, 구체적인 버전은 프로젝트 요구사항에 맞춰 선택합니다. 1.1 소스 추출 및 패치 처리 압축된 U-Bo ...

7월 30일 09:47에 게시됨

리눅스 디바이스 트리: 커널 포팅

리눅스 커널 부트 프로세스 uboot는 bootcmd 명령어를 통해 커널을 실행합니다: bootcmd="nand read 0x30000000 kernel; bootm 0x30000000" uboot는 NAND에서 커널 이미지를 0x30000000 메모리 주소로 복사한 후 bootm 명령을 실행합니다. bootm 명령 처리 bootm은 운영체제 맵을 시작하는 함수로, arch/arm/lib/bootm.c의 do_bootm_linux 함수를 호출합니다: int handle_ ...

7월 22일 12:07에 게시됨

U-Boot 내장 환경 변수 구현 및 적용 실험

내장 환경 변수의 목적 CFG_ENV_IS_IN_FLASH 또는 CFG_ENV_IS_IN_NAND가 정의된 경우에만 ENV_IS_EMBEDDED 기능이 활성화됩니다. 본 실험에서는 NOR 플래시를 기준으로 설명합니다. U-Boot 바이너리(100KB+)와 환경 변수 저장에 필요한 섹터 크기 간 차이에서 발생하는 문제를 해결합니다. 일반적으로 플래시 전반부에는 8KB 섹터가 존재하나 후반부는 64KB 섹터로 구성됩 ...

6월 17일 20:24에 게시됨

U-Boot 부팅 시퀀스 분석: init_sequence 배열과 핵심 초기화 함수 구현

U-Boot의 초기 부팅 단계에서 하드웨어와 소프트웨어 환경을 설정하는 핵심 메커니즘은 init_sequence라는 함수 포인터 배열을 통해 이루어집니다. 이 배열은 시스템이 본格的인 OS 부팅을 수행하기 전에 반드시 거쳐야 하는 초기화 작업들을 순차적으로 정의하고 있습니다. 본 글에서는 S3C2410 기반의 ARM9 보드를 예시로 들어, init_sequence의 구성 요소와 각 함수의 ...

6월 11일 02:29에 게시됨

U-Boot find_cmd 함수 동작 원리와 명령어 검색 메커니즘

명령어 테이블 구조체 U-Boot에서 각 명령어는 cmd_tbl_s 구조체로 표현되며, 명령어 이름, 인자 개수, 실행 함수, 도움말 등을 포함한다. struct cmd_tbl_s { char *cmd_name; /* 명령어 이름 */ int arg_max; /* 최대 인자 수 */ int auto_repeat; /* 자동 반복 가능 여부 */ int (*exec)(struct cmd_tbl_s *, int, int, ...

6월 7일 21:48에 게시됨

U-Boot 환경 변수 초기화 메커니즘 분석

환경 변수의 역할과 저장 구조 환경 변수는 시스템 부팅 시 사용되는 전역 설정 정보를 의미하며, 영구 저장 장치(예: NOR/NAND 플래시)에 저장되어야 하며, 실행 중에 조회 및 수정이 가능해야 합니다. 부팅 과정에서 먼저 환경 변수를 메모리에 로드한 후, 하드웨어 초기화 및 운영체제 시작에 활용됩니다. 환경 변수 저장 위치와 로드 위치 결정 플래시 메모리에 저장 ...

6월 6일 02:07에 게시됨

ARM GCC에서 전역 레지스터 변수 활용하기

U-Boot 소스에서 register volatile gd_t *gd asm ("r8")와 같은 구문을 마주쳤을 때, 단순한 변수 선언으로 보이지만 실제로는 CPU 레지스터를 직접 활용하는 고급 기법이다. 이 글에서는 ARM 아키텍처에서 레지스터 변수를 정의하고 활용하는 방법을 살펴본다. 레지스터 변수의 개념 일반적인 변수는 메모리에 저장되어 접근 시마다 메모리 버스를 통한 트랜잭션이 발 ...

5월 22일 19:37에 게시됨

Uboot RGB LCD 스크린 지원 수정하기

1. Uboot 디바이스 트리 수정 Tina-SDK 디렉터리에서 device/config/chips/t113/configs/100ask 폴더로 이동한 후, uboot-board.dts 파일을 찾습니다. 이 파일은 uboot에서 사용하는 디바이스 트리 설정 파일이며, 여기에 7인치 RGB 디스플레이에 해당하는 디바이스 트리 노드를 추가해야 합니다. ubuntu@ubuntu1804:~/tina-d1-h/device/config/chips/t113/configs/100ask$ ...

5월 22일 05:39에 게시됨