메뉴 건너뛰기

NEOS White Paper

NEOS rom 부팅 가이드

관리자1 2016.05.31 12:33 조회 수 : 135

1. 개요

  U-Boot 부트로더를 이용하여 NAND Flash memory로부터 NEOS 실시간 운영체제를 부팅하는 과정을 위한 설명서이다. 더 상세한 설명이 필요한 사용자의 경우에는 GNU 홈페이지의 U-Boot 부트로더 메뉴얼을 참고하도록 한다.

2. 환경 변수 설정 

2.1 개요 

U-Boot는 리눅스 환경에 최적화된 임베디드 보드용 부트로더이다. 부트로더는 특정 CPU에 OS 또는 특정한 프로그램을 구동시킬 수 있도록 CPU가 동작하는데 필요한 기초적인 하드웨어 설정 등을 수행하는 프로그램이다. U-Boot가 지원하는 하드웨어는 매우 광범위하며, 사용하는 타겟보드에 따라 지원가능한 기능들이 제한된다. 여기서는 아래와 같은 하드웨어를 사용하여 Flash 부팅을 수행하는 방법을 설명한다.

  • CPU: OMAP-L138
  • RAM: 128MB
  • NAND: 1024MB

2.2 환경 변수

Flash 부팅을 하기 위해서는 다음과 같이 U-Boot 상에서 환경변수를 저장해주어야 한다. 

  • NAND 부팅을 위한 이미지 위치
    • Boot Loader : NAND offset = 0x00000000 (Reserved 영역)
    • NEOS Image: NAND offset = 0x00100000 
    • DSP Image:  NAND offset = 0x00800000
  • NEOS 부팅을 위한 RAM 상의 위치
    • NEOS OS Address : 0xC0100000 (환경변수 neosaddr에 저장)
    • DSP Image Address: 0xC2000000 (환경변수 dspaddr에 저장)

주의사항: 현재 NAND 플래시의 16MB 이후 영역은 파일시스템 예약 공간으로 NEOS 이미지는 7MB, DSP 이미지는 8MB까지 사용가능함

2.2.1 TFTP 다운로드를 위한 IP 설정

  • ipaddr: Target board에서 사용할 IP 주소
  • serverip: Host PC에서 사용하는 IP 주소
  • Target board의 IP 주소는 서버 IP 주소와 Gateway가 같아야 정상 동작함 

TFTP 다운로드를 위한 IP 설정.jpg

2.2.2 프로그램 다운로드 위치 변수 

  • neosaddr : NEOS 부팅을 위한 RAM상의 주소
  • dspaddr : DSP 이미지 사용을 위한 RAM상의 주소
    • 현재 NEOS에서는 0xC2000000 주소에서 DSP 이미지를 읽도록 설정되어 있음. 추후 이 주소를 바꾸고 싶은 경우, NEOS에서 DSP 이미지를 로딩하는 부분에 입력 주소값을 바꿔주고 환경변수 또한 바꿔서 사용하면 됨

NEOS 부팅을 위한 RAM상의 주소 설정.jpg

 

2.2.3 NEOS Image 저장 환경 변수

  • NEOS 이미지 파일을 NAND Flash 메모리에 저장하기 위한 환경변수를 설정
  • 아래 이미지와 같이 TFTP 다운로드, Erase NAND Flash, Write NAND Flash를 순차적으로 수행하는 환경변수를 설정하여 사용할 수 있다.
  • 부트로더 명령어에 대한 설명
    • tftp: TFTP를 이용하여 지정된 파일을 Host PC로부터 다운로드하고 로드된 파일의 사이즈를 ${filesize} 환경변수에 저장
    • setenv: 기존의 환경변수를 삭제하거나 새로운 환경변수를 등록
      • 저장한 ${filesize} 변수의 값을 ${neossize} 환경변수에 등록
    • nand erase: 지정된 오프셋에서 ${neossize}만큼 삭제(Block 단위 수행)
    • nand write: 지정된 RAM 상의 주소에서 데이터를 읽어서 지정된 오프셋부터 ${neossize}만큼 NAND Flash 메모리에 저장
    • saveenv: RAM상에 저장된 환경변수 데이터를 Flash 메모리에 저장

 

NEOS 이미지 파일을 NAND Flash에 저장하기 위한 환경변수.jpg

 

