Skip to content

Commit

Permalink
avr32dev1: Fix compilation and nsh boot-up
Browse files Browse the repository at this point in the history
I recently imported NuttX version 6.0 (and nsh) into a Microchip
Studio project [1] on Windows to figure out what was going wrong with
the avr32dev1 build. I also briefly checked NuttX version 10.

I worked with the assumption that the avr32 (avr32dev1) specific
changes to the codebase were minimal across NuttX releases.

For the initial proof of concept I used Microchip Studio version 7.0
(with the recent Microchip's ASF updates). I use avr32-gcc (4.4.7)
hosted here [2] for building NuttX for avr32dev1 on GNU/Linux.

Even with the Microchip Studio project, I had initial debug problems
with just stepping through the code a line at a time. I had to bring
in crt0, a trampoline stub and the linker file from one of my older
projects to really build on the suspicion I had with the linker file.

Perhaps an older version of avr32-gcc did something differently. I am
not sure about this. I used avr32-objdump to see the output sections
of the generated elf file. I just had to tweak the linker script to
ensure correct linking of the sections.

With those changes, I was able to inspect the UART sections within
NuttX Microchip Studio project.

Second important change: the transmit pin: I had to reassign the pin
to see the nsh console.

These are the currently assigned UART pins:

RX: PA_24 -> Physical IC pin 59
TX: PB_02 -> Physical IC pin 24

For the avr32dev1 board, they are pins: J1 (berg pin 28) and J2 (berg
pin 10).

In addition, the PR fixes silly compilation problems with avr32dev1.

I have tested the nsh build with my avr32dev1 boards. I used Atmel ICE
to program one of them (flash at 0x80000000) and dfu-programmer to
test my other board (flash at 0x80002000). The other RS-232 parameters
are the same as they were.

References:
[1]: https://github.com/ramangopalan/nuttx_avr32dev1
[2]: https://github.com/ramangopalan/avr32-gnu-toolchain-linux_x86_64
  • Loading branch information
ramangopalan authored and acassis committed Feb 8, 2024
1 parent eaba1be commit 0967eb4
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
2 changes: 1 addition & 1 deletion arch/avr/include/avr32/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ typedef int _wchar_t;
*/

#define unsigned signed
typedef __SIZE_TYPE__ _ssize_t;
typedef int _ssize_t; /* Keep avr32-gcc 4.4.7 happy. */
#undef unsigned
typedef __SIZE_TYPE__ _size_t;
#elif defined(CONFIG_ARCH_SIZET_LONG)
Expand Down
2 changes: 1 addition & 1 deletion boards/avr/at32uc3/avr32dev1/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
/* Pin muliplexing selecion *************************************************/

#define PINMUX_USART1_RXD PINMUX_USART1_RXD_2
#define PINMUX_USART1_TXD PINMUX_USART1_TXD_1
#define PINMUX_USART1_TXD PINMUX_USART1_TXD_2

/* LED definitions **********************************************************/

Expand Down
21 changes: 12 additions & 9 deletions boards/avr/at32uc3/avr32dev1/scripts/avr32dev1.ld
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ MEMORY
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
. = ALIGN(4);
_stext = .;
*(.vectors)
*(.text .text.*)
*(.fixup)
Expand All @@ -51,27 +52,29 @@ SECTIONS
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
. = ALIGN(4);
_etext = .;
} > flash

_eronly = ABSOLUTE(.); /* See below */
_eronly = .; /* See below */

.data : {
_sdata = ABSOLUTE(.);
.data : AT(_etext) {
. = ALIGN(4);
_sdata = .;
*(.data .data.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > intram AT > flash
_edata = .;
} > intram

.bss : { /* BSS */
_sbss = ABSOLUTE(.);
_sbss = .;
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
_ebss = .;
} > intram
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
Expand Down
2 changes: 2 additions & 0 deletions libs/libc/assert/Make.defs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ ifeq ($(CONFIG_STACK_CANARIES),y)
CSRCS += lib_stackchk.c
endif

ifeq ($(CONFIG_LTO_NONE),n)
assert/lib_assert.c_CFLAGS += -fno-lto
assert/lib_stackchk.c_CFLAGS += -fno-lto
endif

# Add the assert directory to the build

Expand Down

0 comments on commit 0967eb4

Please sign in to comment.