모든 부트롬은 0xffff...f0 가 시작점인데

   조회 4302   추천 0    

용량 관계없이 모든 부트용 롬칩은 마지막 16byte 지점에서 진입하여 Jmp xxxx 명령을 만나고

코드중 지정된 시작점으로 점프하며 시작되는데요. (MBR은 첫 섹터 0번지에서 Jmp 명령으로 시작) 


그러면 롬칩보다 크기가 작은 바이너리는 어떻게 올리는가요?

지금 ECS 보드에서 칩을떼어 플래싱하는데 그같은 문제가 발생했습니다.

당연히 그대로 올리면 Jmp 명령이 있어야 할곳에 내용이 없어 부팅이 안될것이고

잘 모르면 tsop로 납땜된 칩을 여러번 때었다 붙였다 해야해서요 ㅠㅠ

짧은글 일수록 신중하게.
말씀하신 것 처럼 플래시 마지막까지 유효한 내용이 있어야 하는데 이미지 파일의 크기가 플래시의 사이즈와 일치하지 않는다면 단순 flat binary 이미지가 아닐 것 같은데요. 칩에 기록된 이미지를 먼저 덤프해서 이미지 파일의 구조를 먼저 알아야 하지 않을까요..
     
딥마인드 2023-02
칩은 8MB이고 ECS에서 제공하는 파일은 6.5MB 입니다.
바이너리 에디터 작업을 해야할것 같은데 좋은게 있었는데 이름도 잊었고 없어졌네요
먼저 정확히 8MB 크기의 빈 파일을 만들어
받은 6.5MB 파일을 덮어쓴후
끝부분 마지막 16바이트를 원본에서 카피해오거나 해서 써주면 될까요?
1. 롬파일의 특정 영역이 더미데이터인 경우
->  보통 롬사이즈 안맞으면 그 부분만큼 맨 앞(ASUS CAP 확장 파일)이나 특정 부분에 더미가 있습니다. 해당 부분 제거 후 플래슁 하면 됩니다.

2. 보드에 롬칩이 2개(일반 바이오스 / EC 롬)인 경우
-> 보드 제원 확인 후 EC 칩을 찍은게 아닌가 확인해보세요
ECS는 홈페이지에서 제공하는 BIOS파일이 인텔기준 Desc + ME + BIOS가 아닌 BIOS Region만 제공하기 때문에 롬라이터로 플래싱할때 동일한 메인보드 또는 동일 칩셋 및 동일한 용량의 온전한 파일을 구해서 BIOS Region만 바꿔치기 해야됩니다.
     
PCMaster 2023-02
역시 전문가!!!!!
     
딥마인드 2023-02
네 현기님 안녕하세요.
보드에 칩은 확실히 8MB이고요
ECS에서 받은 공식 롬 용량은 6.5MB 정도입니다.
추정 되기에는 아마도
ECS에서 제공하는 플래셔에서 앞부분은 그대로 플래싱하고 차이를 비워둔 후
마지막에 Jmp xxxx 명령과 EOF 문자열같은 델리미터를 추가할것 같습니다.

그래서 직접 바이너리 편집으로 8MB로 변경하는건 쉽지 않을것같고
적당한 툴을 찾아야 할것 같은데요
현제 제가받은 ch341a 플래셔는 그나마 잘되는 것으로 러시아인이 만든 version: 1.1.1.32 라고 뜨네요.

물론 8MB 원본 파일은 백업해두었는데요
혹시 원본을 먼저 플래싱하고 받아온 6.5MB 파일을 덮어쓰기 하는건 어떤가요?
          
인텔은 BIOS 구조가 크게 Desc / ME / BIOS로 나뉘어있으며, BIOS 업데이트 시에는 보통 BIOS 영역만 업데이트를 시킵니다. 이 때문에 일부 제조사에서는 이 Desc/ME/BIOS가 온전히 존재하는 완전파일이 아닌 순수 BIOS 영역만 존재하는 파일을 배포하기도 합니다. 대표적으로 ECS가 그러구요.

추정 되기에는 아마도
ECS에서 제공하는 플래셔에서 앞부분은 그대로 플래싱하고 차이를 비워둔 후
마지막에 Jmp xxxx 명령과 EOF 문자열같은 델리미터를 추가할것 같습니다.

-> ECS는 보통 FPT(Intel Flash Programming Tool)아니면 AFU(Aptio Flash Utility)를 사용하는데, 차이를 비워두고 자시고 그냥 Desc, ME, BIOS 이 세가지 영역중에 단순히 BIOS 영역만 플래싱합니다. 위 툴들도 그렇게 설정할 수 있구요. 타 제조사들도 마찬가지입니다.

