마음 속 하늘은 항상 맑음~!

MSI의 12핀 JSPI1으로 플래시 굽기. 본문

하드웨어

MSI의 12핀 JSPI1으로 플래시 굽기.

파르셀수스 2016. 4. 17. 18:32



 MSI의 메인보드가 바이오스 업그레이드하다가 망가져서 고친다는걸 이제서야 실행.


 그런데 바이오스를 굽는 연결 인터페이스에 대한 설명이 없었다. 그래서 바이오스 플래시 칩과 12핀 커넥터를 열심히 테스터로 찍어서 결국 접근에 필요한 연결 방법을 알아냈다.


 CH-341A 롬라이터를 사용했던거라 몇몇 신호는 처리가 불가능한데 그냥 접지를 하면된다. 그 신호는 ~HOLD 같은 것으로 이게 0V가 아니면 플래시가 동작을 하지 않는다. 간단히 GND에 연결해주면 끝.


 다른 신호들은 문제가 없는데 딱 하나 바로 CS 신호가 문제를 일으킨다. CH-341A는 반전 신호인 ~CS(칩에서도 바로 반전 신호가 입력되도록 되어있다)가 나오는데 이걸로는 플래시칩과 JSPI1의 커넥터 중간에 있는 FET때문에 플래시를 제대로 구동할 수 없다.

 그래서 BC547B NPN 트랜지스터로 5V -> 4.7k 저항 -> BC547 Collector 를 연결하고 BC547 Collector에서 다시 9번으로 연결하니 문제없이 스위칭이 동작한다. 5번은 GND에 그대로 연결하면 된다. BC547의 Base는 CH341A의 ~CS를 연결하고, Emitter는 GND에 연결하면 끝. 간단히 NPN 트랜지스터와 저항으로 반전 신호를 만든 것 뿐이다.

 3.3V에 연결하면 전압 강하가 있는지 9번에서 2.2v만 찍혀서 FET가 작동을 하지 않아서 ~CS 신호가 인가되지 않아서 플래시가 작동하지 않는다.


 플래시를 기록할 때 주의점은 먼저 erase를 하고 program을 하는게 좋은데, erase를 한 다음에는 ch341a를 한번 연결을 끊었다가 다시 연결해야 한다. 아마도 erase 이후에는 바로 프로그래밍이 어렵거나 아니면 프로그래밍 상태에서 벗어나는게 안되었던 듯. program이후에 verify는 정상적으로 동작한다.


 CH-341A의 구동 프로그램은 1.18버전으로 그 이상의 버전에서 제대로 동작하는 것을 찾을 수 없었다. CH-341A는 프린터를 USB에 인터페이싱하는 칩으로 사실 프린터의 신호로 플래시를 동작시키는 방법으로 구현된 프로그래밍 장치이다. 그걸 이쁘게 프린트 기판에 만들어서 USB로 인터페이스를 만든게 바로 CH341A. 그냥 저렴하니 쓰는 것으로 메인보드 하나를 고치는데 5만 이상을 쓰느니 차라리 사는게 낫다는 생각한다.


 잘 동작하려는지는 모르겠지만 일단 플래싱에는 큰 문제가 없는 것 같다.



ch341a-v1.18.zip


 커넥터의 간단한 도해를 첨부.


msi_spi12.pdf