티스토리 뷰

반응형

U-Boot은 부트로더로, 다양한 아키텍처와 보드에서 시스템 부팅을 지원합니다. U-Boot의 디렉터리 구조는 여러 구성 요소로 나누어져 있으며, 각 디렉터리는 특정한 역할을 수행합니다. 다음은 U-Boot 디렉터리의 설명입니다:

1. arch
   - 아키텍처별 코드가 포함된 디렉터리입니다. 예를 들어, ARM, x86, PowerPC 등 다양한 CPU 아키텍처에 대한 초기화 코드와 설정이 여기에 포함됩니다.

2. board
   - 특정 보드에 대한 초기화 코드와 설정 파일이 포함된 디렉터리입니다. 각 보드에 대한 설정, 메모리 맵, 장치 초기화 코드 등이 여기에 있습니다.

3. cmd
   - U-Boot 명령어 구현이 포함된 디렉터리입니다. 사용자가 U-Boot 콘솔에서 실행할 수 있는 명령어들이 여기에 구현되어 있습니다.

4. common
   - 공통 코드가 포함된 디렉터리입니다. 다양한 아키텍처와 보드에서 공유하는 코드들이 여기에 포함됩니다. 주로 U-Boot의 핵심 기능을 담당합니다.

5. disk
   - 디스크 관련 기능이 포함된 디렉터리입니다. 파티션 관리, 파일 시스템 드라이버 등 디스크와 관련된 코드가 여기에 있습니다.

6. drivers
   - 하드웨어 드라이버가 포함된 디렉터리입니다. 다양한 하드웨어 장치(네트워크, 시리얼 포트, USB, I2C 등)에 대한 드라이버 코드가 여기에 있습니다.

7. dts
   - 장치 트리 소스 파일이 포함된 디렉터리입니다. 장치 트리는 하드웨어 구성 요소와 그들 간의 관계를 설명하는 데이터 구조로, 시스템 부팅 시 사용됩니다.

8. env
   - 환경 변수와 관련된 코드가 포함된 디렉터리입니다. U-Boot 환경 변수의 저장 및 관리를 담당합니다.

9. examples
   - U-Boot 기능을 시연하는 예제 코드가 포함된 디렉터리입니다. 다양한 기능을 어떻게 사용할 수 있는지 보여주는 샘플 코드가 여기에 있습니다.

10. fs
    - 파일 시스템 관련 코드가 포함된 디렉터리입니다. FAT, ext2/3/4 등 다양한 파일 시스템 드라이버가 여기에 포함됩니다.

11. include
    - 헤더 파일이 포함된 디렉터리입니다. U-Boot의 전역 헤더 파일과 정의들이 여기에 있습니다.

12. lib
    - 라이브러리 코드가 포함된 디렉터리입니다. U-Boot에서 공통적으로 사용되는 라이브러리 함수들이 여기에 포함됩니다.

13. net
    - 네트워크 관련 코드가 포함된 디렉터리입니다. 네트워크 스택, 프로토콜 구현, 네트워크 장치 드라이버 등이 여기에 있습니다.

14. scripts
    - 빌드 스크립트가 포함된 디렉터리입니다. U-Boot의 빌드 및 설정을 자동화하는 스크립트들이 여기에 있습니다.

15. source
    - U-Boot의 소스 파일들이 포함된 디렉터리입니다. (이 디렉터리는 일반적으로 사용되지 않으며, 특정 프로젝트 설정에 따라 다를 수 있습니다)

16. spl
    - Secondary Program Loader (SPL) 코드가 포함된 디렉터리입니다. SPL은 메인 U-Boot 로더를 로드하는 작은 부트로더입니다.

17. tools
    - U-Boot 빌드 및 개발에 필요한 도구들이 포함된 디렉터리입니다. mkimage, genimage 등 U-Boot 이미지를 생성하는 도구들이 여기에 있습니다.

 

 

 

 

Secondary Program Loader (SPL)

Secondary Program Loader (SPL)는 U-Boot 부트로더의 한 부분으로, 메인 U-Boot 이미지를 로드하는 작은 부트로더입니다. SPL은 주로 메모리가 제한된 시스템이나 부트로더 이미지 크기를 최소화해야 하는 경우에 사용됩니다.

SPL의 주요 역할은 다음과 같습니다:

1. 시스템 초기화: SPL은 메모리 컨트롤러 및 다른 핵심 하드웨어를 초기화하여 메모리 시스템의 사용 가능한 부분을 설정합니다. 이는 메인 U-Boot 이미지를 로드하기 전에 필요한 시스템의 최소한의 구성을 확보하는 것을 의미합니다.

