출처 : http://www.ze.em-net.ne.jp/~kenken/bbs/817.html
라즈베리파이를 이용하여 PIC32MX에 플래싱하는 방법
투고자 : 켄켄
투고일 : 2020년 3월 29일 (일) 22시 18분 59초
NE0356lan33.rev.em-net.ne.jp
라즈베리 파이를 직결하여 PIC32MX의 플래시메모리에 기록하는 것이 가능한 "Pickle"이라고 하는 소프트웨어를 소개합니다. 이전에도 올렸습니다만, 링크가 깨져있거나 제대로 기록이 되지 않는다는 지적이 있기도 했으므로 다시 조사하여 재차 투고합니다.
이것을 사용하면, PICkit3 같은 장비가 없어도 라즈베리 파이와 몇 가지 부품만으로 PIC32를 포함한 여러가지 PIC 마이크로 컨트롤러에 기록이 가능합니다.
* Pickle Microchip PIC ICSP
https://wiki.kewl.org/dokuwiki/projects:pickle
* Pickle로 PIC32 시리즈에 기록하는 순서
1) 라즈베리 파이에 아래 프로그램을 다운로드한다
http://wiki.kewl.org/downloads/pickle-4.20.tgz
2) 적당한 폴더에 압축을 푼다
3) 압축을 푼 디렉토리로 이동하여 아래 명령을 실행한다
make
sudo make install
4) ~/.pickle이라는 디렉토리를 만든다
5) 압축을 푼 src/dotconf/의 RPI를 config라는 파일명으로 바꾸고 위의 디렉토리에 복사한 뒤, 아래와 같이 내용을 변경한다.
DEVICE=RPI2
SLEEP=1
BITRULES=0x4F00
VPP=9
PGM=-1
PGC=10
PGD=11
6) 아래 3개의 파일을 다운로드하여 ~/.pickle 디렉토리에 압축을 풀어준다.
http://ww1.microchip.com/downloads/en/DeviceDoc/RIPE_06_000201.zip
http://ww1.microchip.com/downloads/en/DeviceDoc/RIPE_11_000301.zip
http://ww1.microchip.com/downloads/en/DeviceDoc/RIPE_15_000502.zip
PIC32의 경우에는 Proframming Executive라고 하는 기능에 대응하고 있어, 이것을 사용하면 기록이 대폭 빨라집니다.
7) 다음 핀 사이에 470옴 정도의 저항을 이어준다. (필자는 330옴을 사용)
라즈베리파이측 PIC측
GPIO9 (21번) -저항- MCLR
GPIO10(19번) -저항- PGECx(x는 1이나 2,3등)
GPIO11(23번) -저항- PGEDx(x는 1이나 2,3등)
PGECx와 PGEDx의 x는 같은 조합으로 해줘야 합니다.
8) 라즈베리파이의 3.3v와 GND는 PIC의 각 전원핀에 접속한다. PIC의 아날로그 전원핀도 잊지 말고 연결한다.
(역자주 : PIC의 MCLR과 라즈베리파이의 3V3 사이에도 저항이 필요한데 원본에는 설명이 누락되어 있음. 저항 용량은 10K옴)
라즈베리파이측 PIC측
+3V3 (1번) -저항(10kOhm)- VDD
GND (39번) --- GND
9) PIC의 기판 상에 ICSP로써 6핀의 단자가 있는 경우에는 아래와 같은 접속 형태가 된다.
ICSP
1 MCLR
2 VDD
3 GND
4 PGEDx
5 PGECx
6 -
10) PIC32의 VCAP핀에 붙이는 10uF 콘덴서는 필수.
MachiKania의 기판 등에 콘덴서가 납땜되어 있는 경우는 그대로 써도 문제 없습니다.
11) 연결이 다 되었다면 라즈베리파이에서 아래 명령을 실행한다(HEX파일명이 xxx.hex인 경우)
p32 program xxx.hex
p32 verify xxx.hex
기록되는 동안은 아무것도 표시되지 않으므로 끝날 때까지 기다립니다.
---
이하는 왜 제대로 기록되지 않는 경우가 있었는지에 대한 고찰이므로 꼭 읽어야 하는 내용은 아닙니다.
* Verify에서 문제없이 기록되었는데도 제대로 작동하지 않는 경우
PICkit3 등의 장비로 기록하면 문제없이 동작하는 HEX파일이, 왜인지 Pickle로 기록하면 Verify해도 정상적으로 기록되지 않는 경우가 있는 것이 판명되었습니다.
PIC32의 CONFIGURATION 비트의 DEVCFG0의 제 1:0비트(DEBUG비트)가, 보통 "3"(11b)이 아니라면 동작하지 않지만, 소스 프로그램의 기록 방법에 따라서 "2"(10b)가 되어 버리는 경우가 있는 것 같습니다. 문제는 PICkit3등 Microchip사의 기록 툴에서는 이것을 자동적으로 "3"으로 바꿔서 기록하기 때문에 유저는 눈치채지 못합니다.
대책으로써는 소스 프로그램의 CONFIG설정을 아래와 같이 변경하여 빌드하는 방법이 있습니다.
#pragma config DEBUG = OFF
↓
#pragma config DEBUG = 3
데이터 시트 상에는 "3"이든 "2"이든 문제없다고 기재되어 있으므로, 아마 이것은 Microship 사의 심술일지도 모릅니다.
데이터 시트의 DEVCFG0의 기재
DEBUG<1:0>
1x = Debugger is disabled
0x = Debugger is enabled
MachiKania typeM의 부트 로더가 딱 이 케이스였기 때문에, 수정을 해야만 했습니다.
'Consoles > PC98' 카테고리의 다른 글
윈도우 98 + DOS 멀티부팅 만들기 (0) | 2024.04.02 |
---|---|
PC98 마우스 PS/2 컨버터(아두이노 프로 미니) (1) | 2024.01.03 |
PC-9801 USB 키보드/마우스 컨버터 (0) | 2023.11.14 |