Geulpan42TP 글판42TP

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이미지로는 불가능 했습니다.)

WeAct Studio RP2040 Firmware

플래시 사이즈 확인 소스 코드(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-RP2040TENSTAR ROBOT StoreAliexpress
YD-RP2040SZHJW Technology StoreAliexpress