관련 함수
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
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