I'm a fan of the Bigtree SKR boards and have built an MPCNC and a custom delta 3D printer using older ones, so this is really cool. I imagine the PIO can be really handy for doing precise, low (~0) CPU overhead step control!
Did you manually change the boards.txt or package file? The CI is showing a different ordering of entries vs. what the script generates. You'll want to rerun your makeboards.py and commit those changes to get that part passing.
For the "build all boards" failure you'll need to define the commented-out SPI and I2C(Wire) defines. You can give legal defaults (see the plain Pico) or use 99 like you have....unless the user calls Wire.begin() or SPI.begin() the values aren't actually applied...but they do need to be defined.
I'm a fan of the Bigtree SKR boards and have built an [MPCNC](https://docs.v1e.com/mpcnc/intro/) and a custom delta 3D printer using older ones, so this is really cool. I imagine the PIO can be really handy for doing precise, low (~0) CPU overhead step control!
Did you manually change the boards.txt or package file? The CI is showing a different ordering of entries vs. what the script generates. You'll want to rerun your `makeboards.py` and commit those changes to get that part passing.
For the "build all boards" failure you'll need to define the commented-out SPI and I2C(Wire) defines. You can give legal defaults (see the plain Pico) or use `99` like you have....unless the user calls `Wire.begin()` or `SPI.begin()` the values aren't actually applied...but they do need to be defined.
I just checked the schematic and it looks like this has only 2 MB (16Mbit) of flash, so the 16 here should be 2. OTW things like the filesystem and EEPROM will go very, very wrong...
I just checked the schematic and it looks like this has only 2 MB (16Mbit) of flash, so the `16` here should be `2`. OTW things like the filesystem and EEPROM will go very, very wrong...
If https://www.reddit.com/r/BIGTREETECH/comments/19f58r4/skr_pico_flash_size/ is right and the flash is a W25Q16JVUXIQ then the boot2_w25q16jvxq_4_padded_checksum might be an even better match for the Boot2 (faster too, 4 data lines instead of 2), instead of the currently set boot2_w25q080_2_padded_checksum.
If https://www.reddit.com/r/BIGTREETECH/comments/19f58r4/skr_pico_flash_size/ is right and the flash is a W25Q16JVUXIQ then the `boot2_w25q16jvxq_4_padded_checksum` might be an even better match for the Boot2 (faster too, 4 data lines instead of 2), instead of the currently set `boot2_w25q080_2_padded_checksum`.
Could you be mixing up the Espressif DIO/QIO and the Pico. I thought only QSPI (i.e. 4) lines were supported by XIP. The _2 or _4 in boot2.s refers to the sysclk divisor, so a /2 is faster than a /4...
Could you be mixing up the Espressif DIO/QIO and the Pico. I thought only QSPI (i.e. 4) lines were supported by XIP. The _2 or _4 in boot2.s refers to the sysclk divisor, so a /2 is faster than a /4...
Don't forget to give it some filesystem size like Tools -> Flash size -> "2MB (Sketch 1MB, FS: 1MB)".
What's the serial output result when uploading https://github.com/earlephilhower/arduino-pico/blob/master/libraries/LittleFS/examples/SpeedTest/SpeedTest.ino and using either
* `boot2_w25q080_2_padded_checksum`
* `boot2_w25q16jvxq_4_padded_checksum`
* `boot2_generic_03h_2_padded_checksum`
* `boot2_generic_03h_4_padded_checksum`
Don't forget to give it some filesystem size like Tools -> Flash size -> "2MB (Sketch 1MB, FS: 1MB)".
Before you do any testing, be sure to update the flash size to 2 and rebuild the boards.txt file so you don't end up with a FS trying to go past EOF...
Before you do any testing, be sure to update the flash size to `2` and rebuild the boards.txt file so you don't end up with a FS trying to go past EOF...
02:09:56.201 -> Beginning test
02:09:56.201 -> Creating 256KB file, may take a while...
02:09:56.580 -> ==> Time to write 256KB in 256b chunks = 427 milliseconds
02:09:56.580 -> ==> Created file size = 262144
02:09:56.580 -> Reading 256KB file sequentially in 256b chunks
02:09:56.612 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:09:56.612 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:09:56.644 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:09:56.644 -> Reading 256KB file in reverse by 256b chunks
02:09:56.708 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:09:56.708 -> Writing 64K file in 1-byte chunks
02:09:56.996 -> ==> Time to write 64KB in 1b chunks = 266 milliseconds = KB/s
02:09:56.996 -> Reading 64K file in 1-byte chunks
02:09:57.124 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:09:57.124 -> done
02:30:46.366 -> Beginning test
02:30:46.366 -> Creating 256KB file, may take a while...
02:30:47.137 -> ==> Time to write 256KB in 256b chunks = 765 milliseconds
02:30:47.137 -> ==> Created file size = 262144
02:30:47.137 -> Reading 256KB file sequentially in 256b chunks
02:30:47.170 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:30:47.170 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:30:47.202 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:30:47.202 -> Reading 256KB file in reverse by 256b chunks
02:30:47.266 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:30:47.266 -> Writing 64K file in 1-byte chunks
02:30:47.684 -> ==> Time to write 64KB in 1b chunks = 407 milliseconds = KB/s
02:30:47.684 -> Reading 64K file in 1-byte chunks
02:30:47.813 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:30:47.813 -> done
02:41:47.629 -> Beginning test
02:41:47.669 -> Creating 256KB file, may take a while...
02:41:48.661 -> ==> Time to write 256KB in 256b chunks = 1016 milliseconds
02:41:48.661 -> ==> Created file size = 262144
02:41:48.661 -> Reading 256KB file sequentially in 256b chunks
02:41:48.693 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:41:48.693 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:41:48.725 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:41:48.725 -> Reading 256KB file in reverse by 256b chunks
02:41:48.790 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:41:48.790 -> Writing 64K file in 1-byte chunks
02:41:49.211 -> ==> Time to write 64KB in 1b chunks = 415 milliseconds = KB/s
02:41:49.211 -> Reading 64K file in 1-byte chunks
02:41:49.341 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:41:49.341 -> done
boot2_w25q16jvxq_4_padded_checksum
02:33:37.114 -> ==> Time to write 256KB in 256b chunks = 1144 milliseconds
02:33:37.114 -> ==> Created file size = 262144
02:33:37.114 -> Reading 256KB file sequentially in 256b chunks
02:33:37.147 -> ==> Time to read 256KB sequentially in 256b chunks = 45 milliseconds = MB/s
02:33:37.147 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:33:37.179 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 46 milliseconds = MB/s
02:33:37.179 -> Reading 256KB file in reverse by 256b chunks
02:33:37.307 -> ==> Time to read 256KB in reverse in 256b chunks = 109 milliseconds = MB/s
02:33:37.307 -> Writing 64K file in 1-byte chunks
02:33:37.759 -> ==> Time to write 64KB in 1b chunks = 451 milliseconds = KB/s
02:33:37.759 -> Reading 64K file in 1-byte chunks
02:33:37.889 -> ==> Time to read 64KB in 1b chunks = 135 milliseconds = KB/s
02:33:37.889 -> done
// hit reset
02:33:47.947 -> Beginning test
02:33:47.979 -> Creating 256KB file, may take a while...
02:33:49.077 -> ==> Time to write 256KB in 256b chunks = 1097 milliseconds
02:33:49.077 -> ==> Created file size = 262144
02:33:49.077 -> Reading 256KB file sequentially in 256b chunks
02:33:49.109 -> ==> Time to read 256KB sequentially in 256b chunks = 45 milliseconds = MB/s
02:33:49.109 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:33:49.173 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 46 milliseconds = MB/s
02:33:49.173 -> Reading 256KB file in reverse by 256b chunks
02:33:49.269 -> ==> Time to read 256KB in reverse in 256b chunks = 106 milliseconds = MB/s
02:33:49.269 -> Writing 64K file in 1-byte chunks
02:33:49.718 -> ==> Time to write 64KB in 1b chunks = 454 milliseconds = KB/s
02:33:49.718 -> Reading 64K file in 1-byte chunks
02:33:49.879 -> ==> Time to read 64KB in 1b chunks = 135 milliseconds = KB/s
02:33:49.879 -> done
boot2_generic_03h_2_padded_checksum
boot2_generic_03h_4_padded_checksum
between every switch in the boot2_ thing i did a makerboards.py run and closed and reopened the IDE.
but after i tried the boot2_generic_03h_2_padded_checksum i did not get any serial output -
the serial port /dev/ttyACM0 did not show up anymore..
`boot2_w25q080_2_padded_checksum`
```
02:09:56.201 -> Beginning test
02:09:56.201 -> Creating 256KB file, may take a while...
02:09:56.580 -> ==> Time to write 256KB in 256b chunks = 427 milliseconds
02:09:56.580 -> ==> Created file size = 262144
02:09:56.580 -> Reading 256KB file sequentially in 256b chunks
02:09:56.612 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:09:56.612 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:09:56.644 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:09:56.644 -> Reading 256KB file in reverse by 256b chunks
02:09:56.708 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:09:56.708 -> Writing 64K file in 1-byte chunks
02:09:56.996 -> ==> Time to write 64KB in 1b chunks = 266 milliseconds = KB/s
02:09:56.996 -> Reading 64K file in 1-byte chunks
02:09:57.124 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:09:57.124 -> done
02:30:46.366 -> Beginning test
02:30:46.366 -> Creating 256KB file, may take a while...
02:30:47.137 -> ==> Time to write 256KB in 256b chunks = 765 milliseconds
02:30:47.137 -> ==> Created file size = 262144
02:30:47.137 -> Reading 256KB file sequentially in 256b chunks
02:30:47.170 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:30:47.170 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:30:47.202 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:30:47.202 -> Reading 256KB file in reverse by 256b chunks
02:30:47.266 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:30:47.266 -> Writing 64K file in 1-byte chunks
02:30:47.684 -> ==> Time to write 64KB in 1b chunks = 407 milliseconds = KB/s
02:30:47.684 -> Reading 64K file in 1-byte chunks
02:30:47.813 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:30:47.813 -> done
02:41:47.629 -> Beginning test
02:41:47.669 -> Creating 256KB file, may take a while...
02:41:48.661 -> ==> Time to write 256KB in 256b chunks = 1016 milliseconds
02:41:48.661 -> ==> Created file size = 262144
02:41:48.661 -> Reading 256KB file sequentially in 256b chunks
02:41:48.693 -> ==> Time to read 256KB sequentially in 256b chunks = 28 milliseconds = MB/s
02:41:48.693 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:41:48.725 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 29 milliseconds = MB/s
02:41:48.725 -> Reading 256KB file in reverse by 256b chunks
02:41:48.790 -> ==> Time to read 256KB in reverse in 256b chunks = 68 milliseconds = MB/s
02:41:48.790 -> Writing 64K file in 1-byte chunks
02:41:49.211 -> ==> Time to write 64KB in 1b chunks = 415 milliseconds = KB/s
02:41:49.211 -> Reading 64K file in 1-byte chunks
02:41:49.341 -> ==> Time to read 64KB in 1b chunks = 130 milliseconds = KB/s
02:41:49.341 -> done
```
`boot2_w25q16jvxq_4_padded_checksum`
```
02:33:37.114 -> ==> Time to write 256KB in 256b chunks = 1144 milliseconds
02:33:37.114 -> ==> Created file size = 262144
02:33:37.114 -> Reading 256KB file sequentially in 256b chunks
02:33:37.147 -> ==> Time to read 256KB sequentially in 256b chunks = 45 milliseconds = MB/s
02:33:37.147 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:33:37.179 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 46 milliseconds = MB/s
02:33:37.179 -> Reading 256KB file in reverse by 256b chunks
02:33:37.307 -> ==> Time to read 256KB in reverse in 256b chunks = 109 milliseconds = MB/s
02:33:37.307 -> Writing 64K file in 1-byte chunks
02:33:37.759 -> ==> Time to write 64KB in 1b chunks = 451 milliseconds = KB/s
02:33:37.759 -> Reading 64K file in 1-byte chunks
02:33:37.889 -> ==> Time to read 64KB in 1b chunks = 135 milliseconds = KB/s
02:33:37.889 -> done
// hit reset
02:33:47.947 -> Beginning test
02:33:47.979 -> Creating 256KB file, may take a while...
02:33:49.077 -> ==> Time to write 256KB in 256b chunks = 1097 milliseconds
02:33:49.077 -> ==> Created file size = 262144
02:33:49.077 -> Reading 256KB file sequentially in 256b chunks
02:33:49.109 -> ==> Time to read 256KB sequentially in 256b chunks = 45 milliseconds = MB/s
02:33:49.109 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
02:33:49.173 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 46 milliseconds = MB/s
02:33:49.173 -> Reading 256KB file in reverse by 256b chunks
02:33:49.269 -> ==> Time to read 256KB in reverse in 256b chunks = 106 milliseconds = MB/s
02:33:49.269 -> Writing 64K file in 1-byte chunks
02:33:49.718 -> ==> Time to write 64KB in 1b chunks = 454 milliseconds = KB/s
02:33:49.718 -> Reading 64K file in 1-byte chunks
02:33:49.879 -> ==> Time to read 64KB in 1b chunks = 135 milliseconds = KB/s
02:33:49.879 -> done
```
`boot2_generic_03h_2_padded_checksum`
```
```
`boot2_generic_03h_4_padded_checksum`
```
```
between every switch in the boot2_ thing i did a makerboards.py run and closed and reopened the IDE.
but after i tried the `boot2_generic_03h_2_padded_checksum` i did not get any serial output -
the serial port `/dev/ttyACM0` did not show up anymore..
I think that's the old toolchain/GCC/Newlib with the new core. We moved to the full fat printf because Newlib 4.4 broke C++ w/nano-printf. So we removed the u_printf_float option (not needed) in build.py and platform.txt. But without it, the old Newlib will not link in floating point printout routines. The new GCC/Newlib will link in %f no matter what...
I think that's the old toolchain/GCC/Newlib with the new core. We moved to the full fat printf because Newlib 4.4 broke C++ w/nano-printf. So we removed the u_printf_float option (not needed) in build.py and platform.txt. But without it, the *old* Newlib will not link in floating point printout routines. The new GCC/Newlib will link in %f no matter what...
Beginning test
Creating 256KB file, may take a while...
==> Time to write 256KB in 256b chunks = 1040 milliseconds
==> Created file size = 262144
Reading 256KB file sequentially in 256b chunks
==> Time to read 256KB sequentially in 256b chunks = 23 milliseconds = 11.40 MB/s
Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 23 milliseconds = 11.40 MB/s
Reading 256KB file in reverse by 256b chunks
==> Time to read 256KB in reverse in 256b chunks = 56 milliseconds = 4.68 MB/s
Writing 64K file in 1-byte chunks
==> Time to write 64KB in 1b chunks = 407 milliseconds = 161.02 KB/s
Reading 64K file in 1-byte chunks
==> Time to read 64KB in 1b chunks = 131 milliseconds = 500.27 KB/s
done
FWIW, just ran this on the IDE w/aPico 2
````
Beginning test
Creating 256KB file, may take a while...
==> Time to write 256KB in 256b chunks = 1040 milliseconds
==> Created file size = 262144
Reading 256KB file sequentially in 256b chunks
==> Time to read 256KB sequentially in 256b chunks = 23 milliseconds = 11.40 MB/s
Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 23 milliseconds = 11.40 MB/s
Reading 256KB file in reverse by 256b chunks
==> Time to read 256KB in reverse in 256b chunks = 56 milliseconds = 4.68 MB/s
Writing 64K file in 1-byte chunks
==> Time to write 64KB in 1b chunks = 407 milliseconds = 161.02 KB/s
Reading 64K file in 1-byte chunks
==> Time to read 64KB in 1b chunks = 131 milliseconds = 500.27 KB/s
done
````
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
i hope i have done all correctly..
please let me know how i can test my changes locally -
is it save to link the repo to the arduino hardware folder?
I'm a fan of the Bigtree SKR boards and have built an MPCNC and a custom delta 3D printer using older ones, so this is really cool. I imagine the PIO can be really handy for doing precise, low (~0) CPU overhead step control!
Did you manually change the boards.txt or package file? The CI is showing a different ordering of entries vs. what the script generates. You'll want to rerun your
makeboards.pyand commit those changes to get that part passing.For the "build all boards" failure you'll need to define the commented-out SPI and I2C(Wire) defines. You can give legal defaults (see the plain Pico) or use
99like you have....unless the user callsWire.begin()orSPI.begin()the values aren't actually applied...but they do need to be defined.I just checked the schematic and it looks like this has only 2 MB (16Mbit) of flash, so the
16here should be2. OTW things like the filesystem and EEPROM will go very, very wrong...If https://www.reddit.com/r/BIGTREETECH/comments/19f58r4/skr_pico_flash_size/ is right and the flash is a W25Q16JVUXIQ then the
boot2_w25q16jvxq_4_padded_checksummight be an even better match for the Boot2 (faster too, 4 data lines instead of 2), instead of the currently setboot2_w25q080_2_padded_checksum.Could you be mixing up the Espressif DIO/QIO and the Pico. I thought only QSPI (i.e. 4) lines were supported by XIP. The _2 or _4 in boot2.s refers to the sysclk divisor, so a /2 is faster than a /4...
Correct. Taking that back. Clock div by 2 is better than div by 4.
you are right -
W25Q16-Density 16Mbin the fast read i read
16MBhttps://github.com/bigtreetech/SKR-Pico/blob/master/Hardware/BTT%20SKR%20Pico%20V1.0-SCH.pdf


