geulpan42TP라고 하는 트랙포인트가 적용된 분할 키보드를 만들어보고 있습니다. 이때 컨트롤러로 YD-RP2040을 사용했는데요, YD-RP2040에 대한 정보를 간략하게 정리해 봅니다.
YD-RP2040과 Raspberry Pi Pico의 차이점
링크에 따르면 차이점은 3v3_en 대신 GP23이 위치하고, 3V3는 SDIO 핀 옆으로 이동 했다고 합니다.
QMK 사용시 주의 사항으로는 내장 WS2812가 GP23을 사용하고 있습니다. 따라서, 내장 WS2812와 GP23을 동시에 사용할 수 없습니다.
YD-RP2040 16MB 제품간 차이점
같은 모양의 RP2040이라 하더라도, 알리 특성상 판매자에 따라서 사용된 부품이 다른 것 같습니다.
현재까지 W25Q128 16MB, 25VQ128 16MB 두가지 칩셋을 확인 했고,
기판 두께가 두꺼운 것은 W25Q128 16MB
기판 두께가 얇은 것은 25VQ128 16MB 이 사용된 걸로 보여집니다.
두 제품 모두 QMK 펌웨어 올리는데 큰 문제는 없었습니다. 다만, W25Q128를 사용한 제품은 uf2 펌웨어 복사하는데 시간이 좀 더 오래 걸리는 느낌입니다.
YD-RP2040 마이크로 파이썬 관련
서로 다른 칩셋을 사용했으니, 프래시가 실제로 16MB인지 확인을 해봐야할텐데요,
RP2040의 경우 메모리를 완전히 다 사용하기 위해서는 메모리에 맞는 펌웨어를 사용해야 하는 것으로 보입니다.
YD-RP2040의 경우 별도의 펌웨어를 찾기는 어려운 것 같고, WeAct RP2040 16MB 펌웨어 사용 시 정상적으로 16MB로 확인 됩니다. (Pico LiPo 16MiB이미지로는 불가능 했습니다.)
플래시 사이즈 확인 소스 코드(How to Check the flash memory size and storage consumption from micropythpon)
QMK 펌웨어 올린 후 RP2040 reset + bootsel이 작동되지 않을 때
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
QMK 펌웨어에서 Bootloader double tap reset 옵션을 사용할 경우, RP2040의 기본 부트로더 진입 버튼인 “rest+bootsel” 버튼으로 USB UF2 부트로더 진입이 안되었습니다.
대신 코드에서도 알 수 있듯이 reset 버튼을 더블클릭하면 되며, 지금은 이 옵션을 애용하고 있습니다.
QMK에서 rp2040사용 시 드라이버는 vendor를 사용하자
#TrackPoint
PS2_ENABLE = yes
PS2_DRIVER = vendor
PS2_MOUSE_ENABLE = yes
#Split
SERIAL_DRIVER = vendor
#WS2812
WS2812_DRIVER = vendor
RGBLIGHT_ENABLE = yes
QMK 문서를 천천히 살펴보면 잘 알 수 있는 내용이지만, ps/2 마우스, split, ws2812등을 사용할 때 rp2040은 드라이버로 vendor를 사용해야 한다.
QMK에서 플래시 메모리 사이즈 설정 하기
#define PICO_FLASH_SIZE_BYTES ( 16 * 1024 * 1024 ) //메모리 용량 설정 하기
#define WEAR_LEVELING_RP2040_FLASH_SIZE ( PICO_FLASH_SIZE_BYTES )
#define WEAR_LEVELING_RP2040_FLASH_BASE ((WEAR_LEVELING_RP2040_FLASH_SIZE) - (WEAR_LEVELING_BACKING_SIZE) ) // qmk 문서상 "(flash_size-sector_size)"으로 되어 있지만, 소스코드 상 "(WEAR_LEVELING_RP2040_FLASH_SIZE) - (WEAR_LEVELING_BACKING_SIZE)".
#define WEAR_LEVELING_BACKING_SIZE 131072 // 4096 x 32 값이 최대 사이즈. 이 값을 넘을 경우 "error DYNAMIC_KEYMAP_EEPROM_MAX_ADDR must be less than 65536"
#define WEAR_LEVELING_LOGICAL_SIZE ( WEAR_LEVELING_BACKING_SIZE / 2 )
#define BACKING_STORE_WRITE_SIZE 2
vial로 포팅하고 매크로 메모리를 보니 2387밖에 안되어서, 이것을 늘려보기 위해 확인 중에 있습니다.
WEAR_LEVELING_BACKING_SIZE의 크기를 늘리면 vial 의 매크로 메모리가 늘어나긴 하지만, 현재 최대 설정 가능한 값이 131072이고 vial 에서 확인하면 63827까지 늘어납니다.
구매정보
- 아래 링크는 제휴 링크로, 아래 링크를 클릭하여 상품을 구매하시면 저에게 소정의 수수료가 지급 될 수 있습니다.
- 알리익스프레스 특성 상 제품 가격이 매번 달라지기 때문에, 구매하시기 전에 가격을 검색 해보시는 것을 추천드립니다.
- 제품에 대한 문의는 해당 제품 판매자에게 문의해 주시기 바랍니다.
제품명 | 판매자 | Link |
YD-RP2040 | TENSTAR ROBOT Store | Aliexpress |
YD-RP2040 | SZHJW Technology Store | Aliexpress |