SpenceKonde / DxCore

Arduino core for AVR DA, DB, DD, EA and future DU-series parts - Microchip's latest and greatest AVRs. Library maintainers: Porting help and adviccee is available.
Other
189 stars 50 forks source link

Update to Avrdude 8.0 #330

Open MCUdude opened 2 years ago

MCUdude commented 2 years ago

Avrdude ~7.0~ ~7.1~ ~7.2~ ~7.3~ 8.0 is a huge improvement over 6.3 and brings lots of new features and bug fixes. Arduino now provides "flavored builds" with statically linked libraries, so boards like Curiosity Nano will work on any OS. You can pull the binaries straight from Github.

Here are a few good ones:

https://github.com/arduino/avrdude-packing

MCUdude commented 2 years ago

For reference, here's my boards manager file:

https://github.com/MCUdude/MegaCoreX/blob/1d4bebc755392f0e7fb2b5749adb5645c728ab92/package_MCUdude_MegaCoreX_index.json#L649-L698

mikrocoder commented 2 years ago

Hello,

where should Windows users get the 7.0 binary from? :wink: I know the new version only from the current avr-gcc from ZakKemble. From its package I have taken me the files. https://blog.zakkemble.net/avr-gcc-builds/

SpenceKonde commented 2 years ago

Avrdude 7 will not be in 1.5.0, but will be added in a 1.5.x version - the time and effort of testing a new version of an upload tool that I am deemphasizing because of its exemplification of the kitchenskinkism antipattern, and which I'd love to phase out entirely is impossible to justify until a working release with full DD support and the latest hardware serial enhancement is available and peoele aren't screaming that it's broken. ATTinyCore 2.0.0 however will most certainly want this, as it does not use any other upload tool.

MCUdude commented 2 years ago

but here again half of the information is missing. Where should Windows users get the 7.0 binary from? 😉

Eh, no? I provided a link to the repository where all major OSes' binaries are hosted.

But here you go: https://github.com/arduino/avrdude-packing/releases/tag/7.0-arduino.3

mikrocoder commented 2 years ago

In the first link it does not go on for me. The further path /release/tag/... I do not see. Your last link works. Thank you.

mcuee commented 2 years ago

For those who are more adventurous, you can try the Windows binary mentioned in this thread. I have tested it with DxCore, megaTinyCore and MegaCoreX. It is based on avrdude git main (with many fixes over 7.0 release).

I have also built Linux and macOS binaries here (32 bitLinux x86, 64bit macOS x86_64).

mcuee commented 2 years ago

You can also try the binaries here. I need to use the 64bit Linux binary under 64bit Linux (no 32bit compatibility layer installed). https://github.com/mcuee/avrdude-packing/actions/runs/3354027563

More discussions here.

mcuee commented 2 years ago

I have published avrdude git main snapshot binaries (Linux, macOS and Windows) here for those who are interested to try. git main will lead to 7.1 release. https://github.com/mcuee/avrdude-packing/releases

pcfreak1201 commented 1 year ago

Now avrdude 7.1 is released (https://github.com/avrdudes/avrdude/releases/tag/v7.1) and on linux (Mint/Ubuntu 64bit) it compiles flawlessly.

mcuee commented 1 year ago

For DxCore, it is probably better to wait a bit for the release from https://github.com/arduino/avrdude-packing project.

For those who want to try the 7.1 release binaries for Linux and macOS, you can check out my repo here (only for testing purpose). https://github.com/mcuee/avrdude/releases/tag/v7.1

mcuee commented 1 year ago

For DxCore, it is probably better to wait a bit for the release from https://github.com/arduino/avrdude-packing project.

@MCUdude and @SpenceKonde

Here it is. https://github.com/arduino/avrdude-packing/releases/tag/7.1-arduino.1

mcuee commented 1 year ago

@SpenceKonde

Some changes may be required before you switched to avrdude 7.1 release.

Reference: https://github.com/MCUdude/MegaCoreX/commit/09f3a6e04f6ab9b83063260bb43053c122c7e512 https://github.com/MCUdude/MegaCoreX/commit/be87c765ca7d66d3d7e927834b50860937ef0602

SpenceKonde commented 1 year ago

Note - my current plan here is to use AVRdude 7.x for non-SerialUPDI uploads only, leaving me with control over the serialUPDI portion. We need to keep the python environment anyway so that several future planned tools i'm working on can be supported, namely a cleanup pass on the exported assembly listings to get rid of the avr-objdump's propensity to express locatioms in the data space as offsets from landmarks in the program space and vice-versa (which is at best useless), and to reformat the map to make it human readable (truncating long function names is the big one here - because the long synthetic function names that end up in the memory map deform the column structure and make the whole mess unreadable to humans, and correct the inconsistent column break marks, which made it unreadable to most generic parsers, making it hard to import into any civilized tool to further analyze.

mikrocoder commented 1 year ago

@mcuee

Here it is. https://github.com/arduino/avrdude-packing/releases/tag/7.1-arduino.1

Hi,

What is different about the "Arduino package" again compared to the Official Release? https://github.com/avrdudes/avrdude/releases

MCUdude commented 1 year ago

What is different about the "Arduino package" again compared to the Official Release? https://github.com/avrdudes/avrdude/releases

"Official" binaries are built with dynamically linked libraries. This means that the computer needs to have a set of libraries installed for Avrdude to work. The Arduino release uses static linkage, libraries are bundled and built into the Avrdude binary. Great if you just want Avrdude to work on a computer, and you don't really care about libraries, like for instance when a user installed a 3rd party Arduino core that uses Avrdude.

mikrocoder commented 1 year ago

Thanks.

mcuee commented 1 year ago

@SpenceKonde

Binary release from Arduino avrdude-packing project. https://github.com/arduino/avrdude-packing/releases/tag/7.1-arduino.1

As for platform defintions, minor changes will be required, for example, Curiosity Nano programmer is now called pkobn_updi. Ref: https://github.com/MCUdude/MegaCoreX/blob/master/megaavr/programmers.txt

Reference: https://github.com/MCUdude/MegaCoreX/commit/be87c765ca7d66d3d7e927834b50860937ef0602#diff-4f98f14cf12c5bc1ea8d0ccb8b42f777537bcb1ccbb7b16efeed9a083efc5cf3

@MCUdude may be able to give more details if you run into questions.

SpenceKonde commented 1 year ago

As soon as a 7.2 release is available we will upgrade to v 7.2.

mcuee commented 1 year ago

avrdude 7.2 has been released. https://github.com/avrdudes/avrdude/releases/tag/v7.2

For Windows you can use the official binary above.

For Linux and macOS, you may want to test using my build. https://github.com/mcuee/avrdude/releases/tag/v7.2

Or you may want to wait for the Arduino-packing project. https://github.com/arduino/avrdude-packing

mcuee commented 1 year ago

Arduino avrdude-packing project has released their version of Arduino 7.2, which should be suitable for the usage here. https://github.com/arduino/avrdude-packing/releases/tag/7.2-arduino.1

mcuee commented 9 months ago

avrdude 7.3 has been released. https://github.com/avrdudes/avrdude/releases/tag/v7.3

MCUdude commented 1 month ago

Avrdude v8.0 has been released, and Arduino has been kind enough to provide statically built binaries for us, which makes it a breeze to use with the boards manager.