'OALArgsQuery'에 해당되는 글 1건

  1. 2008.05.19 WinCE / 부트로더에서 커널로 데이타 전달 (부트파라미터) (1)
관련 함수
OALArgsQuery

관련 구조체
BSP_ARGS

관련 상수
IMAGE_SHARE_ARGS_ 시리즈 : 부트로더와 커널이 공유할 메모리(램) 영역의 주소
BSP_ARGS_QUERY_ 시리즈 : OALArgsQuery 에 넘겨줄 인자. BSP_ARGS 구조체의 내용에서 선택할 항목

버전
Windows Embedded CE 6.0 (R2아님)

----------------
작업 사유:
이더넷 칩셋에 보드마다 고유의 MAC Address 를 부여해야함.
하지만 eep rom이 달려있지 않음. (있어야 하는데 -_-)
사용 중인 플래시는 NAND.

고민1 : '그러면 이더넷 드라이버에 NAND에 엑세스 하는 라이브러리의 내용을 추가해야할까?'
(NOR였다면 별다른 고민을 하지 않았겠지만,)
거부 사유1-1 : '작업할 게 너무 많아진다.'
거부 사유1-2 : '이더넷 드라이버의 최종 사이즈가 너무 커진다.'

고민2 : '그러면 어차피 부트로더에서 세팅하는 mac addr을 바로 커널에게 전달해주면?'
- 오.. 이거 될 것 같다.
- 리눅스에서는 "부트파라미터"로 사용한다고 함.
- 플래시에는 부트로더에서 기록하고 부팅시에 부트로더가 읽어놓은 내용을 커널로 전달하게 된다.

----------------

작업 내용:
- BSP_ARGS_QUERY_ 시리즈가 있는 헤더파일을 찾아서, 상수 BSP_ARGS_QUERY_ETHMAC 를 추가
- BSP_ARGS 구조체를 찾아서 저장할 내용 변수 추가. (ex. unsigned char   ethMac[6]; )
- OALArgsQuery 함수 구현부를 찾아서 switch case 내용에 BSP_ARGS_QUERY_ETHMAC 항목을 추가.
  case BSP_ARGS_QUERY_ETHMAC:
   pData = &pArgs->ethMac;
- 부트로더 main.c 에서 전역변수 unsigned char g_ethMac; 추가.
   OEMPlatformInit 함수에 g_ethMac = (unsigned char *)OALArgsQuery( BSP_ARGS_QUERY_ETHMAC); 추가
   OEMLaunch 에서 g_ethMac[0]~[5] 에 mac 저장
- 이더넷 드라이버
   #include <bsp_args.h>
   #include <image_cfg.h>
   #include "Oal_args.h"
- init 에서
   = BSP_ARGS *pArgs = (BSP_ARGS*)IMAGE_SHARE_ARGS_UA_START;
   = unsigned char* pMac = (unsigned char*)&pArgs->ethMac;
   = 이더넷 칩의 mac addr 레지스터에 pMac 의 값 기록.

- 끝 -


도움받은 곳 : W.E.E.G. http://cafe.naver.com/wincepro/12019

Posted by freezn

댓글을 달아 주세요

  1. 문성준

    우선 너무 고맙습니다. identer2000@naver.com

    현재 외주준 업체가 부도날 지경이어서 저희 프로젝트를 신경을 못쓰는 상황입니다.

    해서 직접 마무리 작업을 하는데 관련해서 지식이 짧다보니 이해가 어려운 상황입니다.

    양산을 위해 멕주소를 넣으려고 해서 님의 블로그 까지 왔습니다.

    많은 도움 받았구요 아래의 부분에 대해 염치불구하고 좀 더 자세한 설명 부탁합니다.

    OEMLaunch 에서 g_ethMac[0]~[5] 에 mac 저장
    ---> 어떻게 저장하는지?

    - 이더넷 드라이버
    #include <bsp_args.h>
    #include <image_cfg.h>
    #include "Oal_args.h"
    선언만 추가하는 것인지?

    - init 에서--->어디 init인지
    = BSP_ARGS *pArgs = (BSP_ARGS*)IMAGE_SHARE_ARGS_UA_START;
    = unsigned char* pMac = (unsigned char*)&pArgs->ethMac;
    = 이더넷 칩의 mac addr 레지스터에 pMac 의 값 기록.
    --->기록은 어떻게 하는지?

    2011.03.17 20:35 [ ADDR : EDIT/ DEL : REPLY ]