Some time ago I decided to test NuttX on AVR32, then I bought a board from Aliexpres (MCUZone UC3B-CPU as known as avr32dev1 on NuttX. While searching for info about AVR32 I discovered Raman Gopalan and his work with Mizar32 board (powered by Atmel AVR32 AT32UC3A0256 chip).
Then in May 6, 2021 I sent an email to him and he said was interested to port NuttX to Mizar32 as well. But unfortunately our first attempt didn’t work to well. So more than two years later (in Nov 14, 2023) he contacted me with some news:
1) Initially, I tried GNU/Linux (Ubuntu - the latest); With the GNU
box, I changed parts of the build to a point where it compiles
without errors for AVR32. I had to transfer the built elf onto my
Windows machine to program the target with Atmel ICE. I am using
Microchip Studio. The debug symbols (references) were missing. I had to map them in
Microchip Studio. So painful. The LEDs on the MCUZone's AVR32
(at32uc3b0256) light up but I can't figure out what is happening. I
wasn't sure if I had missed any references while mapping the source
files. I can't trigger a breakpoint yet with this approach.
2) I tried WSL for Windows. No luck. The problems take me back to
many issues on WSL's github. In the context of AVR32, I won't WSL
anymore. It is rather tricky to work with WSL in the context of
AVR32. I thought this path was less efficient. Win-10 + WSL-2.
It works great with STM32 targets though. :)
3) I finally got Cygwin; It is so pleasant! I am so happy with this
choice. I had to `Make' kconfig-frontend. I sought help from
[1]. It was very helpful. All perfect! :) But, I had a few more
problems: Can you please help here?
That was a great new, then I restarted doing more tests and was able to compile NuttX to AVR32 as shown here: https://acassis.wordpress.com/2023/11/19/compiling-nuttx-to-atmel-avr32-mcuzone-uc3b-cpu-board/
Unfortunately this binary didn’t work well, then Raman Gopalan start to investigating further. He decided to compile NuttX directly in Atmel Studio and after many fixes he succeed:
Then Raman sent me the nuttx.hex that he compiled and I flashed it using the DFU programmer as explained here: https://acassis.wordpress.com/2023/11/25/using-the-dfu-programmer-with-mcuzone-uc3b-cpu-board/
This is the old version of NuttX booting on Mcuzone board with all his glory:
NuttShell (NSH)
nsh> help
NSH command forms:
[nice [-d <niceness>>]] <cmd> [> <file>|>> <file>] [&]
OR
if <cmd>
then
[sequence of <cmd>]
else
[sequence of <cmd>]
fi
Where <cmd> is one of:
[ <expression> ]
cat <path> [<path> [<path> ...]]
cd [<dir-path>|-|~|..]
cp <source-path> <dest-path>
dd if=<infile> of=<outfile> [bs=<sectsize>] [count=<sectors>] [skip=<sectors>]
echo [<string|$name> [<string|$name>...]]
exec <hex-address>
exit
free
help
kill -<signal> <pid>
losetup [-d <dev-path>] | [[-o <offset>] [-r] <dev-path> <file-path>]
ls [-lRs] <dir-path>
mb <hex-address>[=<hex-value>][ <hex-byte-count>]
mkdir <path>
mkfatfs <path>
mkfifo <path>
mkrd [-m <minor>] [-s <sector-size>] <nsectors>
mh <hex-address>[=<hex-value>][ <hex-byte-count>]
mount -t <fstype> <block-device> <dir-path>
mw <hex-address>[=<hex-value>][ <hex-byte-count>]
ps
pwd
rm <file-path>
rmdir <dir-path>
set <name> <value>
sh <script-path>
sleep <sec>
test <expression>
umount <dir-path>
unset <name>
usleep <usec>
xd <hex-address> <byte-count> nsh> ps
PID PRI SCHD TYPE NP STATE NAME
0 0 FIFO TASK READY Idle Task()
1 128 FIFO TASK RUNNING <noname>()
nsh> free
total used free largest
Mem: 28704 7536 21168 21168
nsh>
Update: Raman submitted a PR to NuttX mainline to fix the compilation for new version: https://github.com/apache/nuttx/pull/11668 ! All his effort to make it happen really impressed me and motivated me a lot to carry on!