I use FreeBSD for development and I downloaded the firmware repository:
1. anduril2 : Code : Flashlight Firmware Repository
bzr which I used on FreeBSD 13.0 to download an older snapshot is longer supported on FreeBSD 13.1. brz is available as a port/pkg but I didn’t need it after all as despite the comment above of the download on launchpad not working, I just tried it and it did work:
2. click “Browse the code”, then “view revision”, then “download tarball”.
Then install software:
3 pkg install avr-gcc
4 pkg install avr-libc
This uses avr-libc 2.0.0 so I later modified the port to compile 2.1.0
5 for linuxisms (bash): ln -s /usr/local/bin/bash /bin/bash
6. The README in the zip says to download an Atmel pack for newer attiny1 series (needed as I wanted to change the firmware in the latest version of the SC31pro).
http://packs.download.atmel.com/
and use the environment variable as stated in the README
7. Compiling.
I had already tried to compile for example ‘crescendo’ before downloading the Atmel pack and before updating avr-libc and that worked fine.
===
The 2 pocket lamps I want to reprogram are, with version/type identifier if I counted correctly:
- SC31pro, version check says: 2022 02 08 (then not a zero but a long pause, I guess this is a change in later anduril versions to not give leading zeroes but a long pause) 614 [ From the table of models/firmwares: 614 = sofirn-sp36-t1616 attiny1616, is that correct? ]
- D4V2 219b sw45k + boost driver: 2021 11 12 0273 [ 0273 = noctigon-dm11-12v attiny1634, is that correct? ]
===
I tried hello_world and which gave errors, the inline functions are not recognized or not treated correctly by the compiler it seems:
JonnyC/STAR/STAR:
avr-gcc -Wall -g -Os -mmcu=attiny13 -o STAR STAR.c
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: /tmp//ccOwF4CX.o: in function `main’:
anduril2-r653/JonnyC/STAR/STAR/STAR.c:(.text.startup+0x8): undefined reference to `ADC_on’
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: /tmp//ccOwF4CX.o: in function `__vector_8’:
etc.
Same happens in hello_world.
Removing the ‘inline’ keyword makes them compile. Weird, what could be the issue?
Then in ToyKeeper/spaghetti-monster/anduril/
‘make’ gives:
= 40 builds succeeded, 22 failed =
Some give too much code such as:
= emisar-d4s-219c =
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: anduril.elf section `.data’ will not fit in region `text’
/usr/local/lib/gcc/avr/11.2.0/…/…/…/…/avr/bin/ld: region `text’ overflowed by 10 bytes
collect2: error: ld returned 1 exit status
then the attiny1 series give other issues:
= sofirn-sp36-t1616 =
In file included from …/fsm-standby.c:24,
from …/spaghetti-monster.h:74,
from anduril.c:92:
…/fsm-standby.c: In function ‘sleep_until_eswitch_pressed’:
…/fsm-standby.c:59:9: error: ‘MCUCR’ undeclared (first use in this function)
59 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
| ^~
MCUCR looks to be defined in many header files in the Atmel pack but not for the attiny1616, unless it uses another include too which for some reason doesn’t get included.
The avr-gcc compiler version number (avr-gcc -v) is 11.2.0
Any ideas on what to do to fix this?