На прошлой неделе мы рассматривали неофициальное ядро Raspberry Pi Pico Arduino Core, которое работает на платах RP2040, включая Raspberry Pi Pico. Все работало нормально.
Но недавно представители Arduino написали в Твиттере о выпуске ядре Arduino Core mbed 2.0 для плат Raspberry Pi RP2040, включая платы Arduino Nano RP2040 Connect и Raspberry Pi Pico.
Arduino сначала использовала mbed для своей платы Arduino Nano 33 BLE, поскольку у них не было официального ядра Arduino для микроконтроллера Nordic nRF52840 Cortex-M4, и, похоже, они сделали то же самое для Raspberry Pi RP2040, чья реализация mbed основана на C SDK.
Давай посмотрим, насколько это сложно? Мы можем найти релиз и журнал изменений на Github с некоторыми инструкциями на основном Github.
Во-первых, мы можем скопировать репозиторий в каталог скетчей (см. Настройки Arduino IDE), в нашем случае это ~/Arduino:
1 2 3 |
mkdir -p ~/Arduino/hardware/arduino-git cd ~/Arduino/hardware/arduino-git/ git clone https://github.com/arduino/ArduinoCore-mbed mbed |
Также потребуется скопировать ArduinoCore-API:
1 2 |
git clone https://github.com/arduino/ArduinoCore-API ln -s ~/ArduinoCore-API/api mbed/cores/arduino/api |
Затем можно перейти в диспетчер плат, найти mbed и установить «платы Arduino Mbed OS RP2040».
Затем можно выбрать в меню плату Raspberry Pi Pico, а также порт, к которому она подключена: /dev/ttyACM0.
Пример Blink может быть собран, но образец не может быть загружен на плату.
Мы попробовали с двумя платами Raspberry Pi Pico, и обе вышли из строя, в то время как они отлично работали с неофициальным портом Arduino Core. Посмотрим на журнал ядра в Ubuntu 20.04 после подключения платы:
1 2 3 4 5 6 7 |
[19281.103834] usb 1-1: new full-speed USB device number 11 using xhci_hcd [19281.279258] usb 1-1: New USB device found, idVendor=2e8a, idProduct=000a, bcdDevice= 1.00 [19281.279263] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [19281.279265] usb 1-1: Product: PicoArduino [19281.279267] usb 1-1: Manufacturer: Raspberry Pi [19281.279269] usb 1-1: SerialNumber: E6605838833D8338 [19281.315348] cdc_acm 1-1:1.0: ttyACM0: USB ACM device |
Устройство ttyACM0 определено правильно:
1 2 3 4 |
bt -l port | age (sec) | device | driver | description ------+------------+------------+------------------+---------------------- * 0 | 46 | ttyACM0 | cdc_acm | Board CDC |
Но при попытке сохранить прошивку на плату, перезагружает ее в режиме BOOT, и последовательный порт пропадает, раздел Pico (RPI-RP2) монтируется:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[19354.726744] usb 1-1: USB disconnect, device number 11 [19354.729182] cdc_acm 1-1:1.0: failed to set dtr/rts [19355.005594] usb 1-1: new full-speed USB device number 12 using xhci_hcd [19355.173187] usb 1-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00 [19355.173192] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [19355.173196] usb 1-1: Product: RP2 Boot [19355.173199] usb 1-1: Manufacturer: Raspberry Pi [19355.173201] usb 1-1: SerialNumber: E0C912D24340 [19355.175326] usb-storage 1-1:1.0: USB Mass Storage device detected [19355.175506] scsi host2: usb-storage 1-1:1.0 [19356.183622] scsi 2:0:0:0: Direct-Access RPI RP2 1 PQ: 0 ANSI: 2 [19356.184049] sd 2:0:0:0: Attached scsi generic sg2 type 0 [19356.184363] sd 2:0:0:0: [sdc] 262144 512-byte logical blocks: (134 MB/128 MiB) [19356.185221] sd 2:0:0:0: [sdc] Write Protect is off [19356.185223] sd 2:0:0:0: [sdc] Mode Sense: 03 00 00 00 [19356.187259] sd 2:0:0:0: [sdc] No Caching mode page found [19356.187266] sd 2:0:0:0: [sdc] Assuming drive cache: write through [19356.217512] sdc: sdc1 [19356.221243] sd 2:0:0:0: [sdc] Attached SCSI removable disk |
На этом этапе IDE Arduino должна скопировать файл UF2 в раздел, но этого не происходит. Мы нашли обходной путь на форуме Raspberry Pi. Мы нашли файл uf2 в /tmp /arduino*:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
jaufranc@cnx-laptop-4:/tmp/arduino_build_781291$ ls -l total 5824 -rwxrwxr-x 1 jaufranc jaufranc 89672 Apr 12 16:45 Blink.ino.bin -rwxrwxr-x 1 jaufranc jaufranc 1567000 Apr 12 16:45 Blink.ino.elf -rw-rw-r-- 1 jaufranc jaufranc 179712 Apr 12 16:45 Blink.ino.elf.uf2 -rw-rw-r-- 1 jaufranc jaufranc 252290 Apr 12 16:45 Blink.ino.hex -rw-rw-r-- 1 jaufranc jaufranc 4047278 Apr 12 16:45 Blink.ino.map -rw-r--r-- 1 jaufranc jaufranc 1852 Apr 12 16:45 build.options.json drwxr-xr-x 2 jaufranc jaufranc 4096 Apr 12 16:45 core -rw-r--r-- 1 jaufranc jaufranc 449 Apr 12 16:45 includes.cache drwxr-xr-x 2 jaufranc jaufranc 4096 Apr 12 16:45 libraries drwxr-xr-x 2 jaufranc jaufranc 4096 Apr 12 16:45 preproc drwxr-xr-x 2 jaufranc jaufranc 4096 Apr 12 16:45 sketch |
и скопировали на диск:
1 |
cp Blink.ino.elf.uf2 /media/jaufranc/RPI-RP2/ |
И у нас на плате мигал светодиод. Поскольку это предварительный порт, этим объясняется, почему представители Arduino просто написали об этом в Твиттере, а не написали сообщение в блоге, объявив о выпуске Arduino Core mbed 2.0 для плат RP2040.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.