Closed mcuee closed 1 year ago
A few things are nice to have as well.
1) Better documentation of urboot-gcc
and hexls
. For example, how to use different toolchaine with urboot-gcc
, say using another installation of avr-gcc
.
2) It is also good to document how to make urboot-gcc
and hexls
working by mentioning the perl module used.
3) How to modify the Makefile to use another gcc toolchain (still using urboot-gcc wrapper)?
4) How to modify Makefile for users who can not use urboot-gcc for some reason, just plain avr-gcc.
- It is also good to document how to make urboot-gcc and hexls working by mentioning the perl module used.
Can you help? Being a seasoned perl programmer, I do not know what hurdles there are for someone without perl experience or a perl installation. You managed. What did you have to do? @mcuee
- How to modify Makefile for users who can not use urboot-gcc for some reason, just plain avr-gcc.
Absolutely not recommended. I only mentioned to you as a highly competent engineer and only for a quick fix to get you to compile one particular bootloader. In reality there are so many pitfalls when using this route, eg, how to compute START and JMPWP, both of which urboot-gcc
does.
I see. So the recommendation is to use urboot-gcc
to work. I think I can help to mention the perl module which needs to be installed, even though I do not much about perl itself.
Windows is probably the more challenging part if I want to use MSYS2 as it lacks the necessary FILE::HomeDir
module. I do not have issues with Linux and macOS.
Windows
Only useful if there is the avr-gcc toolchain. urboot.c only compiles with that specific compiler. Best experience is with 4.8.1 and 5.4.0,
Windows
Only useful if there is the avr-gcc toolchain. urboot.c only compiles with that specific compiler. Best experience is with 4.8.1 and 5.4.0,
Yes MSYS2 has avr-gcc toolchain.
I can also try out Atmel provided avr-gcc toolchain with standalone perl installation without MSYS2 (but I tend to use MSYS2 a lot under Windows).
Here is an example of using avr-gcc from MSYS2.
MINGW64 /c/work/avr/urboot/src
$ avr-gcc -DSTART=0x7e80UL -DRJMPWP=0xcfd6 -Wl,--section-start=.text=0x7e80 -Wl,--section-start=.version=0x7ffa -D_urboot_AVAILABLE=22 -g -Wundef -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p -DF_CPU=16000000L -Wno-clobbered -DWDTO=8S -DAUTOBAUD=1 -DLED=AtmelPB5 -DDUAL=0 -DEEPROM=1 -DURPROTOCOL=1 -DFRILLS=7
-DVBL=1 -Wl,--relax -nostartfiles -nostdlib -o atmega328p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.elf urboot.c
urboot.c:1327:19: warning: call-clobbered register used for global register variable
register uint16_t zaddress asm("r30");
^~~~~~~~
urboot.c:1327:19: warning: call-clobbered register used for global register variable
$ avr-objcopy -j .text -j .data -j .version --set-section-flags .version=alloc,load -O ihex atmega328p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.elf atmega328
p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.hex
$ avr-objdump -h -S atmega328p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.elf > atmega328p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.lst
$ mv atmega328p_16mhz_auto_115200bps_ev1f7_ledPB5_wdto8s_ur.hex atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto8s.hex
PS C:\work\avr\avrdude_test\avrdude_bin> .\avrdude -c usbasp -p m328p -qq -U .\atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto8s.hex && echo OK
OK
PS C:\work\avr\avrdude_test\avrdude_bin> .\avrdude_pr1171v8 -C .\avrdude_pr1171v8.conf -c urclock
-P COM10 -b 2500000 -p m328p -U .\hex\Blink.ino.standard.hex
avrdude_pr1171v8: AVR device initialized and ready to accept instructions
avrdude_pr1171v8: device signature = 0x1e950f (probably m328p)
avrdude_pr1171v8: Note: flash memory has been specified, an erase cycle will be performed.
To disable this feature, specify the -D option.
avrdude_pr1171v8: erasing chip
avrdude_pr1171v8: reading input file .\hex\Blink.ino.standard.hex for flash
with 924 bytes in 1 section within [0, 0x39b]
using 8 pages and 100 pad bytes
avrdude_pr1171v8: preparing flash input for device bootloader
avrdude_pr1171v8: writing 924 bytes flash ...
Writing | ################################################## | 100% 1.08 s
avrdude_pr1171v8: 924 bytes of flash written
avrdude_pr1171v8: verifying flash memory against .\hex\Blink.ino.standard.hex
Reading | ################################################## | 100% 1.02 s
avrdude_pr1171v8: 924 bytes of flash verified
avrdude_pr1171v8 done. Thank you.
PS C:\work\avr\avrdude_test\avrdude_bin> .\avrdude_pr1171v8 -C .\avrdude_pr1171v8.conf
-c urclock -P COM10 -b 2500000 -p m328p -xshowall
avrdude_pr1171v8: AVR device initialized and ready to accept instructions
0000ffffffff 2022-06-10 21.21 Blink.ino.standard.hex 924 store 31426 meta 34 boot 384 u7.7 weu-jPrac vector 25 (SPM_Ready) ATmega328P
For hexls
, Strawberry Perl works out of the box.
c:\work\avr\urboot\src>perl hexls
376 384 u7.7 weu-jPrac atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl.hex (from urboot)
376 384 u7.7 weu-jPrac atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto1s.hex (build by me)
376 384 u7.7 weu-jPrac atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto8s.hex (build by me)
So it seems to me the newer toolchain is pretty much the same in terms of code generration (code size).
$ cat atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto1s.hex
:107E8000112424B614BE80E081D021FEEBC08EE028
:107E90007DD0E0ECF0E0AFE7BFEF4899FECF9096E1
:107EA000489BFDCFB4831197F1F7B2E0B083B8E1FE
:107EB000B183B6E0B28358D0C82F823571F46DD04B
:107EC000F0E0E0E0CDEF83E08DD0A895E058FF4FE3
:107ED000C150C9F787E741D0EECF8D7FF1F451D083
:107EE000D82FA0E0B1E040D08D93DA13FCCF55D06D
:107EF000C1110FC0A0E0B1E0F999FECF1FBAF2BDE9
:107F0000E1BD8D9180BDFA9AF99A3196DA13F4CFDA
:107F1000E1CFA0E0B1E04BD0DDCFC33041F431D0B0
:107F2000C82F3BD0859119D0C150E1F7D3CFC130D4
:107F300071F427D0C82F31D0F999FECFF2BDE1BD41
:107F4000F89A80B50AD03196C150B1F7C3CFC13588
:107F500011F488E01BD021D0BDCF9091C00095FFD7
:107F6000FCCF8093C60008952D9A259A8091C00079
:107F700087FFFCCF84FD14C0A8958091C6002D9882
:107F80000895F2DFE82FF0DFF82FEECF98E1A89503
:107F900090936000809360000895E6DF803219F0CE
:107FA00088E0F4DFFFCF80EAD8CFFB01DC0160E896
:107FB0006A0F9F01E0388EE7F807C8F483E012D01B
:107FC000309629F48FE38D938FEC8C93119781E099
:107FD0000D901D9007D03296A613FACFF90185E0D7
:107FE00001D081E187BFE89507B600FCFDCF1124E1
:027FF0000895F2
:067FFA000319D6CFE73F9A
:0400000300007E80FB
:00000001FF
$ diff -u atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl.hex atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto1s.hex
--- atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl.hex 2022-11-21 22:59:39.292462900 +0800
+++ atmega328p_autobaud_ee_led+b5_fr_ce_ur_vbl_wdto1s.hex 2022-11-21 22:37:12.937277200 +0800
@@ -1,17 +1,17 @@
:107E8000112424B614BE80E081D021FEEBC08EE028
:107E90007DD0E0ECF0E0AFE7BFEF4899FECF9096E1
:107EA000489BFDCFB4831197F1F7B2E0B083B8E1FE
-:107EB000B183B6E0B28358D0C82F823561F46DD05B
-:107EC000E0E0F0E0CDEF83E08DD0A895E058FF4FE3
-:107ED000C150C9F73FC08D7FF1F453D0D82FA0E037
-:107EE000B1E042D08D93DA13FCCF57D0C1110FC04F
-:107EF000A0E0B1E0F999FECF1FBAF2BDE1BD8D91CE
-:107F000080BDFA9AF99A3196DA13F4CF23C0A0E033
-:107F1000B1E04DD01FC0C33041F433D0C82F3DD0A5
-:107F200085911BD0C150E1F715C0C13071F429D043
-:107F3000C82F33D0F999FECFF2BDE1BDF89A80B5D4
-:107F40000CD03196C150B1F705C0C13511F488E0AD
-:107F50001DD023D087E701D0AECF9091C00095FF10
+:107EB000B183B6E0B28358D0C82F823571F46DD04B
+:107EC000F0E0E0E0CDEF83E08DD0A895E058FF4FE3
+:107ED000C150C9F787E741D0EECF8D7FF1F451D083
+:107EE000D82FA0E0B1E040D08D93DA13FCCF55D06D
+:107EF000C1110FC0A0E0B1E0F999FECF1FBAF2BDE9
+:107F0000E1BD8D9180BDFA9AF99A3196DA13F4CFDA
+:107F1000E1CFA0E0B1E04BD0DDCFC33041F431D0B0
+:107F2000C82F3BD0859119D0C150E1F7D3CFC130D4
+:107F300071F427D0C82F31D0F999FECFF2BDE1BD41
+:107F4000F89A80B50AD03196C150B1F7C3CFC13588
+:107F500011F488E01BD021D0BDCF9091C00095FFD7
:107F6000FCCF8093C60008952D9A259A8091C00079
:107F700087FFFCCF84FD14C0A8958091C6002D9882
:107F80000895F2DFE82FF0DFF82FEECF98E1A89503
$ avr-gcc -v
Using built-in specs.
Reading specs from c:/msys64/mingw64/bin/../lib/gcc/avr/8.5.0/device-specs/specs-avr2
COLLECT_GCC=C:\msys64\mingw64\bin\avr-gcc.exe
COLLECT_LTO_WRAPPER=c:/msys64/mingw64/bin/../libexec/gcc/avr/8.5.0/lto-wrapper.exe
Target: avr
Configured with: ../gcc-8.5.0/configure --build=x86_64-w64-mingw32 --prefix=/mingw64 --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --disable-shared --disable-threads --disable-libgomp --disable-libada --with-dwarf2 --enable-mingw-wildcard
Thread model: single
gcc version 8.5.0 (GCC)
So it seems to me the newer toolchain is pretty much the same in terms of code generration (code size).
One file is not enough to judge. Try
(make clean; make all) >& /dev/null
hexls *.hex >/tmp/a
(make clean; make all TOOLVER=8.5.0) >& /dev/null
hexls *.hex | diff /tmp/a -
make clean >& /dev/null
rm /tmp/a
This shows you where the two toolchains differ in generated code size
I can help to mention the perl module which needs to be installed
Please do
So it seems to me the newer toolchain is pretty much the same in terms of code generration (code size).
One file is not enough to judge. Try
(make clean; make all) >& /dev/null hexls *.hex >/tmp/a (make clean; make all TOOLVER=8.5.0) >& /dev/null hexls *.hex | diff /tmp/a - make clean >& /dev/null rm /tmp/a
This shows you where the two toolchains differ in generated code size
I need to use the following command to use Atmel avr-gcc toolchain in the Path.
(make clean; make all TOOLVER=system) >& /dev/null
Here is the comparison with Atmel provided Linux toolchain, gcc 7.3 version. https://www.microchip.com/en-us/tools-resources/develop/microchip-studio/gcc-compilers#
mcuee@UbuntuSwift3:~/build/avr/urboot/src$ ./hexls *.hex | diff /tmp/a -
2c2
< 446 512 u7.7 wes-hpr-c anarduino.hex
---
> 462 512 u7.7 wes-hpr-c anarduino.hex
7c7
< 504 512 u7.7 wes-vpr-- atmega1284p_v2.hex
---
> 522 768 u7.7 wes-vpr-- atmega1284p_v2.hex
12c12
< 634 768 u7.7 wes-Vpr-c atmega2560_v3.hex
---
> 660 768 u7.7 wes-Vpr-c atmega2560_v3.hex
21,22c21,22
< 446 512 u7.7 wes-hpr-c atmega328p.hex
< 468 512 u7.7 wes-hpr-c atmega328p_led9_50Hz_fp9.hex
---
> 462 512 u7.7 wes-hpr-c atmega328p.hex
> 484 512 u7.7 wes-hpr-c atmega328p_led9_50Hz_fp9.hex
26,27c26,27
< 436 512 u7.7 wes-hpr-c atmega32.hex
< 244 256 u7.7 w-u-jpr-- atmega32_min.hex
---
> 460 512 u7.7 wes-hpr-c atmega32.hex
> 254 256 u7.7 w-u-jpr-- atmega32_min.hex
30c30
< 446 512 u7.7 wes-hpr-c atmega88.hex
---
> 462 512 u7.7 wes-hpr-c atmega88.hex
33,34c33,34
< 434 512 u7.7 wes-hpr-c atmega8.hex
< 244 256 u7.7 w-u-hpr-- atmega8_min.hex
---
> 458 512 u7.7 wes-hpr-c atmega8.hex
> 254 256 u7.7 w-u-hpr-- atmega8_min.hex
39,41c39,41
< 224 224 u7.7 w-u-jpr-- attiny2313_min.hex
< 256 256 u7.7 w-u-jpr-- attiny84_min.hex
< 256 256 u7.7 w-u-jpr-- attiny85_min.hex
---
> 230 256 u7.7 w-u-jpr-- attiny2313_min.hex
> 270 320 u7.7 w-u-jpr-- attiny84_min.hex
> 270 320 u7.7 w-u-jpr-- attiny85_min.hex
43c43
< 446 512 u7.7 wes-hpr-c diecimila.hex
---
> 462 512 u7.7 wes-hpr-c diecimila.hex
46c46
< 446 512 u7.7 wes-hpr-c jeenode.hex
---
> 462 512 u7.7 wes-hpr-c jeenode.hex
50,51c50,51
< 446 512 u7.7 wes-hpr-c moteino.hex
< 446 512 u7.7 wes-hpr-c pro_16mhz.hex
---
> 462 512 u7.7 wes-hpr-c moteino.hex
> 462 512 u7.7 wes-hpr-c pro_16mhz.hex
53c53
< 442 512 u7.7 wes-hpr-c pro_20mhz.hex
---
> 458 512 u7.7 wes-hpr-c pro_20mhz.hex
55c55
< 464 512 u7.7 wes-hpr-c pro_8mhz.hex
---
> 480 512 u7.7 wes-hpr-c pro_8mhz.hex
57,58c57,58
< 446 512 u7.7 wes-hpr-c promini_led13.hex
< 446 512 u7.7 wes-hpr-c promini_led9.hex
---
> 462 512 u7.7 wes-hpr-c promini_led13.hex
> 462 512 u7.7 wes-hpr-c promini_led9.hex
60c60
< 446 512 u7.7 wes-hpr-c timeduino.hex
---
> 462 512 u7.7 wes-hpr-c timeduino.hex
62c62
< 446 512 u7.7 wes-hpr-c urclock.hex
---
> 462 512 u7.7 wes-hpr-c urclock.hex
mcuee@UbuntuSwift3:~/build/avr/urboot/src$ avr-gcc -v
Using built-in specs.
Reading specs from /home/mcuee/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/device-specs/specs-avr2
COLLECT_GCC=avr-gcc
COLLECT_LTO_WRAPPER=/home/mcuee/avr8-gnu-toolchain-linux_x86_64/bin/../libexec/gcc/avr/7.3.0/lto-wrapper
Target: avr
Configured with: /home/toolsbuild/workspace/avr8-gnu-toolchain/src/gcc/configure LDFLAGS=-L/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64-hostlibs/lib CPPFLAGS= --target=avr --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64 --libdir=/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64/lib --enable-languages=c,c++ --with-dwarf2 --enable-doc --disable-shared --disable-libada --disable-libssp --disable-nls --with-avrlibc=yes --with-mpfr=/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64-hostlibs --with-gmp=/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64-hostlibs --with-mpc=/home/toolsbuild/workspace/avr8-gnu-toolchain/avr8-gnu-toolchain-linux_x86_64-hostlibs --with-pkgversion=AVR_8_bit_GNU_Toolchain_3.7.0_1796 --with-bugurl=http://www.microchip.com
Thread model: single
gcc version 7.3.0 (AVR_8_bit_GNU_Toolchain_3.7.0_1796)
Easier to read version. So yes I agree that the old version creates same or smaller codes in general.
urboot old avr-gcc | Atmel avr-gcc 7.3.0 |
---|---|
494 512 u7.7 weudhpr-c ./urbootbin/anarduino_cs5_dur.hex | 494 512 u7.7 weudhpr-c ./urbootbin_gcc730/anarduino_cs5_dur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/anarduino.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/anarduino.hex |
496 512 u7.7 weudjpr-- ./urbootbin/atmega1280_dur.hex | 496 512 u7.7 weudjpr-- ./urbootbin_gcc730/atmega1280_dur.hex |
248 256 u7.7 w-u-jpr-- ./urbootbin/atmega1280_min.hex | 248 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega1280_min.hex |
368 512 u7.7 weu-jpr-c ./urbootbin/atmega1280_ur.hex | 368 512 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega1280_ur.hex |
248 256 u7.7 w-u-jpr-- ./urbootbin/atmega1284p_min.hex | 248 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega1284p_min.hex |
504 512 u7.7 wes-vpr-- ./urbootbin/atmega1284p_v2.hex | 522 768 u7.7 wes-vpr-- ./urbootbin_gcc730/atmega1284p_v2.hex |
252 256 u7.7 w-u-hpr-- ./urbootbin/atmega168_min.hex | 252 256 u7.7 w-u-hpr-- ./urbootbin_gcc730/atmega168_min.hex |
496 512 u7.7 weudjpr-- ./urbootbin/atmega2560_dur.hex | 496 512 u7.7 weudjpr-- ./urbootbin_gcc730/atmega2560_dur.hex |
248 256 u7.7 w-u-jpr-- ./urbootbin/atmega2560_min.hex | 248 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega2560_min.hex |
368 512 u7.7 weu-jpr-c ./urbootbin/atmega2560_ur.hex | 368 512 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega2560_ur.hex |
634 768 u7.7 wes-Vpr-c ./urbootbin/atmega2560_v3.hex | 660 768 u7.7 wes-Vpr-c ./urbootbin_gcc730/atmega2560_v3.hex |
366 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_7875khz_swio_ur.hex | 366 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_7875khz_swio_ur.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_8000khz_swio_ur.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_8000khz_swio_ur.hex |
362 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_8125khz_swio_ur.hex | 362 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_8125khz_swio_ur.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_8mhz_ur.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_8mhz_ur.hex |
510 512 u7.7 weudhprac ./urbootbin/atmega328p_adur.hex | 510 512 u7.7 weudhprac ./urbootbin_gcc730/atmega328p_adur.hex |
254 256 u7.7 w-u-jpra- ./urbootbin/atmega328p_amin.hex | 254 256 u7.7 w-u-jpra- ./urbootbin_gcc730/atmega328p_amin.hex |
362 384 u7.7 weu-jprac ./urbootbin/atmega328p_autobaud_ur.hex | 362 384 u7.7 weu-jprac ./urbootbin_gcc730/atmega328p_autobaud_ur.hex |
494 512 u7.7 weudhpr-c ./urbootbin/atmega328p_dur.hex | 494 512 u7.7 weudhpr-c ./urbootbin_gcc730/atmega328p_dur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/atmega328p.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/atmega328p.hex |
468 512 u7.7 wes-hpr-c ./urbootbin/atmega328p_led9_50Hz_fp9.hex | 484 512 u7.7 wes-hpr-c ./urbootbin_gcc730/atmega328p_led9_50Hz_fp9.hex |
252 256 u7.7 w-u-jpr-- ./urbootbin/atmega328p_min.hex | 252 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega328p_min.hex |
346 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_ur.hex | 346 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_ur.hex |
362 384 u7.7 weu-jpr-c ./urbootbin/atmega328p_ur_testing.hex | 362 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega328p_ur_testing.hex |
436 512 u7.7 wes-hpr-c ./urbootbin/atmega32.hex | 460 512 u7.7 wes-hpr-c ./urbootbin_gcc730/atmega32.hex |
244 256 u7.7 w-u-jpr-- ./urbootbin/atmega32_min.hex | 254 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega32_min.hex |
342 384 u7.7 weu-jpr-c ./urbootbin/atmega32_ur.hex | 342 384 u7.7 weu-jpr-c ./urbootbin_gcc730/atmega32_ur.hex |
250 256 u7.7 w-u-jpr-- ./urbootbin/atmega644p_min.hex | 250 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega644p_min.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/atmega88.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/atmega88.hex |
252 256 u7.7 w-u-jpr-- ./urbootbin/atmega88_min.hex | 252 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/atmega88_min.hex |
310 320 u7.7 weu-jpr-- ./urbootbin/atmega88_ur.hex | 310 320 u7.7 weu-jpr-- ./urbootbin_gcc730/atmega88_ur.hex |
434 512 u7.7 wes-hpr-c ./urbootbin/atmega8.hex | 458 512 u7.7 wes-hpr-c ./urbootbin_gcc730/atmega8.hex |
244 256 u7.7 w-u-hpr-- ./urbootbin/atmega8_min.hex | 254 256 u7.7 w-u-hpr-- ./urbootbin_gcc730/atmega8_min.hex |
314 320 u7.7 weu-jpr-- ./urbootbin/atmega8_ur.hex | 314 320 u7.7 weu-jpr-- ./urbootbin_gcc730/atmega8_ur.hex |
502 512 u7.7 weudjpr-c ./urbootbin/attiny167_dur.hex | 502 512 u7.7 weudjpr-c ./urbootbin_gcc730/attiny167_dur.hex |
252 256 u7.7 w-u-jpr-- ./urbootbin/attiny167_min.hex | 252 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/attiny167_min.hex |
360 384 u7.7 weu-jpr-c ./urbootbin/attiny167_ur.hex | 360 384 u7.7 weu-jpr-c ./urbootbin_gcc730/attiny167_ur.hex |
224 224 u7.7 w-u-jpr-- ./urbootbin/attiny2313_min.hex | 230 256 u7.7 w-u-jpr-- ./urbootbin_gcc730/attiny2313_min.hex |
256 256 u7.7 w-u-jpr-- ./urbootbin/attiny84_min.hex | 270 320 u7.7 w-u-jpr-- ./urbootbin_gcc730/attiny84_min.hex |
256 256 u7.7 w-u-jpr-- ./urbootbin/attiny85_min.hex | 270 320 u7.7 w-u-jpr-- ./urbootbin_gcc730/attiny85_min.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/attiny85_ur.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/attiny85_ur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/diecimila.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/diecimila.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/digispark.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/digispark.hex |
360 384 u7.7 weu-jpr-c ./urbootbin/digisparkpro.hex | 360 384 u7.7 weu-jpr-c ./urbootbin_gcc730/digisparkpro.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/jeenode.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/jeenode.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/lilypad_ur.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/lilypad_ur.hex |
374 384 u7.7 weu-jpr-c ./urbootbin/luminet_baud9600_ur.hex | 374 384 u7.7 weu-jpr-c ./urbootbin_gcc730/luminet_baud9600_ur.hex |
486 512 u7.7 weudhpr-c ./urbootbin/moteino_cs8_dur.hex | 486 512 u7.7 weudhpr-c ./urbootbin_gcc730/moteino_cs8_dur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/moteino.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/moteino.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/pro_16mhz.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/pro_16mhz.hex |
346 384 u7.7 weu-jpr-c ./urbootbin/pro_16mhz_ur.hex | 346 384 u7.7 weu-jpr-c ./urbootbin_gcc730/pro_16mhz_ur.hex |
442 512 u7.7 wes-hpr-c ./urbootbin/pro_20mhz.hex | 458 512 u7.7 wes-hpr-c ./urbootbin_gcc730/pro_20mhz.hex |
342 384 u7.7 weu-jpr-c ./urbootbin/pro_20mhz_ur.hex | 342 384 u7.7 weu-jpr-c ./urbootbin_gcc730/pro_20mhz_ur.hex |
464 512 u7.7 wes-hpr-c ./urbootbin/pro_8mhz.hex | 480 512 u7.7 wes-hpr-c ./urbootbin_gcc730/pro_8mhz.hex |
364 384 u7.7 weu-jpr-c ./urbootbin/pro_8mhz_ur.hex | 364 384 u7.7 weu-jpr-c ./urbootbin_gcc730/pro_8mhz_ur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/promini_led13.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/promini_led13.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/promini_led9.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/promini_led9.hex |
486 512 u7.7 weudhpr-c ./urbootbin/timeduino_cs8_dur.hex | 486 512 u7.7 weudhpr-c ./urbootbin_gcc730/timeduino_cs8_dur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/timeduino.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/timeduino.hex |
486 512 u7.7 weudhpr-c ./urbootbin/urclock_cs8_dur.hex | 486 512 u7.7 weudhpr-c ./urbootbin_gcc730/urclock_cs8_dur.hex |
446 512 u7.7 wes-hpr-c ./urbootbin/urclock.hex | 462 512 u7.7 wes-hpr-c ./urbootbin_gcc730/urclock.hex |
It is good to have some documentation for the users to build their own firmware.
The comments here are a good start.
urboot-gcc
2. Using avr-gcc directly