[t:/]$ 지식_

CS8900 to 재진

2005/09/07

현재 소스도 뭐도 암 것도 없고. 행님이 지금 시간이 없어 검색할 여력도 없으니.

기억력이나 짬밥에 의존하며 몇 가지 가이드를 제시해준다.

  1. 일반적으로 이더넷 드라이버에는 serial eeprom 에 데이터를 저장하는 함수가 내장되어 있다.
  2. 이 함수는 주로 IOCTL (IO 컨트롤 계통) 로 호출되는데 (리눅스 계통의 경우) 윈도우 계통에서는 잘 모르겠다.
  3. 함수가 내장되어 있지 않다면 아마도 I2C 인터페이스로 해당 롬에 데이터를 RW 해야 한다. SIP 던가. 더 단순한 시리얼 통신이었는지는 기억이 안 난다. 따라서 이 인터페이스를 구현해야 하는데. 직접 구현하자면 단순한데 몹시 헷갈리므로 구현된 소스를 찾자. 쉽게는 XScale 관련 도서에서도 볼 수 있고, 리눅스쪽의 cs8900 계통 디바이스 드라이버에서도 볼 수 있다.
  4. 단순히 mac 어드레스만이 문제이므로 사실 시리얼 eeprom 은 불필요하다. 이거 공장에서 맥 박아지기고 대량 생산해가지고 올때의 이야기인데. QC 공정에서 수작업으로 입력한다면 별로 관계없다.
  5. 아마도 부팅쪽에 NOR 가 있을 것으로 예상되며 분명 뒤에는 남는 블럭이 있다.
  6. 일단 양산체제가 아니라는 가정을 하고.
  7. NOR 를 굽기 위해서 T32 나 ICE 장비를 사용한다면 아주 수월하다. 이를 이용해서 뒤에 안 쓰는 블럭에 맥어드레스는 써 넣는다. 어떻게 해야 할 지 모르겠다면 아예 아무 헥사 에디터로 맥을 쓴 파일을 만든다. -> 울트라 에딧 헥사 모드에서 0x11 0x22 0x33 0x44 0x55 0x66 을 쓰고 저장. 헥사 에딧에서는 0x 빼고;;
  8. T32와 같은 장비를 이용해서 뒷쪽 안쓰는 블럭에 저 파일을 저장한다.
  9. NOR 는 포인터 접근이 가능하므로 위에서 지정한 주소에 포인터 찍고 읽어오면 그만이다. 읽은다음 CS8900 초기화 코드 맥어드레스 셋팅 부분에 박으면 장땡이다.
  10. NOR 가 MMU에 의해서 번지 변환이 완료되어 어느 번지로 튀었는지를 모르겠다면. inc 디렉토리들을 뒤져서 맵핑된 새 주소를 찾아내야 한다.
  11. 소스 분석이 어렵고 시간도 없다면. ... 운이 좋다면 OEMInit 쯤에서는 피지컬 어드레스를 직빵으로 때려도 종종 먹는 케이스가 다분히 많이 있으므로 여기서 먼저 NOR 로 부터 맥주소를 읽어서 전역변수로 박아놓고 드라이버에서 사용한다. 물론 드라이버는 빌트인이다. CE 구조를 잘 모르니 케이스를 다 말하자면. 레지스트리에 저장해 놓고 읽어도 좋고.. 여러가지 방식이 있다..
  12. 하이브 레지스트리를 사용한다면 레지스트리 에딧을 통해서 맥변경을 취할 수 있을지도 모른다. 하이브 레지스트리에서 읽어오면 된다.
  13. NOR 에 저장한다면 운영중에 맥을 변경하는 것이 불가능할지 모른다. 더군다나 XIP 등을 사용한다면 거의 불가능하다. 단. 맥어드레스는 공장출하후 고정이므로 공장에서 쓰는 프로세스만 구축하면 된다.

현재 고민하고 있는 부분은 맥어드레스를 소스내 상수로 고정해 놓았는데. 제품마다 커널 빌드를 다시하여 맥어드레스를 변경할 수는 없기 때문에 이를 어떻게 해결 해야 하나를 고민하고 있는 듯 하다.

-> 가장 심플한 방법. 나라면 이렇게 하겠다. 의 최적 초이스는 다음과 같다.


  1. 양산체재가 아닌 경우. -> T32 를 통해서 NOR 뒷부분에 맥을 저장하고 커널에서 읽어 쓴다.
  2. 양산시. -> 부트로더는 램에 복사하여 구동하는 방식으로 만들어 놓는다. 노어에서 직접실행하는 방식이 아니다. -> 부트로더는 개발자 진입 백도어키가 있다. -> 개발자 모드로 진입하여 메뉴상에서 맥어드레스를 입력받는다. -> 이는 QC 에서 처리하게 된다. -> 맥어드레스는 부트로더 프로그램에 의해서 노어에 저장된다. -> 출하 후 사용자들은 개발자 모드를 모르고 정상부팅을 하게 된다. -> 커널은 노어에 저장된 맥어드레스를 읽어서 전역변수나 레지스트리로 박고 드라이버에서 그것을 사용한다.
    CE 쪽을 내가 제대로 만져본적이 별로 없어.. 곁다리만 질질 끌었기 땜시롱.
    좋은 답변을 못해줘서 안타깝구나.

그럼 이상.









[t:/] is not "technology - root". dawnsea, rss