logo

한국어

자료실






2017.09.14 02:35

ISP 로더 사용하기

조회 수 2391 추천 수 8 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

안녕하세요. 언제나 생초보 본드로이드입니다.

가끔 키보드 펌웨어가 날아갔을 때 간절히 필요해지는 것이 ISP 로더입니다.

그런데 다들 사용을 어려워 하셔서, 간단하게 정리해 보기로 했습니다.

알고 보면 참 쉽습니다.


참고로 키매냐에도 강좌가 있는데, ( http://www.kbdmania.net/xe/tipandtech/2453685 )

최신 상황에 맞춰서 갱신을 해보고자 합니다.


----- ISP 로더는 왜 필요한가 -----


모든 키보드에는 스위치와 컴퓨터 사이를 이어주는 컨트롤러가 있어야 합니다.

컨트롤러는 스위치의 상태 변화를 주기적으로 체크하면서 입력여부를 알아내고, USB나 PS/2 등으로 컴퓨터와 통신을 하는 역할을 맡죠.

키보드가 그리 큰 기능을 요구하지 않기 때문에, 대체로 싸면서 간단한 프로그래밍이 가능한 임베디드 프로세서에 소프트웨어적인 방법으로 필요한 기능만을 구현하여 컨트롤러로 사용합니다.

대표적으로 유사 와이즈 키보드들에 주로 사용되었던 대우의 APPIAN 프로세서라든지, 후기형 G80-11900에 채용된 HOLTEK의 HT82K95E 프로세서, 그리고 요즘 커스텀 키보드에 주로 사용하는 Atmel 사의 ATmega 프로세서등을 그 예로 들 수 있습니다.

제가 모든 커스텀 기판을 다 나열할 수는 없습니다만, 알고 있는 선에서 사용되는 프로세서를 정리해보자면 대충 이렇습니다.


기판 

프로세서 

특징 

괴수가면님 A/B 시리즈

리쿠님 L3 시리즈

ATmega32A

VUSB 라이브러리를 사용하여 

소프트웨어적으로 USB 인터페이스 지원

곤님 NerD 시리즈

트루커스텀님 기판

ATmega32U4 

포함된 USB 모듈을 사용 (고성능)

영휘다님 Snow 기판

AT90USB646

외장 EEPROM 채용

트릭 기판

STM32

ARM 계열 프로세서

린님 FAve 시리즈NXP LPC11U6X ARM 계열 프로세서 (LQFN48)

이 외에도 RGB LED를 채용한 기판의 경우에는 RGB LED 제어를 위해 별도의 프로세서를 사용하기도 하며, 이때 주로 사용하는 것이 ATtiny85 프로세서입니다.


이런 프로세서들에 직접적으로 펌웨어를 올리기 위해 프로세서 제조사마다 다른 인터페이스를 사용하는데, 이때 사용되는 방식을 통칭해서 In-System Programming (줄여서 ISP)이라고 합니다.

일반적인 기성품 키보드 컨트롤러는 ISP를 이용해서 해당되는 펌웨어를 올린 후 기판에 한 번 납땜되면 끝입니다.

커스텀 키보드의 컨트롤러에는 ISP를 이용해서 부트로더라고 불리는 펌웨어 조각을 올려두고, 이 후에는 USB 인터페이스를 통해 실제 키보드로서 기능을 하는 펌웨어와 키맵 파일 등을 손쉽게 올리는 방법을 주로 사용하지요.

또, 곤님 기판이나 영휘다님 펌웨어를 사용하는 기판의 경우는 펌웨어 읽기 방지 락을 사용해서, 문제 발생 시에 덮어쓰기만 가능하도록 해 놓았습니다. 이런 경우에는 가능하면 건드리지 않고 A/S 요청을 하시는 것이 현명합니다.


----- 커스텀 키보드 용 ISP 로더 개조 -----


ISP 방식 중에서 Atmel사의 프로세서가 사용하는 방식은 아래에 보이는 핀 배열을 표준으로 사용하고 있습니다.

여기에 해당되는 입출력 핀들이 프로세서에 있고, 그 핀들에 직접적으로 연결된 저 커넥터에 ISP로더를 연결하면 언제든지 컨트롤러 제어 소프트웨어(펌웨어)의 변경이 가능합니다.


316px-Isp_headers.svg.png


이 커넥터를 국내 커스텀 키보드들은 조금 변형해서 기판에 내장하고 있습니다.

다행히, 초기에 잘 표준화가 되어서 국내 기판들은 모두 호환되는 배열을 사용하고 있습니다.

일부 기판들은 위의 6핀 헤더를 그대로 사용할 수 있도록 하고 있습니다.

아래 사진에서는 리쿠님의 Linger65 기판에서 그 예를 볼 수 있습니다.

하지만 맨 오른쪽의 중국산 기판은 조금 다른 방식의 핀 배열을 사용하고 있습니다.

그러니, 요걸 잘 확인하셔야 합니다. 


resize_DSC_5188.jpg


저는 6핀이나 10핀 배열 헤더를 국내 기판들에 곧장 사용할 수 있도록 핀헤더를 사용해서 ISP 로더를 개조한 후 사용하고 있습니다. 사진의 중간의 케이블은 랜케이블을 잘라서 사용했습니다. ^^


resize_DSC_5189.jpg


요즘은 알리익스프레스라는 해외 쇼핑몰에 접근이 쉬워져서, 저렴하게 구매할 수 있는 AVR용 ISP 로더가 많아졌습니다.

대표적으로는 아래에 첨부한 USBasp나 USBtinyISP 등이 있고, $2 이하 가격에 구매할 수 있습니다.

참고로 저는 USBasp로 ATtiny85 프로그래밍에 실패했는데, USBtinyISP로는 성공했습니다.

그래서 커스텀 키보드 용도로는 USBtinyISP를 추천합니다. ^^


resize_DSC_5192.jpg

HTB1O8xURVXXXXbyXVXXq6xXFXXXt.jpg


----- USBASP 펌웨어 업데이트 -----


USBASP는 구매 즉시 ATmega32 프로세서를 지원하지 못하는 경우가 있습니다.

이게 구형 펌웨어가 올라가 있는 경우 발생하는 문제인데, 두 개의 USBASP가 있으면 손쉽게 해결할 수 있습니다. ^^


USBASP 공식 홈페이지인 http://www.fischl.de/usbasp/ 에 가시면, 최신 펌웨어를 받으실 수 있습니다.

현재 최종버전: http://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz


두 개의 USBASP를 하나의 케이블로 서로 연결해 놓고, 한 쪽을 USB 포트에 연결합니다. (둘 다 연결하면 안됩니다!)

그러고는 아래에서 설명할 펌웨어 업데이트 방식을 사용해서, USB 포트에 연결되지 않은 USBASP의 펌웨어를 업데이트 해주면 됩니다.


----- ISP 로더 드라이버 설치 -----


윈도우 10의 경우 최초 한번 장치 드라이버를 설치해 주어야 하는데, 다행히 필요한 드라이버를 모두 묶어놓은 패키지가 있습니다.


https://learn.adafruit.com/usbtinyisp/drivers


위 링크에서 AdaFruit driver installer를 받아서 설치하시면 됩니다.

설치 중간에 내가 사용하는 장치가 선택되었는지만 한번 확인해 주세요.


----- avrdudess 설치/사용하기 -----


솔직히 저는 리눅스 명령행에서 avrdude를 곧장 사용하는 것을 좋아합니다.

하지만 우리나라는 윈도우가 점령하고 있으니 사용하기 편한 GUI 도구를 선호하실 거라 생각하고, 그 중에 좀 깔끔해 보이는 avrdudess를 추천합니다.

이 프로그램의 좋은 점은, 운영체제를 가리지 않는다는 점이지요. ^^

아래 링크에서 다운로드 받고 설치하실 수 있습니다.

설치하신 후에는 시작메뉴에 표시가 됩니다.


http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/


avrdudess4.png


인터페이스가 단순 깔끔 그 자체입니다.


1. 프로그래머를 선택합니다. 위 예에서는 USBasp를 선택했군요. 

   USB로 연결한 경우에는 굳이 포트 등의 내용은 선택 안하셔도 됩니다.


2. ISP 로더를 기판에 연결하고, Detect 버튼을 눌러 MCU를 제대로 인식하는지 확인합니다.

   만약 MCU가 제대로 표시되지 않는다면, 케이블 개조 실수, 드라이버 설치 오류, 혹은 ISP 로더 펌웨어 문제를 고려해보세요.

   문제를 분석할 때는 아래 까만 창에 나오는 메시지가 도움이 될 겁니다.


3. 이제 MCU의 플래시 메모리나 EEPROM, 퓨즈 값들을 설정할 수 있습니다.

   특히 퓨즈 값에 주의하셔야 하는데요, 기판 별로 아래 값을 참조하세요.

   기본적으로 Read 버튼을 누르시면 대체로 이 값이 뜰 거구요, 그렇지 않은데 키보드 동작에 문제가 있는 경우에만 아래 표의 값으로 Write해주세요.

기판

L

H

E

LB

괴수가면님

 0F 

 D0 

 - 

3F

L3

0E

C0

-

3F

NerDDFD8 C3  3C 


----- ISP 로더의 사용예 -----


제 경우는 기판별로 처음 하나를 최신 펌웨어와 제게 적합한 키매핑으로 설정해 둔 후 전체 이미지를 떠두었다가,

새 기판 소자 땜 후에 그대로 올려서 펌웨어 업로드 및 키매핑 과정을 줄이는 용도로 사용 중입니다.

혹시라도 문제가 생기면 저 이미지로 복구할 수도 있겠지요. ^^


ISP 로더는 MCU가 정상인지 확인하는 용도로도 사용할 수 있습니다.

USB 연결이 되지 않는데 MCU가 의심되는 경우, ISP 로더를 연결하고 위에서 설명한 MCU detect 기능을 사용해서 인식이 되는지 확인해 볼 수 있습니다.

인식이 되지 않는다면 확실한 MCU 고장이지요.

인식이 되는 경우라도 일부 핀만 고장일 수 있으니까, 그건 따로 체크해 주면 됩니다.


ISP 로더로 펌웨어를 읽거나 쓸때, 이상한 값이 들어가는 경우가 종종 있습니다.

이런 문제는 아래와 같은 경우에 발생하고, 손쉽게 해결할 수 있습니다.

 - 키가 눌려있다: 일부 키들은 ISP로더와 같은 핀을 사용합니다. 그래서 그 키가 눌린 경우 신호가 섞여서 오류가 날 수 있습니다.

 - ISP 헤더 핀이 보강판에 닿아 있거나 접촉이 좋지 않다: 당연히 오류가 날거고, 심하면 ISP로더의 소자가 타버리는 경우도 있습니다.

 - RGB LED나 기타 소자들이 전원을 소모해서 MCU 전원이 모자란다: 이 경우에는 해당 소자를 잠시 디솔더링한 후 작업해야 합니다.

 - MCU 고장: MCU를 교체해야 합니다.



PS. 제가 이렇게 적어두어도 이해가 되지 않으시는 분들이 더 많으시겠지요.

     그래도, 누군가에겐 도움이 되었길 바랍니다.

  • ?
    PCMR 2017.09.14 03:12
    정보 감사합니다!
  • ?
    우대권 2017.09.14 03:28
    꿀같은 정보입니다.
    언젠가 유용히 사용될거라는 느낌이 오네요.
  • profile
    LPFchan 2017.09.14 08:44
    좋은 정보들 감사합니다 ^^
  • profile
    엘리 2017.09.14 09:47
    자칭 생초보 본님 말고..
    정말 초보인 저에겐 아주 꿀정보네요..
  • profile
    영휘다(02D) 2017.09.14 11:59

    Snow 기판은 AT90USB646 프로세서를 사용하고, 외장메모리는 플래시가 아닌 EEPROM 입니다.
    별도로 업로드 가능한 코드(hex)를 제공하지 않으므로, 사용자가 로더를 연결할 일은 없습니다.
    추가로 읽기 락이 걸려있고 외장메모리를 사용하므로 덤프가 불가능하니, 툴에서 파일 저장 기능을 이용하시면 됩니다.
    로더 연결시 불이익이 생길 수 있으니 주의하시기 바랍니다.

  • profile
    본드로이드 2017.09.14 13:30
    기판 정보를 제공해주셔서 감사합니다. 본문에 수정 반영했습니다. ^^
    로더를 사용하실 분들은 알아서 책임을 지시겠죠? ^^
  • profile
    힝힝홍힝 2017.09.14 22:49
    매우매우 좋은 정보 감사합니다 ㅎㅎ

List of Articles
번호 제목 글쓴이 날짜 조회 수
69 공제 키보드에 호환되는 기판(PCB) 리스트 정리 (In Progress...) 6 Kiruas 2023.04.15 3227
68 아크릴 카일소켓 보강용스테빌 적용참고 file 아침에™⇔N² 2022.10.06 161
67 오래된 asus Rampage-IV-Extreme x79보드 바이오스 업데이트하기 file 아침에™⇔N² 2022.03.25 251
66 키보드 거치대 파일입니다. 1 file wiremankbd 2021.02.19 708
65 사진올리기 file 아침에™⇔N² 2020.03.08 533
64 오리온3 플레이트 3 file 산류 2019.05.23 1361
63 93년도 알프스 카달로그 pdf 5 CKP 2019.04.28 681
62 키보드랩 계급장 레벨표 17 file 아침에™⇔N² 2018.10.07 2679
61 토글키 오입력 방지 프로그램 LP_LK를 배포합니다. 5 file 스타 2018.10.06 354
60 [아크릴스텐드] 브릿지 부분 도면 file 재아 2018.08.05 532
59 한방에 37 file 봉사청년 2016.05.20 3205
58 SATAN RGB60 FN기능 요약 힝힝홍힝 2018.04.14 548
57 쓰지 말아야할 페이스트 22 file 고구마군 2018.03.27 2053
56 옥타곤v1 메탈스티커 도안 file duck0113 2018.03.10 811
55 USB케이블 8 file 아침에™⇔N² 2018.03.06 992
54 카일체리콤보 윤활플레이트 v2 ( 15 * 6 ) 6 file 힝힝홍힝 2018.03.02 1075
53 라세3 나사규격 4 file duck0113 2018.02.18 908
52 키랩 로고 10 file 금벌레 2018.01.05 926
51 초음파 세척기 효과적으로 쓰기 6 Bone.D.Roid 2017.11.22 3362
» ISP 로더 사용하기 7 file 본드로이드 2017.09.14 2391
Board Pagination Prev 1 2 3 4 Next
/ 4