2. 부트로더 이미지 로드: SPL은 보통 플래시 또는 다른 영구 저장 장치에서 메인 U-Boot 이미지를 로드합니다. 이 이미지는 주로 크고, 모든 기능을 포함하는 완전한 U-Boot 부트로더입니다.

3. 메모리 관리: SPL은 메인 U-Boot 이미지를 로드할 때 필요한 메모리를 할당하고 관리합니다. 이는 주로 시스템의 초기 부트로더로, 메인 U-Boot이 동작하기 위해 필요한 최소 메모리 영역을 확보하는 것을 포함합니다.

4. 시스템 설정: SPL은 메인 U-Boot 이미지를 로드하기 전에 부팅에 필요한 기본 시스템 설정을 수행합니다. 이는 부트로더 환경 변수를 설정하고, 장치 트리(DTS)를 로드하고, 필요한 디바이스 드라이버를 초기화하는 것을 포함할 수 있습니다.

SPL은 전체 U-Boot 부트로더의 크기를 최소화하기 위해 설계되었습니다. 일반적으로 임베디드 시스템에서 사용되며, 메인 U-Boot 이미지가 크거나 메모리가 제한된 경우에 특히 유용합니다. SPL은 부트로더의 초기 단계에서 실행되며, 이후 메인 U-Boot 부트로더가 실행됩니다.

 

 

 

 

리눅스 부팅후 항상 실행되야할 프로그램을 실행하는 방법

리눅스 부팅 후 항상 실행되어야 하는 프로그램을 실행하는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법 중 하나는 시스템 서비스를 설정하는 것입니다. 시스템 서비스는 리눅스 시스템이 부팅될 때 자동으로 시작되는 프로그램입니다. 시스템 서비스를 설정하는 방법은 리눅스 배포판에 따라 다를 수 있지만, 대부분의 경우에는 다음과 같은 단계를 따릅니다:

1. 시스템 서비스 파일 생성 또는 편집: 시스템 서비스는 보통 '/etc/systemd/system' 또는 '/etc/init.d' 디렉터리에 위치합니다. 새로운 서비스를 만들거나 기존의 서비스 파일을 편집하여 실행하고자 하는 프로그램을 지정합니다.

2. 시스템 서비스 내용 작성: 서비스 파일에는 프로그램을 실행하는 명령 또는 스크립트를 지정해야 합니다. 일반적으로는 해당 프로그램의 실행 명령과 필요한 옵션을 지정합니다.

3. 시스템 서비스 활성화: 시스템 서비스를 활성화하여 부팅 시 자동으로 시작되도록 설정합니다.

리눅스 배포판에 따라 시스템 서비스를 설정하는 방법이 다를 수 있으므로, 사용 중인 배포판의 문서를 참조하는 것이 가장 좋습니다. 대부분의 현대적인 리눅스 배포판은 systemd를 사용하므로, systemd 서비스를 설정하는 방법을 살펴보겠습니다.

systemd를 사용하는 경우:

1. 시스템 서비스 파일 생성 또는 편집: '/etc/systemd/system' 디렉터리에 새로운 서비스 파일을 만들거나 기존의 서비스 파일을 편집합니다. 예를 들어, 'my_service.service'와 같은 파일을 생성합니다.

2. 시스템 서비스 내용 작성:

   [Unit]
   Description=My Service
   After=network.target
   
   [Service]
   Type=simple
   ExecStart=/path/to/your/program
   
   [Install]
   WantedBy=default.target


   
   - 'Description': 서비스에 대한 설명입니다.
   - 'After': 어떤 유닛(서비스 또는 타겟)이 실행된 후에 이 서비스를 실행할지 지정합니다. 예를 들어, 네트워크가 설정된 후에 실행되어야 하는 경우 'network.target'을 지정합니다.
   - 'Type': 서비스의 타입을 지정합니다. 대부분의 경우 'simple'을 사용합니다.
   - 'ExecStart': 서비스가 시작될 때 실행될 명령을 지정합니다.
   - 'WantedBy': 서비스를 시작하는 시기를 결정하는 타겟을 지정합니다. 대부분의 경우 'default.target'을 사용합니다.

3. 시스템 서비스 활성화:  

sudo systemctl enable my_service.service


   
   이 명령은 시스템 부팅 시에 자동으로 서비스를 시작하도록 systemd에 지시합니다.

위와 같은 단계를 따르면 리눅스 부팅 후 항상 실행되어야 하는 프로그램을 설정할 수 있습니다.

 

 

 

 

u-boot.bin, u-boot.img, u-boot-dtb.img

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
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
글 보관함