Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for AVR DU #187

Open
wants to merge 30 commits into
base: master
Choose a base branch
from
Open

Conversation

echoromeo
Copy link

Hi, I have added support for the new AVR DU Family, ported from the current XMEGA support, and added the AVR64DU32 Curiosity Nano board. I think the only thing I have not touched (yet) is bootloader.
I added it as ARCH_AVRDX in case more Dx USB devices pop up.

As I could not see any obvious DFP support in the build system I ended up including paths to the include file and device-specs file to the build flags in the makefile(s). Using the default Microchip Studio path in windows it would look like this:

CC_FLAGS += -B"C:/PROGRA~2/Atmel/Studio/7.0/packs/atmel/AVR-Dx_DFP/2.4.286/gcc/dev/avr64du32" -I"C:/PROGRA~2/Atmel/Studio/7.0/packs/atmel/AVR-Dx_DFP/2.4.286/include"
LD_FLAGS += -B"C:/PROGRA~2/Atmel/Studio/7.0/packs/atmel/AVR-Dx_DFP/2.4.286/gcc/dev/avr64du32"

Please have a look and let me know if this is something you would want to merge :)

@bradanlane
Copy link

We are interested in testing this PR against the Microchip "generated" stack (which is pretty heavy).

@echoromeo
Copy link
Author

@bradanlane please go ahead and test it out and let me know if you have any questions or bugs/problems

@bradanlane
Copy link

bradanlane commented Feb 27, 2025

@echoromeo ...

@bradanlane please go ahead and test it out and let me know if you have any questions or bugs/problems

I am sure the build process is not overly complex for anyone who has build it in the past. Unfortunately we spend about an hour trying to get through all of the generated errors (likely all due to configuration of the build environment).

Is there an example of setting up the USBtoSerial project for the AVR DU Curiosity Nano? (we have one of these for testing) ... specifically what changes are made to various .mk files to get the MCU, ARCH, BOARD, etc correct?

Here are some example issues which may help you understand where our configuration is incorrect:

  • in the USBtoSerial Makefile, we set the above values to avr64du32, AVRDX, and AVR64DU32_CNANO respectively
  • the make renders a large number of errors including:
    • undeclared such as TXEN1, UCSR1B, and UDR1
    • argument mismatch for Serial_SendByte
    • conflicting type for CALLBACK_USB_GetDescriptor

Addendum: I am using the features/avr-dx branch

@bradanlane
Copy link

bradanlane commented Mar 1, 2025

@echoromeo ... much progress

I switched from attempting Projects/USBtoSerial to using Demos/Device/ClassDriver/VirtualSerial.

After adding the required CC_FLAGS+= and LD_FLAGS+= (described at the start of this PR) I received only one error.
The error RAMPZ used in ClockManagement.c. There is no definition of this value ... at least not when using avr_gcc version 7.3.0 and the AVR-Dx_DFP version 2.7.321

Solution: eliminating AVRDXCLK_CCP_Write and using CPU_CCP = CCP_IOREG_gc; // unlock protected register solves the issue and the Demo code works.

@bradanlane
Copy link

bradanlane commented Mar 1, 2025

I have incorporated the code from this PR into a test project and it is working well at both 12mHz and 24mHz.

Thank you @echoromeo !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants