lufa icon indicating copy to clipboard operation
lufa copied to clipboard

Support for AVR DU

Open echoromeo opened this issue 1 year ago • 5 comments

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 :)

echoromeo avatar Apr 16 '24 14:04 echoromeo

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

bradanlane avatar Feb 24 '25 11:02 bradanlane

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

echoromeo avatar Feb 26 '25 16:02 echoromeo

@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 avatar Feb 27 '25 15:02 bradanlane

@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 avatar Mar 01 '25 15:03 bradanlane

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 !

bradanlane avatar Mar 01 '25 19:03 bradanlane