so what is the best fit?
https://github.com/earlephilhower/arduino-pico/blob/master/tools/makeboards.py#L126
boot2_generic_03h_2_padded_checksumboot2_generic_03h_4_padded_checksumboot2_is25lp080_2_padded_checksumboot2_is25lp080_4_padded_checksumboot2_w25q080_2_padded_checksumboot2_w25q080_4_padded_checksumboot2_w25x10cl_2_padded_checksumboot2_w25x10cl_4_padded_checksumboot2_w25q64jv_4_padded_checksumboot2_w25q16jvxq_4_padded_checksumboot2_w25q128jvxq_4_padded_checksumWhat's the serial output result when uploading https://github.com/earlephilhower/arduino-pico/blob/master/libraries/LittleFS/examples/SpeedTest/SpeedTest.ino and using either
boot2_w25q080_2_padded_checksumboot2_w25q16jvxq_4_padded_checksumboot2_generic_03h_2_padded_checksumboot2_generic_03h_4_padded_checksumDon't forget to give it some filesystem size like Tools -> Flash size -> "2MB (Sketch 1MB, FS: 1MB)".
i will test this when i am back at home next weekend.
Before you do any testing, be sure to update the flash size to
2and rebuild the boards.txt file so you don't end up with a FS trying to go past EOF...If you've done some testing on your board with this, then this LGTM now, thx!
boot2_w25q080_2_padded_checksumboot2_w25q16jvxq_4_padded_checksumboot2_generic_03h_2_padded_checksumboot2_generic_03h_4_padded_checksumbetween every switch in the boot2_ thing i did a makerboards.py run and closed and reopened the IDE.
but after i tried the
boot2_generic_03h_2_padded_checksumi did not get any serial output -the serial port
/dev/ttyACM0did not show up anymore..Woops, did the
%fspecifier break somehow?I think that's the old toolchain/GCC/Newlib with the new core. We moved to the full fat printf because Newlib 4.4 broke C++ w/nano-printf. So we removed the u_printf_float option (not needed) in build.py and platform.txt. But without it, the old Newlib will not link in floating point printout routines. The new GCC/Newlib will link in %f no matter what...
FWIW, just ran this on the IDE w/aPico 2
thanks for merging 🎂