위 내용이 제가 "동일한 메인보드 또는 동일 칩셋 및 동일한 용량의 온전한 파일을 구해서 BIOS Region만 바꿔치기 해야됩니다."라고 말씀드린 이유입니다.

ECS H81H3-M4 모델을 예시로 들자면,

해당 보드는 8MB 롬 칩을 사용하며
Desc (4KB, 4096 bytes) + ME (1.5MB, 1,568,768 bytes) +  BIOS (6.5MB, 6,815,744 bytes)로 이뤄져있습니다.

홈페이지에서 제공되는 BIOS 파일은 온전한 파일이 아닌 순수 BIOS 영역만 제공되는 파일이므로 동일하게 6.5MB(6,815,744 bytes)입니다.

(아래 사진에서 50529.ROM : 홈페이지 제공, Region_BIOS_BIOS_region.rgn : 덤프본에서 UEFITool을 이용해서 BIOS 영역만 추출한것)


그래서 동일 칩셋을 사용하면서 BIOS 용량구조 역시 동일하다면 그냥 단순히 UEFITool 등으로 해당 영역만 교체해서 롬라이터로 플래싱하면 끝입니다.
          
원본을 백업해두셨다면 원본파일을 UEFITool(https://github.com/LongSoft/UEFITool/releases/download/0.28.0/UEFITool_0.28.0_win32.zip)로 불러오셔서

Intel image 하위 영역에 있는 BIOS region 우클릭 - Replace as is.. - 홈페이지에서 받은 BIOS 파일 선택 후 저장
이후 이 파일을 롬라이터로 기록하시면 됩니다.
               
딥마인드 2023-02
길고 상세한 설명 너무 감사드립니다.
그대로 시도해보갰습니다.
                    
추가로 CH341A를 사용하신다면

NeoProgrammer (https://www.mediafire.com/file/1263zy82q612ub4/NeoProgrammer+V2.2.0.10.zip/file)
AsProgrammer (https://github.com/nofeletru/UsbAsp-flash/releases/download/v2.0.3a/AsProgrammer_2.0.3a.zip)

이 두 프로그램을 추천드립니다.

저는 정품 CH341A(타오바오에서만 판매합니다.)를 보유하고 있어 크랙버전(시중에 돌아다니는 CH341A 프로그램은 죄다 크랙버전)이 아닌 정식버전의 프로그램 역시 보유하고 있으나, 최신DB 이외의 장점을 찾지 못해서(최신버전도 윈도우 버전에 따라 불안정한건 동일) 저는 CH341A 사용시에는 AsProgrammer을 주로 사용하는 편입니다.

정식버전은 UUID 인증방식이라 윈도우 빌드 업데이트되면 다시 인증받아야되는데 이게 여간 복잡한게 아닙니다...
                         
딥마인드 2023-02
네 아래건 404 이고 위에거 받아보니 확실히 나아보여요
                         
딥마인드 2023-02
보유중인 대형 라이터기가 녹색이라 처음보는 흑색을 구매해보았는데
역시 녹색이 정답이었나보네요,
대형 라이터기는 parallel 포트용인데다 plcc-64 까지 되지만
별도전원, 전용 S/W CD 플레이어도 설치해야 해서
한번씩 꺼내서 세팅하는게 만만치도 않지만 오래된거라
요즘 흔히쓰이는 LPC 타잎을 지원하는지조차 미지수 입니다.

아무튼 문제의 보드는 BIOS region을 입혀 재작업중이고 smd 칩을 5회째 납땜이동 중입니다.


QnA
제목Page 1871/5707
2015-12   1673095   백메가
2014-05   5138479   정은준1
2019-08   4216   세에라
2017-02   4216   전설속의미…
2019-04   4216   큰스
2018-06   4216   쭈쭈봉
2018-04   4216   박성만
2020-12   4216   VSPress
2015-10   4217   lovemiai
2016-03   4217   J2Wn
2021-01   4217   나우소래
2019-07   4217   김건우
2018-04   4217   audacity
2015-11   4217   BJ후늬
2021-11   4217   AMD빌런
2017-12   4217   이재광
2015-06   4218   김건우
2014-08   4218   일리케
2014-09   4218   뮤노
2021-01   4218   허인구마틴
2020-08   4218   DDDIE
2014-08   4218   김희영