uboot 의 데이터 구조, 메모리 배분

4358 단어 uboot
1. uboot 의 데이터 구조
  u - boot 의 주요 기능 은 OS 를 유도 하 는 데 사용 되 지만 그 자체 도 강력 한 기능 을 제공 하여 명령 행 을 입력 하여 많은 작업 을 완성 할 수 있 습 니 다.그래서 그 자체 도 하나 예요.  매우 완 비 된 시스템.u - boot 의 대부분 조작 은 그 자체 의 데이터 구 조 를 중심 으로 하 는데 이런 데이터 구 조 는 통용 되 지만 서로 다른 판 에서 이 데 이 터 를 초기 화 하 는 것 은 다르다.그래서 u - boot 의 유 니 버 설 코드 는 이러한 중요 한 데이터 구조 에 의존한다.여기 서 말 하 는 데이터 구 조 는 사실 일부 전역 변수 이다.
  1)gd 전역 데이터 변수 포인터, u - boot 실행 에 필요 한 전역 데 이 터 를 저장 합 니 다. 형식 정의:
typedef struct global_data {
           bd_t  *bd;      //board data pointor      
           unsigned long flags;  //    ,           。
           unsigned long baudrate; //     
           unsigned long have_console; /*        */
           unsigned long reloc_off;   /*      ,                      ,   0 */
           unsigned long env_addr; /*       */
           unsigned long env_valid; /*     CRC       */
           unsigned long fb_base; /* base address of frame buffer */
           #ifdef CONFIG_VFD
           unsigned char vfd_type; /* display type */
           #endif
           void  **jt;  /*    ,1.1.6            */
          } gd_t;

  2) bd, 판 데이터 포인터.판 자 는 매우 많은 중요 한 매개 변수 가 있다. 형식 정 의 는 다음 과 같 습 니 다.
typedef struct bd_info {
             int   bi_baudrate;     /*       */
             unsigned long bi_ip_addr;   /* IP    */
             unsigned char bi_enetaddr[6]; /* MAC  */
             struct environment_s        *bi_env;
             ulong         bi_arch_number; /* unique id for this board */
             ulong         bi_boot_params; /*      */
             struct    /* RAM    */
             {
            ulong start;
            ulong size;
             }bi_dram[CONFIG_NR_DRAM_BANKS];
         } bd_t; 

   3) 환경 변수 포인터 envt *env_ptr = (env_t *)(&environment[0]);(common/env_flash.c)    env_ptr 는 환경 매개 변수 구역 을 가리 키 며 시스템 이 시 작 될 때 기본 적 인 환경 매개 변수 environment [] 를 common/environment. c 에 정의 합 니 다.    매개 변수 설명:      bootdelay 는 자동 으로 시작 하 는 대기 초 수 를 정의 합 니 다.      baudrate 는 직렬 콘 솔 의 포트 율 을 정의 합 니 다.      netmask 는 이 더 넷 인터페이스의 마스크 를 정의 합 니 다.      ethaddr 이 더 넷 인터페이스의 MAC 주 소 를 정의 합 니 다.      bootfile 에서 부족 한 다운로드 파일 을 정의 합 니 다.      bootargs 는 Linux 커 널 에 전달 되 는 명령 행 인 자 를 정의 합 니 다.      bootcmd 는 자동 으로 시작 할 때 실행 되 는 명령 을 정의 합 니 다.      server rip 정의 tftp 서버 쪽 IP 주소      ipaddr 로 컬 IP 주소 정의      stdin 정의 표준 입력 장치, 일반적으로 직렬 포트      stdout 정의 표준 출력 장치, 일반적으로 직렬 포트      stderr 정의 표준 오류 정보 출력 장치, 일반적으로 직렬 포트
4) 장치 관련:
   표준 IO 장치 배열t *stdio_devices[] = { NULL, NULL, NULL };    장치 목록 listt    devlist = 0;    device_t 의 정의: include\devices. h 중:
typedef struct {
     int flags;          /* Device flags: input/output/system */
     int ext;           /* Supported extensions   */
     char name[16];        /* Device name    */    
    /* GENERAL functions */    
     int (*start) (void);     /* To start the device   */
     int (*stop) (void);      /* To stop the device   */    
    /*      */    
     void (*putc) (const char c); /* To put a char   */
     void (*puts) (const char *s); /* To put a string (accelerator) */   
    /*      */   
     int (*tstc) (void);      /* To test if a char is ready... */
     int (*getc) (void);      /* To get that char   */   
    /* Other functions */    
     void *priv;          /* Private extensions   */
    } device_t;

      u - boot 는 콘 솔 입 출력 에 사용 할 수 있 는 장 치 를 장치 목록 devlist 에 추가 하고 현재 표준 IO 로 사용 되 는 장치 지침 을 stdio 에 추가 합 니 다.devices 배열 중.printf () 와 같은 표준 IO 함 수 를 호출 할 때 stdiodevices 배열 에 대응 하 는 장치 의 IO 함수 예 를 들 어 putc ().
  5) 명령 과 관련 된 데이터 구조.  6) 구체 적 인 설비 와 관련 된 데이터 구조,     여 flashinfo_t flash_info[CFG_MAX_FLASH_BANKS];nor 플래시 메 시 지 를 기록 합 니 다.      nand_info_t nand_info[CFG_MAX_NAND_DEVICE];nand 플래시 블록 장치 정보
2. uboot 재 포 지 셔 닝 후의 메모리 분포
  smdk 2410 에 대해 RAM 범 위 는 0x 30000000 ~ 0x 34000000. u - boot 에서 고급 메모리 구역 을 점용 합 니 다.높 은 주소 에서 낮은 주소 로 메모리 할당 은 다음 과 같 습 니 다.
                     디 스 플레이 버퍼                  (.bss_end~34000000)
                     uboot(bss,data,text)       (33f00000~.bss_end)
                     heap(for malloc)
                     gd(global data)
                     bd(board data)
                     stack
                     ·········
                    nor flash                           (0~2M)
                  

좋은 웹페이지 즐겨찾기