Compare commits

...
10 Commits
Author SHA1 Message Date
Earle F. Philhower, III 69ab736cf8 Update version 2022-10-04 17:14:52 -07:00
Earle F. Philhower, III 3e758dcebb Add TARGET_RP2040 to build defines (#898)
Fixes #896 since it seems the Arduino.cc core defines this constant
2022-10-04 17:04:25 -07:00
Earle F. Philhower, III b249811e28 Support IDE2, detect UF2 volumes (#897)
Allow the IDE to detect UF2 volumes (i.e. when you hold BOOTDEL and
plug in the board).

Allows the IDE2 to properly upload using OTA and serial.

Fixes #890 and others
2022-10-04 16:52:36 -07:00
Earle F. Philhower, III 7f216f35ab Allow double-reset to jump to USB bootloader (#893)
Call `rp2040.enableDoubleResetBootloader()` anywhere in the code to
enable the check.  W/o that call, the checker will be linked in.

See #892

CORE1 doesn't start until well after the C runtime initialization,
so the flag won't be overwritten.

Also increase timeout to 350ms because OTA bootup can be
slow.
2022-10-04 14:04:40 -07:00
Earle F. Philhower, III 029471ecca Drive pin LOW after Tone(period) timeout (#887)
Fixes #886
2022-09-29 13:03:49 -07:00
Earle F. Philhower, III 4cc6c36c37 Fix Serial1/2 debug output mode in CoreMutex (#883)
Fixes #882
2022-09-26 14:19:00 -07:00
Earle F. Philhower, III 0cd5b0ac47 Allow setCTS/RTS(UART_PIN_NOT_DEFINED) (#881)
Fixes #880
2022-09-26 08:13:44 -07:00
Earle F. Philhower, III 939c83127e Fix deadlock during attachInterrupt (#879)
Fixes #878
2022-09-25 10:02:48 -07:00
Tim Boldt 3768aa7e1f Fix typo in HttpClient HTTPS example (#876) 2022-09-24 19:23:56 -07:00
Earle F. Philhower, III 7a85c3917f Allow setting the WiFi region for PicoW (#875)
Fixes #874
2022-09-23 12:22:22 -07:00
22 changed files with 717 additions and 114 deletions
+313
View File
@@ -12,6 +12,7 @@ menu.exceptions=C++ Exceptions
menu.dbgport=Debug Port
menu.dbglvl=Debug Level
menu.boot2=Boot Stage 2
menu.wificountry=WiFi Region
menu.usbstack=USB Stack
menu.ipstack=IP Stack
@@ -650,6 +651,110 @@ rpipicow.menu.usbstack.picosdk=Pico SDK
rpipicow.menu.usbstack.picosdk.build.usbstack_flags=
rpipicow.menu.usbstack.tinyusb=Adafruit TinyUSB
rpipicow.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
rpipicow.menu.wificountry.worldwide=Worldwide
rpipicow.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
rpipicow.menu.wificountry.australia=Australia
rpipicow.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
rpipicow.menu.wificountry.austria=Austria
rpipicow.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
rpipicow.menu.wificountry.belgium=Belgium
rpipicow.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
rpipicow.menu.wificountry.brazil=Brazil
rpipicow.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
rpipicow.menu.wificountry.canada=Canada
rpipicow.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
rpipicow.menu.wificountry.chile=Chile
rpipicow.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
rpipicow.menu.wificountry.china=China
rpipicow.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
rpipicow.menu.wificountry.colombia=Colombia
rpipicow.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
rpipicow.menu.wificountry.czech_republic=Czech Republic
rpipicow.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
rpipicow.menu.wificountry.denmark=Denmark
rpipicow.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
rpipicow.menu.wificountry.estonia=Estonia
rpipicow.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
rpipicow.menu.wificountry.finland=Finland
rpipicow.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
rpipicow.menu.wificountry.france=France
rpipicow.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
rpipicow.menu.wificountry.germany=Germany
rpipicow.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
rpipicow.menu.wificountry.greece=Greece
rpipicow.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
rpipicow.menu.wificountry.hong_kong=Hong Kong
rpipicow.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
rpipicow.menu.wificountry.hungary=Hungary
rpipicow.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
rpipicow.menu.wificountry.iceland=Iceland
rpipicow.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
rpipicow.menu.wificountry.india=India
rpipicow.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
rpipicow.menu.wificountry.israel=Israel
rpipicow.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
rpipicow.menu.wificountry.italy=Italy
rpipicow.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
rpipicow.menu.wificountry.japan=Japan
rpipicow.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
rpipicow.menu.wificountry.kenya=Kenya
rpipicow.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
rpipicow.menu.wificountry.latvia=Latvia
rpipicow.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
rpipicow.menu.wificountry.liechtenstein=Liechtenstein
rpipicow.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
rpipicow.menu.wificountry.lithuania=Lithuania
rpipicow.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
rpipicow.menu.wificountry.luxembourg=Luxembourg
rpipicow.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
rpipicow.menu.wificountry.malaysia=Malaysia
rpipicow.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
rpipicow.menu.wificountry.malta=Malta
rpipicow.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
rpipicow.menu.wificountry.mexico=Mexico
rpipicow.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
rpipicow.menu.wificountry.netherlands=Netherlands
rpipicow.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
rpipicow.menu.wificountry.new_zealand=New Zealand
rpipicow.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
rpipicow.menu.wificountry.nigeria=Nigeria
rpipicow.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
rpipicow.menu.wificountry.norway=Norway
rpipicow.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
rpipicow.menu.wificountry.peru=Peru
rpipicow.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
rpipicow.menu.wificountry.philippines=Philippines
rpipicow.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
rpipicow.menu.wificountry.poland=Poland
rpipicow.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
rpipicow.menu.wificountry.portugal=Portugal
rpipicow.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
rpipicow.menu.wificountry.singapore=Singapore
rpipicow.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
rpipicow.menu.wificountry.slovakia=Slovakia
rpipicow.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
rpipicow.menu.wificountry.slovenia=Slovenia
rpipicow.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
rpipicow.menu.wificountry.south_africa=South Africa
rpipicow.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
rpipicow.menu.wificountry.south_korea=South Korea
rpipicow.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
rpipicow.menu.wificountry.spain=Spain
rpipicow.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
rpipicow.menu.wificountry.sweden=Sweden
rpipicow.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
rpipicow.menu.wificountry.switzerland=Switzerland
rpipicow.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
rpipicow.menu.wificountry.taiwan=Taiwan
rpipicow.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
rpipicow.menu.wificountry.thailand=Thailand
rpipicow.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
rpipicow.menu.wificountry.turkey=Turkey
rpipicow.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
rpipicow.menu.wificountry.uk=UK
rpipicow.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
rpipicow.menu.wificountry.usa=USA
rpipicow.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
rpipicow.menu.ipstack.ipv4only=IPv4 Only
rpipicow.menu.ipstack.ipv4only.build.libpico=libpico.a
rpipicow.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
@@ -811,6 +916,110 @@ rpipicowpicoprobe.menu.usbstack.picosdk=Pico SDK
rpipicowpicoprobe.menu.usbstack.picosdk.build.usbstack_flags=
rpipicowpicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB
rpipicowpicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
rpipicowpicoprobe.menu.wificountry.worldwide=Worldwide
rpipicowpicoprobe.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
rpipicowpicoprobe.menu.wificountry.australia=Australia
rpipicowpicoprobe.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
rpipicowpicoprobe.menu.wificountry.austria=Austria
rpipicowpicoprobe.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
rpipicowpicoprobe.menu.wificountry.belgium=Belgium
rpipicowpicoprobe.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
rpipicowpicoprobe.menu.wificountry.brazil=Brazil
rpipicowpicoprobe.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
rpipicowpicoprobe.menu.wificountry.canada=Canada
rpipicowpicoprobe.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
rpipicowpicoprobe.menu.wificountry.chile=Chile
rpipicowpicoprobe.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
rpipicowpicoprobe.menu.wificountry.china=China
rpipicowpicoprobe.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
rpipicowpicoprobe.menu.wificountry.colombia=Colombia
rpipicowpicoprobe.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
rpipicowpicoprobe.menu.wificountry.czech_republic=Czech Republic
rpipicowpicoprobe.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
rpipicowpicoprobe.menu.wificountry.denmark=Denmark
rpipicowpicoprobe.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
rpipicowpicoprobe.menu.wificountry.estonia=Estonia
rpipicowpicoprobe.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
rpipicowpicoprobe.menu.wificountry.finland=Finland
rpipicowpicoprobe.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
rpipicowpicoprobe.menu.wificountry.france=France
rpipicowpicoprobe.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
rpipicowpicoprobe.menu.wificountry.germany=Germany
rpipicowpicoprobe.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
rpipicowpicoprobe.menu.wificountry.greece=Greece
rpipicowpicoprobe.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
rpipicowpicoprobe.menu.wificountry.hong_kong=Hong Kong
rpipicowpicoprobe.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
rpipicowpicoprobe.menu.wificountry.hungary=Hungary
rpipicowpicoprobe.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
rpipicowpicoprobe.menu.wificountry.iceland=Iceland
rpipicowpicoprobe.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
rpipicowpicoprobe.menu.wificountry.india=India
rpipicowpicoprobe.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
rpipicowpicoprobe.menu.wificountry.israel=Israel
rpipicowpicoprobe.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
rpipicowpicoprobe.menu.wificountry.italy=Italy
rpipicowpicoprobe.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
rpipicowpicoprobe.menu.wificountry.japan=Japan
rpipicowpicoprobe.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
rpipicowpicoprobe.menu.wificountry.kenya=Kenya
rpipicowpicoprobe.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
rpipicowpicoprobe.menu.wificountry.latvia=Latvia
rpipicowpicoprobe.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
rpipicowpicoprobe.menu.wificountry.liechtenstein=Liechtenstein
rpipicowpicoprobe.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
rpipicowpicoprobe.menu.wificountry.lithuania=Lithuania
rpipicowpicoprobe.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
rpipicowpicoprobe.menu.wificountry.luxembourg=Luxembourg
rpipicowpicoprobe.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
rpipicowpicoprobe.menu.wificountry.malaysia=Malaysia
rpipicowpicoprobe.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
rpipicowpicoprobe.menu.wificountry.malta=Malta
rpipicowpicoprobe.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
rpipicowpicoprobe.menu.wificountry.mexico=Mexico
rpipicowpicoprobe.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
rpipicowpicoprobe.menu.wificountry.netherlands=Netherlands
rpipicowpicoprobe.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
rpipicowpicoprobe.menu.wificountry.new_zealand=New Zealand
rpipicowpicoprobe.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
rpipicowpicoprobe.menu.wificountry.nigeria=Nigeria
rpipicowpicoprobe.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
rpipicowpicoprobe.menu.wificountry.norway=Norway
rpipicowpicoprobe.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
rpipicowpicoprobe.menu.wificountry.peru=Peru
rpipicowpicoprobe.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
rpipicowpicoprobe.menu.wificountry.philippines=Philippines
rpipicowpicoprobe.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
rpipicowpicoprobe.menu.wificountry.poland=Poland
rpipicowpicoprobe.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
rpipicowpicoprobe.menu.wificountry.portugal=Portugal
rpipicowpicoprobe.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
rpipicowpicoprobe.menu.wificountry.singapore=Singapore
rpipicowpicoprobe.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
rpipicowpicoprobe.menu.wificountry.slovakia=Slovakia
rpipicowpicoprobe.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
rpipicowpicoprobe.menu.wificountry.slovenia=Slovenia
rpipicowpicoprobe.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
rpipicowpicoprobe.menu.wificountry.south_africa=South Africa
rpipicowpicoprobe.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
rpipicowpicoprobe.menu.wificountry.south_korea=South Korea
rpipicowpicoprobe.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
rpipicowpicoprobe.menu.wificountry.spain=Spain
rpipicowpicoprobe.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
rpipicowpicoprobe.menu.wificountry.sweden=Sweden
rpipicowpicoprobe.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
rpipicowpicoprobe.menu.wificountry.switzerland=Switzerland
rpipicowpicoprobe.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
rpipicowpicoprobe.menu.wificountry.taiwan=Taiwan
rpipicowpicoprobe.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
rpipicowpicoprobe.menu.wificountry.thailand=Thailand
rpipicowpicoprobe.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
rpipicowpicoprobe.menu.wificountry.turkey=Turkey
rpipicowpicoprobe.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
rpipicowpicoprobe.menu.wificountry.uk=UK
rpipicowpicoprobe.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
rpipicowpicoprobe.menu.wificountry.usa=USA
rpipicowpicoprobe.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
rpipicowpicoprobe.menu.ipstack.ipv4only=IPv4 Only
rpipicowpicoprobe.menu.ipstack.ipv4only.build.libpico=libpico.a
rpipicowpicoprobe.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
@@ -970,6 +1179,110 @@ rpipicowpicodebug.menu.dbglvl.NDEBUG=NDEBUG
rpipicowpicodebug.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
rpipicowpicodebug.menu.usbstack.nousb=No USB
rpipicowpicodebug.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"
rpipicowpicodebug.menu.wificountry.worldwide=Worldwide
rpipicowpicodebug.menu.wificountry.worldwide.build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
rpipicowpicodebug.menu.wificountry.australia=Australia
rpipicowpicodebug.menu.wificountry.australia.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRALIA
rpipicowpicodebug.menu.wificountry.austria=Austria
rpipicowpicodebug.menu.wificountry.austria.build.wificc=-DWIFICC=CYW43_COUNTRY_AUSTRIA
rpipicowpicodebug.menu.wificountry.belgium=Belgium
rpipicowpicodebug.menu.wificountry.belgium.build.wificc=-DWIFICC=CYW43_COUNTRY_BELGIUM
rpipicowpicodebug.menu.wificountry.brazil=Brazil
rpipicowpicodebug.menu.wificountry.brazil.build.wificc=-DWIFICC=CYW43_COUNTRY_BRAZIL
rpipicowpicodebug.menu.wificountry.canada=Canada
rpipicowpicodebug.menu.wificountry.canada.build.wificc=-DWIFICC=CYW43_COUNTRY_CANADA
rpipicowpicodebug.menu.wificountry.chile=Chile
rpipicowpicodebug.menu.wificountry.chile.build.wificc=-DWIFICC=CYW43_COUNTRY_CHILE
rpipicowpicodebug.menu.wificountry.china=China
rpipicowpicodebug.menu.wificountry.china.build.wificc=-DWIFICC=CYW43_COUNTRY_CHINA
rpipicowpicodebug.menu.wificountry.colombia=Colombia
rpipicowpicodebug.menu.wificountry.colombia.build.wificc=-DWIFICC=CYW43_COUNTRY_COLOMBIA
rpipicowpicodebug.menu.wificountry.czech_republic=Czech Republic
rpipicowpicodebug.menu.wificountry.czech_republic.build.wificc=-DWIFICC=CYW43_COUNTRY_CZECH_REPUBLIC
rpipicowpicodebug.menu.wificountry.denmark=Denmark
rpipicowpicodebug.menu.wificountry.denmark.build.wificc=-DWIFICC=CYW43_COUNTRY_DENMARK
rpipicowpicodebug.menu.wificountry.estonia=Estonia
rpipicowpicodebug.menu.wificountry.estonia.build.wificc=-DWIFICC=CYW43_COUNTRY_ESTONIA
rpipicowpicodebug.menu.wificountry.finland=Finland
rpipicowpicodebug.menu.wificountry.finland.build.wificc=-DWIFICC=CYW43_COUNTRY_FINLAND
rpipicowpicodebug.menu.wificountry.france=France
rpipicowpicodebug.menu.wificountry.france.build.wificc=-DWIFICC=CYW43_COUNTRY_FRANCE
rpipicowpicodebug.menu.wificountry.germany=Germany
rpipicowpicodebug.menu.wificountry.germany.build.wificc=-DWIFICC=CYW43_COUNTRY_GERMANY
rpipicowpicodebug.menu.wificountry.greece=Greece
rpipicowpicodebug.menu.wificountry.greece.build.wificc=-DWIFICC=CYW43_COUNTRY_GREECE
rpipicowpicodebug.menu.wificountry.hong_kong=Hong Kong
rpipicowpicodebug.menu.wificountry.hong_kong.build.wificc=-DWIFICC=CYW43_COUNTRY_HONG_KONG
rpipicowpicodebug.menu.wificountry.hungary=Hungary
rpipicowpicodebug.menu.wificountry.hungary.build.wificc=-DWIFICC=CYW43_COUNTRY_HUNGARY
rpipicowpicodebug.menu.wificountry.iceland=Iceland
rpipicowpicodebug.menu.wificountry.iceland.build.wificc=-DWIFICC=CYW43_COUNTRY_ICELAND
rpipicowpicodebug.menu.wificountry.india=India
rpipicowpicodebug.menu.wificountry.india.build.wificc=-DWIFICC=CYW43_COUNTRY_INDIA
rpipicowpicodebug.menu.wificountry.israel=Israel
rpipicowpicodebug.menu.wificountry.israel.build.wificc=-DWIFICC=CYW43_COUNTRY_ISRAEL
rpipicowpicodebug.menu.wificountry.italy=Italy
rpipicowpicodebug.menu.wificountry.italy.build.wificc=-DWIFICC=CYW43_COUNTRY_ITALY
rpipicowpicodebug.menu.wificountry.japan=Japan
rpipicowpicodebug.menu.wificountry.japan.build.wificc=-DWIFICC=CYW43_COUNTRY_JAPAN
rpipicowpicodebug.menu.wificountry.kenya=Kenya
rpipicowpicodebug.menu.wificountry.kenya.build.wificc=-DWIFICC=CYW43_COUNTRY_KENYA
rpipicowpicodebug.menu.wificountry.latvia=Latvia
rpipicowpicodebug.menu.wificountry.latvia.build.wificc=-DWIFICC=CYW43_COUNTRY_LATVIA
rpipicowpicodebug.menu.wificountry.liechtenstein=Liechtenstein
rpipicowpicodebug.menu.wificountry.liechtenstein.build.wificc=-DWIFICC=CYW43_COUNTRY_LIECHTENSTEIN
rpipicowpicodebug.menu.wificountry.lithuania=Lithuania
rpipicowpicodebug.menu.wificountry.lithuania.build.wificc=-DWIFICC=CYW43_COUNTRY_LITHUANIA
rpipicowpicodebug.menu.wificountry.luxembourg=Luxembourg
rpipicowpicodebug.menu.wificountry.luxembourg.build.wificc=-DWIFICC=CYW43_COUNTRY_LUXEMBOURG
rpipicowpicodebug.menu.wificountry.malaysia=Malaysia
rpipicowpicodebug.menu.wificountry.malaysia.build.wificc=-DWIFICC=CYW43_COUNTRY_MALAYSIA
rpipicowpicodebug.menu.wificountry.malta=Malta
rpipicowpicodebug.menu.wificountry.malta.build.wificc=-DWIFICC=CYW43_COUNTRY_MALTA
rpipicowpicodebug.menu.wificountry.mexico=Mexico
rpipicowpicodebug.menu.wificountry.mexico.build.wificc=-DWIFICC=CYW43_COUNTRY_MEXICO
rpipicowpicodebug.menu.wificountry.netherlands=Netherlands
rpipicowpicodebug.menu.wificountry.netherlands.build.wificc=-DWIFICC=CYW43_COUNTRY_NETHERLANDS
rpipicowpicodebug.menu.wificountry.new_zealand=New Zealand
rpipicowpicodebug.menu.wificountry.new_zealand.build.wificc=-DWIFICC=CYW43_COUNTRY_NEW_ZEALAND
rpipicowpicodebug.menu.wificountry.nigeria=Nigeria
rpipicowpicodebug.menu.wificountry.nigeria.build.wificc=-DWIFICC=CYW43_COUNTRY_NIGERIA
rpipicowpicodebug.menu.wificountry.norway=Norway
rpipicowpicodebug.menu.wificountry.norway.build.wificc=-DWIFICC=CYW43_COUNTRY_NORWAY
rpipicowpicodebug.menu.wificountry.peru=Peru
rpipicowpicodebug.menu.wificountry.peru.build.wificc=-DWIFICC=CYW43_COUNTRY_PERU
rpipicowpicodebug.menu.wificountry.philippines=Philippines
rpipicowpicodebug.menu.wificountry.philippines.build.wificc=-DWIFICC=CYW43_COUNTRY_PHILIPPINES
rpipicowpicodebug.menu.wificountry.poland=Poland
rpipicowpicodebug.menu.wificountry.poland.build.wificc=-DWIFICC=CYW43_COUNTRY_POLAND
rpipicowpicodebug.menu.wificountry.portugal=Portugal
rpipicowpicodebug.menu.wificountry.portugal.build.wificc=-DWIFICC=CYW43_COUNTRY_PORTUGAL
rpipicowpicodebug.menu.wificountry.singapore=Singapore
rpipicowpicodebug.menu.wificountry.singapore.build.wificc=-DWIFICC=CYW43_COUNTRY_SINGAPORE
rpipicowpicodebug.menu.wificountry.slovakia=Slovakia
rpipicowpicodebug.menu.wificountry.slovakia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVAKIA
rpipicowpicodebug.menu.wificountry.slovenia=Slovenia
rpipicowpicodebug.menu.wificountry.slovenia.build.wificc=-DWIFICC=CYW43_COUNTRY_SLOVENIA
rpipicowpicodebug.menu.wificountry.south_africa=South Africa
rpipicowpicodebug.menu.wificountry.south_africa.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_AFRICA
rpipicowpicodebug.menu.wificountry.south_korea=South Korea
rpipicowpicodebug.menu.wificountry.south_korea.build.wificc=-DWIFICC=CYW43_COUNTRY_SOUTH_KOREA
rpipicowpicodebug.menu.wificountry.spain=Spain
rpipicowpicodebug.menu.wificountry.spain.build.wificc=-DWIFICC=CYW43_COUNTRY_SPAIN
rpipicowpicodebug.menu.wificountry.sweden=Sweden
rpipicowpicodebug.menu.wificountry.sweden.build.wificc=-DWIFICC=CYW43_COUNTRY_SWEDEN
rpipicowpicodebug.menu.wificountry.switzerland=Switzerland
rpipicowpicodebug.menu.wificountry.switzerland.build.wificc=-DWIFICC=CYW43_COUNTRY_SWITZERLAND
rpipicowpicodebug.menu.wificountry.taiwan=Taiwan
rpipicowpicodebug.menu.wificountry.taiwan.build.wificc=-DWIFICC=CYW43_COUNTRY_TAIWAN
rpipicowpicodebug.menu.wificountry.thailand=Thailand
rpipicowpicodebug.menu.wificountry.thailand.build.wificc=-DWIFICC=CYW43_COUNTRY_THAILAND
rpipicowpicodebug.menu.wificountry.turkey=Turkey
rpipicowpicodebug.menu.wificountry.turkey.build.wificc=-DWIFICC=CYW43_COUNTRY_TURKEY
rpipicowpicodebug.menu.wificountry.uk=UK
rpipicowpicodebug.menu.wificountry.uk.build.wificc=-DWIFICC=CYW43_COUNTRY_UK
rpipicowpicodebug.menu.wificountry.usa=USA
rpipicowpicodebug.menu.wificountry.usa.build.wificc=-DWIFICC=CYW43_COUNTRY_USA
rpipicowpicodebug.menu.ipstack.ipv4only=IPv4 Only
rpipicowpicodebug.menu.ipstack.ipv4only.build.libpico=libpico.a
rpipicowpicodebug.menu.ipstack.ipv4only.build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
+57
View File
@@ -0,0 +1,57 @@
/*
CoreMutex for the Raspberry Pi Pico RP2040
Implements a deadlock-safe multicore mutex for sharing things like the
USB or UARTs.
Copyright (c) 2021 Earle F. Philhower, III <earlephilhower@yahoo.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "Arduino.h"
#include "CoreMutex.h"
CoreMutex::CoreMutex(mutex_t *mutex, bool debugEnable) {
_mutex = mutex;
_acquired = false;
if (__isFreeRTOS) {
auto m = __get_freertos_mutex_for_ptr(mutex);
__freertos_mutex_take(m);
} else {
uint32_t owner;
if (!mutex_try_enter(_mutex, &owner)) {
if (owner == get_core_num()) { // Deadlock!
if (debugEnable) {
DEBUGCORE("CoreMutex - Deadlock detected!\n");
}
return;
}
mutex_enter_blocking(_mutex);
}
}
_acquired = true;
}
CoreMutex::~CoreMutex() {
if (_acquired) {
if (__isFreeRTOS) {
auto m = __get_freertos_mutex_for_ptr(_mutex);
__freertos_mutex_give(m);
} else {
mutex_exit(_mutex);
}
}
}
+2 -31
View File
@@ -28,37 +28,8 @@
class CoreMutex {
public:
CoreMutex(mutex_t *mutex, bool debugEnable = true) {
_mutex = mutex;
_acquired = false;
if (__isFreeRTOS) {
auto m = __get_freertos_mutex_for_ptr(mutex);
__freertos_mutex_take(m);
} else {
uint32_t owner;
if (!mutex_try_enter(_mutex, &owner)) {
if (owner == get_core_num()) { // Deadlock!
if (debugEnable) {
DEBUGCORE("CoreMutex - Deadlock detected!\n");
}
return;
}
mutex_enter_blocking(_mutex);
}
}
_acquired = true;
}
~CoreMutex() {
if (_acquired) {
if (__isFreeRTOS) {
auto m = __get_freertos_mutex_for_ptr(_mutex);
__freertos_mutex_give(m);
} else {
mutex_exit(_mutex);
}
}
}
CoreMutex(mutex_t *mutex, bool debugEnable = true);
~CoreMutex();
operator bool() {
return _acquired;
+33
View File
@@ -0,0 +1,33 @@
/*
RP2040 utility class
Copyright (c) 2021 Earle F. Philhower, III <earlephilhower@yahoo.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
#include <hardware/structs/psm.h>
extern "C" void boot_double_tap_check();
// The following check will never actually execute, but it will cause the boot reset
// checker to be linked in as part of the constructors.
void RP2040::enableDoubleResetBootloader() {
if (psm_hw->done == 0) {
boot_double_tap_check();
}
}
+2
View File
@@ -314,6 +314,8 @@ public:
reboot();
}
static void enableDoubleResetBootloader();
void wdt_begin(uint32_t delay_ms) {
watchdog_enable(delay_ms, 1);
}
+3 -3
View File
@@ -1,5 +1,5 @@
#pragma once
#define ARDUINO_PICO_MAJOR 2
#define ARDUINO_PICO_MINOR 5
#define ARDUINO_PICO_REVISION 4
#define ARDUINO_PICO_VERSION_STR "2.5.4"
#define ARDUINO_PICO_MINOR 6
#define ARDUINO_PICO_REVISION 0
#define ARDUINO_PICO_VERSION_STR "2.6.0"
+2 -2
View File
@@ -69,7 +69,7 @@ bool SerialUART::setRTS(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({3, 15, 19}) /* UART0 */,
__bitset({7, 11, 23, 27}) /* UART1 */
};
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index(_uart)]))) {
_rts = pin;
return true;
}
@@ -86,7 +86,7 @@ bool SerialUART::setCTS(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({2, 14, 18}) /* UART0 */,
__bitset({6, 10, 22, 26}) /* UART1 */
};
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index(_uart)]))) {
_cts = pin;
return true;
}
+13 -3
View File
@@ -28,6 +28,7 @@ typedef struct {
pin_size_t pin;
PIO pio;
int sm;
int off;
alarm_id_t alarm;
} Tone;
@@ -38,10 +39,18 @@ auto_init_mutex(_toneMutex);
static PIOProgram _tone2Pgm(&tone2_program);
static std::map<pin_size_t, Tone *> _toneMap;
static inline bool pio_sm_get_enabled(PIO pio, uint sm) {
check_pio_param(pio);
check_sm_param(sm);
return (pio->ctrl & ~(1u << sm)) & (1 << sm);
}
int64_t _stopTonePIO(alarm_id_t id, void *user_data) {
(void) id;
Tone *tone = (Tone *)user_data;
tone->alarm = 0;
digitalWrite(tone->pin, LOW);
pinMode(tone->pin, OUTPUT);
pio_sm_set_enabled(tone->pio, tone->sm, false);
return 0;
}
@@ -72,14 +81,12 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
newTone = new Tone();
newTone->pin = pin;
pinMode(pin, OUTPUT);
int off;
if (!_tone2Pgm.prepare(&newTone->pio, &newTone->sm, &off)) {
if (!_tone2Pgm.prepare(&newTone->pio, &newTone->sm, &newTone->off)) {
DEBUGCORE("ERROR: tone unable to start, out of PIO resources\n");
// ERROR, no free slots
delete newTone;
return;
}
tone2_program_init(newTone->pio, newTone->sm, off, pin);
newTone->alarm = 0;
} else {
newTone = entry->second;
@@ -88,6 +95,9 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
newTone->alarm = 0;
}
}
if (!pio_sm_get_enabled(newTone->pio, newTone->sm)) {
tone2_program_init(newTone->pio, newTone->sm, newTone->off, pin);
}
pio_sm_clear_fifos(newTone->pio, newTone->sm); // Remove any old updates that haven't yet taken effect
pio_sm_put_blocking(newTone->pio, newTone->sm, RP2040::usToPIOCycles(us));
pio_sm_set_enabled(newTone->pio, newTone->sm, true);
@@ -0,0 +1,90 @@
/*
Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
Hacked by EFP3 to allow disabling unless requested
SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico.h"
#include "pico/time.h"
#include "pico/bootrom.h"
#include "pico/binary_info.h"
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS, Window of opportunity for a second press of a reset button to enter BOOTSEL mode (milliseconds), type=int, default=200, group=pico_bootsel_via_double_reset
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS 350
#endif
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED, Optionally define a pin to use as bootloader activity LED when BOOTSEL mode is entered via reset double tap, type=int, min=0, max=29, group=pico_bootsel_via_double_reset
// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK, Optionally disable either the mass storage interface (bit 0) or the PICOBOOT interface (bit 1) when entering BOOTSEL mode via double reset, type=int, min=0, max=3, default=0, group=pico_bootsel_via_double_reset
#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK
#define PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK 0u
#endif
/** \defgroup pico_bootsel_via_double_reset pico_bootsel_via_double_reset
When the 'pico_bootsel_via_double_reset' library is linked, a function is
injected before main() which will detect when the system has been reset
twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode)
when this happens. This allows a double tap of a reset button on a
development board to be used to enter the ROM bootloader, provided this
library is always linked.
*/
#if !PICO_NO_BI_BOOTSEL_VIA_DOUBLE_RESET
bi_decl(bi_program_feature("double reset -> BOOTSEL"));
#endif
// Doesn't make any sense for a RAM only binary
#if !PICO_NO_FLASH
static const uint32_t magic_token[] = {
0xf01681de, 0xbd729b29, 0xd359be7a,
};
// Place our marker on the 2nd core's stack...which will not have been touched when this code is executing
static uint32_t *magic_location = (uint32_t*)0x20040000;
//static uint32_t __uninitialized_ram(magic_location)[count_of(magic_token)];
/* Check for double reset and enter BOOTSEL mode if detected
This function is registered to run automatically before main(). The
algorithm is:
1. Check for magic token in memory; enter BOOTSEL mode if found.
2. Initialise that memory with that magic token.
3. Do nothing for a short while (few hundred ms).
4. Clear the magic token.
5. Continue with normal boot.
Resetting the device twice quickly will interrupt step 3, leaving the token
in place so that the second boot will go to the bootloader.
*/
/*static*/ void __attribute__((constructor)) boot_double_tap_check(void) {
for (uint i = 0; i < count_of(magic_token); i++) {
if (magic_location[i] != magic_token[i]) {
// Arm, wait, then disarm and continue booting
for (i = 0; i < count_of(magic_token); i++) {
magic_location[i] = magic_token[i];
}
busy_wait_us(PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS * 1000);
magic_location[0] = 0;
return;
}
}
// Detected a double reset, so enter USB bootloader
magic_location[0] = 0;
#ifdef PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED
const uint32_t led_mask = 1u << PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED;
#else
const uint32_t led_mask = 0u;
#endif
reset_usb_boot(
led_mask,
PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK
);
}
#endif
+11 -6
View File
@@ -81,6 +81,15 @@ void _gpioInterruptDispatcher(uint gpio, uint32_t events) {
}
}
// To be called when appropriately protected w/IRQ and mutex protects
static void _detachInterruptInternal(pin_size_t pin) {
auto irq = _map.find(pin);
if (irq != _map.end()) {
gpio_set_irq_enabled(pin, 0x0f /* all */, false);
_map.erase(pin);
}
}
extern "C" void attachInterrupt(pin_size_t pin, voidFuncPtr callback, PinStatus mode) {
CoreMutex m(&_irqMutex);
if (!m) {
@@ -97,7 +106,7 @@ extern "C" void attachInterrupt(pin_size_t pin, voidFuncPtr callback, PinStatus
default: return; // ERROR
}
noInterrupts();
detachInterrupt(pin);
_detachInterruptInternal(pin);
CBInfo cb(callback);
_map.insert({pin, cb});
gpio_set_irq_enabled_with_callback(pin, events, true, _gpioInterruptDispatcher);
@@ -134,10 +143,6 @@ extern "C" void detachInterrupt(pin_size_t pin) {
}
noInterrupts();
auto irq = _map.find(pin);
if (irq != _map.end()) {
gpio_set_irq_enabled(pin, 0x0f /* all */, false);
_map.erase(pin);
}
_detachInterruptInternal(pin);
interrupts();
}
+2 -2
View File
@@ -54,9 +54,9 @@ author = u'Earle F. Philhower, III'
# built documents.
#
# The short X.Y version.
version = u'2.5.4'
version = u'2.6.0'
# The full version, including alpha/beta/rc tags.
release = u'2.5.4'
release = u'2.6.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
+4 -4
View File
@@ -27,12 +27,12 @@ WiFiClientSecure documentation for more details.
// Error checking is left as an exercise for the reader...
HTTPClient https;
https.setInsecure(); // Use certs, but do not check their authenticity
https.setInsecure(); // Use certs, but do not check their authenticity
if (https.begin("https://my.secure.server/url")) {
if (http.GET() > 0) {
String data = http.getString();
if (https.GET() > 0) {
String data = https.getString();
}
http.end();
https.end();
}
Unlike the ESP8266 and ESP32 ``HTTPClient`` implementations it is not necessary
+7 -18
View File
@@ -65,25 +65,14 @@ Them hit the upload button and your sketch should upload and run.
In some cases the Pico will encounter a hard hang and its USB port will not respond to the auto-reset request. Should this happen, just
follow the initial procedure of holding the BOOTSEL button down while plugging in the Pico to enter the ROM bootloader.
Unable to Upload First Sketch
-----------------------------
If the Arduino IDE has never seen a serial port from a working device (Pico, AVR, or any other serial port), you
may not be able to install using the prior directions because the ``Tools->Port`` menu will be grayed out and
empty. In this case, a special workaround identified by @fjansson in `this issue report <https://github.com/earlephilhower/arduino-pico/issues/688>`_ .
To allow subsequent uploads to automatically work, you will need to manually install a UF2 binary onto the Raspberry Pi Pico one time to
allow it to present a Serial port for the Arduino IDE to detect and save.
Perform the following steps to program a dummy sketch:
1. Open a new, empty sketch (doesn't work with a read-only example sketch).
2. Compile it by pressing the "Verify" checkmark button.
3. Select the ``Sketch -> Export Compiled Binary`` menu. Select a location e.g. the desktop. A folder is created there, containing a file ending in .uf2
4. Copy this file to the Pico's drive, by drag and drop in the Explorer.
The Pico restarts and now now has a serial port. Now the Port menu in Arduino is not gray anymore, select the port there.
After this, normal uploading from the Arduino editor should work.
Uploading the First Sketch
--------------------------
The first time you upload a sketch to a board, you'll need to use the built-in ROM bootloader to handle the upload and not a serial port.
1. Hold the BOOTSEL button while plugging in the board.
2. Select ``Tools->Port->UF2 Board`` from the menu.
3. Upload as normal.
4. After the board boots up, select the new serial port from the ``Tools->Port`` menu.
Windows 7 Driver Notes
----------------------
+9
View File
@@ -70,3 +70,12 @@ int rp2040.getTotalHeap()
Returns the total heap that was available to this program at compile time (i.e.
the Pico RAM size minus things like the ``.data`` and ``.bss`` sections and other
overhead).
Bootloader
----------
void rp2040.enableDoubleResetBootloader()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Add a call anywhere in the sketch to ``rp2040.enableDoubleResetBootloader()`` and
the core will check for a double-tap on reset, and if found will start the USB
bootloader.
+2
View File
@@ -54,6 +54,8 @@ SerialPIO KEYWORD2
setFIFOSize KEYWORD2
setPollingMode KEYWORD2
enableDoubleResetBootloader KEYWORD2
OUTPUT_2MA LITERAL1
OUTPUT_4MA LITERAL1
OUTPUT_8MA LITERAL1
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "framework-arduinopico",
"version": "1.20504.0",
"version": "1.20600.0",
"description": "Arduino Wiring-based Framework (RPi Pico RP2040)",
"keywords": [
"framework",
+6
View File
@@ -113,6 +113,12 @@ sed 's/^tools.picoprobe.cmd=.*//g' | \
sed 's/^#tools.picoprobe.cmd=/tools.picoprobe.cmd=/g' | \
sed 's/^tools.picodebug.cmd=.*//g' | \
sed 's/^#tools.picodebug.cmd=/tools.picodebug.cmd=/g' | \
sed 's/^discovery.rp2040.pattern=.*//g' | \
sed 's/^#discovery.rp2040.pattern=/discovery.rp2040.pattern=/g' | \
sed 's/^pluggable_discovery.rp2040.pattern=.*//g' | \
sed 's/^#pluggable_discovery.rp2040.pattern=/pluggable_discovery.rp2040.pattern=/g' | \
sed 's/^tools.uf2conv-network.cmd=.*//g' | \
sed 's/^#tools.uf2conv-network.cmd=/tools.uf2conv-network.cmd=/g' | \
sed "s/version=.*/version=$ver/g" |\
sed -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\
> $outdir/platform.txt
+22 -4
View File
@@ -20,7 +20,7 @@
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=Raspberry Pi RP2040 Boards
version=2.5.4
version=2.6.0
runtime.tools.pqt-gcc.path={runtime.platform.path}/system/arm-none-eabi
runtime.tools.pqt-python3.path={runtime.platform.path}/system/python3
@@ -42,7 +42,7 @@ compiler.warning_flags.more=-Wall -Werror=return-type -Wno-ignored-qualifiers
compiler.warning_flags.all=-Wall -Wextra -Werror=return-type -Wno-ignored-qualifiers
compiler.netdefines=-DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DCYW43_LWIP=0 {build.lwipdefs} -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}"
compiler.defines={build.led} {build.usbstack_flags} -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {compiler.netdefines} -DARDUINO_VARIANT="{build.variant}" -DTARGET_RP2040
compiler.includes="-iprefix{runtime.platform.path}/" "@{runtime.platform.path}/lib/platform_inc.txt" "-I{runtime.platform.path}/include"
compiler.flags=-march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections {build.flags.exceptions} {build.flags.stackprotect} {build.flags.cmsis}
compiler.wrap="@{runtime.platform.path}/lib/platform_wrap.txt"
@@ -95,9 +95,13 @@ build.flags.stackprotect=
build.libpico=libpico.a
build.boot2=boot2_generic_03h_4_padded_checksum
build.lwipdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1
build.wificc=-DWIFICC=CYW43_COUNTRY_WORLDWIDE
# Allow Pico boards do be auto-discovered by the IDE
discovery.rp2040.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/discovery.py"
#discovery.rp2040.pattern={runtime.tools.pqt-python3.path}/python3 -I "{runtime.platform.path}/tools/pluggable_discovery.py"
discovery.rp2040.pattern={runtime.platform.path}/system/python3/python3 -I "{runtime.platform.path}/tools/pluggable_discovery.py"
#pluggable_discovery.rp2040.pattern="{runtime.tools.pqt-python3.path}/python3" -I "{runtime.platform.path}/tools/pluggable_discovery.py"
pluggable_discovery.rp2040.pattern="{runtime.platform.path}/system/python3/python3" -I "{runtime.platform.path}/tools/pluggable_discovery.py"
# Compile patterns
@@ -110,7 +114,7 @@ recipe.hooks.sketch.prebuild.pattern="{runtime.tools.pqt-python3.path}/python3"
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {includes} "{source_file}" -o "{object_file}"
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" -I "{build.path}/core" {compiler.cpp.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {build.flags.optimize} {build.wificc} {includes} "{source_file}" -o "{object_file}"
## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.usbpid} {build.usbpwr} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.debug_port} {build.debug_level} {includes} "{source_file}" -o "{object_file}"
@@ -148,6 +152,12 @@ recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build
recipe.size.regex=^(?:\.boot2|\.text|\.rodata|\.ARM\.extab|\.ARM\.exidx)\s+([0-9]+).*
recipe.size.regex.data=^(?:\.data|\.bss|\.ram_vector_table|\.uninitialized_data)\s+([0-9]+).*
upload.tool.uf2conv=uf2conv
upload.tool.serial=uf2conv
upload.tool.network=uf2conv-network
upload.tool.picoprobe=picoprobe
upload.tool.picodebug=picodebug
tools.uf2conv.path=
# Because the variable expansion doesn't allow one tool to find another, the following lines
# will point to "{runtime.platform.path}/tools/python3/python3" in GIT and
@@ -162,6 +172,14 @@ tools.uf2conv.upload.params.quiet=
tools.uf2conv.upload.pattern="{cmd}" -I "{runtime.platform.path}/tools/uf2conv.py" --serial "{serial.port}" --family RP2040 --deploy "{build.path}/{build.project_name}.uf2"
tools.uf2conv.upload.network_pattern="{network_cmd}" -I "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
#tools.uf2conv-network.cmd={runtime.tools.pqt-python3.path}/python3
tools.uf2conv-network.cmd={runtime.platform.path}/system/python3/python3
tools.uf2conv-network.upload.protocol=uf2
tools.uf2conv-network.upload.params.verbose=
tools.uf2conv-network.upload.params.quiet=
tools.uf2conv-network.upload.pattern="{cmd}" -I "{runtime.platform.path}/tools/espota.py" -i "{upload.port.address}" -p "{upload.port.properties.port}" "--auth={upload.field.password}" -f "{build.path}/{build.project_name}.bin"
#tools.picoprobe.cmd={runtime.tools.pqt-openocd.path}
tools.picoprobe.cmd={runtime.platform.path}/system/openocd
tools.picoprobe.upload.protocol=picoprobe
-39
View File
@@ -1,39 +0,0 @@
#!/usr/bin/env python3
import time
import subprocess
import uf2conv
boards = False
while True:
l = uf2conv.get_drives()
if (len(l) > 0) and (not boards):
print ("""
{
"eventType": "add",
"port": {
"address": "1",
"label": "Board",
"boardName": "RPI 2040",
"protocol": "uf2",
"protocolLabel": "UF2 Devices",
"prefs": {},
"identificationPrefs": {}
}
}""", flush=True)
boards = True
elif (len(l) == 0) and boards:
print ("""
{
"eventType": "remove",
"port": {
"address": "1",
"label": "Board",
"boardName": "RPI 2040",
"protocol": "uf2",
"protocolLabel": "UF2 Devices",
"prefs": {},
"identificationPrefs": {}
}
}""", flush=True)
boards = False
time.sleep(1)
+14
View File
@@ -83,6 +83,17 @@ def BuildWithoutUSBStack(name):
print("%s.menu.usbstack.nousb=No USB" % (name))
print('%s.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico"' % (name))
def BuildCountry(name):
countries = [ "Worldwide", "Australia", "Austria", "Belgium", "Brazil", "Canada", "Chile", "China", "Colombia", "Czech Republic",
"Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hong Kong", "Hungary", "Iceland", "India", "Israel",
"Italy", "Japan", "Kenya", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Malaysia", "Malta", "Mexico",
"Netherlands", "New Zealand", "Nigeria", "Norway", "Peru", "Philippines", "Poland", "Portugal", "Singapore", "Slovakia",
"Slovenia", "South Africa", "South Korea", "Spain", "Sweden", "Switzerland", "Taiwan", "Thailand", "Turkey", "UK", "USA"]
for c in countries:
sane = c.replace(" ", "_").upper()
print("%s.menu.wificountry.%s=%s" % (name, sane.lower(), c))
print("%s.menu.wificountry.%s.build.wificc=-DWIFICC=CYW43_COUNTRY_%s" % (name, sane.lower(), sane))
def BuildIPStack(name):
print("%s.menu.ipstack.ipv4only=IPv4 Only" % (name))
print('%s.menu.ipstack.ipv4only.build.libpico=libpico.a' % (name))
@@ -151,6 +162,7 @@ def BuildGlobalMenuList():
print("menu.dbgport=Debug Port")
print("menu.dbglvl=Debug Level")
print("menu.boot2=Boot Stage 2")
print("menu.wificountry=WiFi Region")
print("menu.usbstack=USB Stack")
print("menu.ipstack=IP Stack")
@@ -190,6 +202,8 @@ def MakeBoard(name, vendor_name, product_name, vid, pid, pwr, boarddefine, flash
BuildWithoutUSBStack(n)
else:
BuildUSBStack(n)
if name == "rpipicow":
BuildCountry(n)
BuildIPStack(n)
if name == "generic":
BuildBoot(n)
+119
View File
@@ -0,0 +1,119 @@
#!/usr/bin/env python3
import os
import subprocess
import sys
import time
import threading
toolspath = os.path.dirname(os.path.realpath(__file__))
try:
sys.path.insert(0, os.path.join(toolspath, ".")) # Add pyserial dir to search path
import uf2conv # If this fails, we can't continue and will bomb below
except ImportError:
sys.stderr.write("uf2conv not found next to this tool.\n")
sys.exit(1)
scannerGo = False
def scanner():
global scannerGo
scannerGo = True
boards = False
while scannerGo:
l = uf2conv.get_drives()
if (len(l) > 0) and scannerGo and not boards:
boards = True
print ("""{
"eventType": "add",
"port": {
"address": "UF2_Board",
"label": "UF2 Board",
"protocol": "uf2conv",
"protocolLabel": "UF2 Devices",
"properties": {
"mac": "ffffffffffff",
"pid" : "0x2e8a",
"vid" : "0x000a"
}
}
}""", flush=True)
elif (len(l) == 0) and scannerGo and boards:
boards = False
print("""{
"eventType": "remove",
"port": {
"address": "UF2_Board",
"protocol": "uf2conv"
}
}""", flush = True)
n = time.time() + 2
while scannerGo and (time.time() < n):
time.sleep(.1)
scannerGo = True
def main():
while True:
cmdline = input()
cmd = cmdline.split()[0]
if cmd == "HELLO":
print(""" {
"eventType": "hello",
"message": "OK",
"protocolVersion": 1
}""", flush = True)
elif cmd == "START":
print("""{
"eventType": "start",
"message": "OK"
}""", flush = True);
elif cmd == "STOP":
scannerGo = False
while not scannerGo:
time.sleep(.1)
print("""{
"eventType": "stop",
"message": "OK"
}""", flush = True)
elif cmd == "QUIT":
scannerGo = False
print("""{
"eventType": "quit",
"message": "OK"
}""", flush = True)
return
elif cmd == "LIST":
l = uf2conv.get_drives()
if len(l) > 0:
print ("""{
"eventType": "list",
"ports": [
{
"address": "UF2_Board",
"label": "UF2 Board",
"protocol": "uf2conv",
"protocolLabel": "UF2 Devices",
"properties": {
"mac": "ffffffffffff",
"pid" : "0x2e8a",
"vid" : "0x000a"
}
}
]
}""", flush=True)
else:
print ("""{
"eventType": "list",
"ports": [ ]
}""", flush=True)
elif cmd == "START_SYNC":
print("""{
"eventType": "start_sync",
"message": "OK"
}""", flush = True)
scannerGo = True
threading.Thread(target = scanner).start()
time.sleep(.5)
main()
+5 -1
View File
@@ -20,6 +20,10 @@
#include <pico/cyw43_arch.h>
#ifndef WIFICC
#define WIFICC CYW43_COUNTRY_WORLDWIDE
#endif
extern "C" void initVariant() {
cyw43_arch_init();
cyw43_arch_init_with_country(WIFICC);
}