2.2.4 DSP Image 저장 환경 변수 

  • DSP 이미지 파일을 NAND Flash 메모리에 저장하기 위한 환경변수를 설정
  • 아래 이미지와 같이 TFTP 다운로드, Erase NAND Flash, Write NAND Flash를 순차적으로 수행하는 환경변수를 설정하여 사용할 수 있다.
  • 환경변수에 대한 설명
    • dspfile: 저장할 DSP 이미지의 파일 이름
    • tftp: TFTP를 이용하여 지정된 파일을 Host PC로부터 다운로드하고 로드된 파일의 사이즈를 ${filesize} 환경변수에 저장
    • setenv: 기존의 환경변수를 삭제하거나 새로운 환경변수를 등록
      • 저장된 ${filesize} 값을 ${dspsize} 환경변수에 저장
    • nand erase: 지정된 오프셋에서 ${ dspsize }만큼 삭제(Block 단위 수행)
    • nand write: 지정된 RAM 상의 주소에서 데이터를 읽어서 지정된 오프셋부터 ${ dspsize }만큼 NAND Flash 메모리에 저장
    • saveenv: RAM 상에 저장된 환경변수 데이터를 Flash 메모리에 저장

DSP 이미지파일을 NAND에 복사하는 환경변수.jpg

 

2.2.5 Flash 부팅 환경 변수 

  • NAND Flash에 저장된 이미지를 읽어서 NEOS 부팅을 수행하는 환경변수
  • NAND Flash의 특정 오프셋(여기서는 0x100000)에 저장된 NEOS 이미지를 읽어서 부팅을 수행하는 환경변수를 저장하는 방법은 Figure 4와 같다. NAND Flash의 오프셋 주소가 0x100000인 이유는, 0x0 번지에는 부팅을 위한 부트로더가 저장되어 있기 때문이다.
  • 환경변수에 대한 설명
    • nand read: NAND Flash 메모리의 특정 오프셋부터 ${imagesize}만큼 지정된 RAM 상의 주소로 복사
    • run: 저장된 환경변수를 실행하는 명령어

NAND Flash 메모리에서 NEOS를 로드하여 부팅하는 환경변수.jpg

 

NAND Flash에서 NEOS를 로드하여 부팅 실행 결과.jpg

 

 

  • 위에서 설명한 방법은 NEOS 이미지만을 이용하여 부팅하는 방법이다.
  • 아래와 같이 설정하여 부팅하게 되면, NAND 플래시 메모리에서 NEOS 및 DSP 이미지를 로드하여 부팅을 하게 된다. Figure 2-8은 NEOS가 부팅후 DSP LED를 초기화하는 시험용 프로그램을 실행한 결과이다.

NAND Flash에서 NEOS 및 DSP이미지를 로드하여 부팅하는 환경변수.jpg

NEOS및 DSP를 이용한 NAND 부팅결과.jpg

 

2.2.6 Auto 부팅 환경 변수  

  • Auto 부팅을 위한 환경변수 저장
  • 환경변수 중 아래와 같은 환경변수에 값을 설정하면, 부트로더에서 자동으로 지정된 부팅 과정을 수행하게 된다.
    • bootdelay: 자동 진행을 멈추기위한 타임아웃 시간을 설정. 초단위로 설정
    • bootcmd: 자동 진행을 수행할 경우 실행될 부팅 과정을 지정
    •  보드의 전원을 켜면 3초동안 키입력을 기다리다가 키입력이 없을 경우, bootcmd 환경변수에 저장된 명령어를 자동으로 실행하게 된다.
    • setenv bootcmd run romboot : 앞에서 설명한 바와 같이 NEOS만을 이용하여 부팅을 수행하게 됨
    • setenv bootcmd run dspboot : 앞에서 설명한 바와 같이 NEOS 및 DSP 이미지를 이용하여 부팅을 수행하게 됨
    • 주의사항: bootdelay를 끄고 싶으면 값을 -1로 설정하면 된다. 또한 bootdelay 값으로 0을 설정하면 Auto 부팅 과정을 멈출수가 없어 문제가 생길 수 있으므로 최소값으로 1 이상의 값을 설정하여 사용하여야 한다

Auto 부팅을 위한 환경변수 설정.jpg

3. 결론 

U-Boot 상에서 NAND Flash 부팅을 하기 위해서는 앞서 설명한 환경변수들을 설정하여 사용 가능하다. 본 가이드에서 사용한 명령어 및 환경변수들은 기본적인 Flash 부팅을 수행하도록 되어있다. 추가 수행할 과정들이 필요할 경우, U-Boot 사용자 메뉴얼을 참조하여 환경변수를 수정하여 사용할 수 있다.

 

 

위로