[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-dev] Additional bootloader support in boot.h?
From: |
Erik Walthinsen |
Subject: |
[avr-libc-dev] Additional bootloader support in boot.h? |
Date: |
Fri, 23 Dec 2005 13:11:21 -0800 |
User-agent: |
Debian Thunderbird 1.0.7 (X11/20051017) |
I've been bootstrapping a bootloader (doh) and have spent a lot of time
trying to find any decent explanations of how to construct one, to
little effect. I may have to write a basic HOWTO. Anyway, I did find
some examples to work from, but still had to fight with things a bit.
Specifically, the last little detail of a bootloader: jumping to the
application, didn't work as expected from the butterfly bootloader
(bf_boot), which has it as follows:
void (*funcptr)( void ) = 0x0000; // Set up function pointer
. . .
funcptr(); // Jump to application sector
I ended up with less than useful results, afaict it never got where it
was supposed to go.
Another project (LUB) has tinyloader, written in asm. It's got the
equivalent of:
asm volatile ("clr r30\n clr r31\n ijmp\n"::);
This works just fine, and afaict is what's really supposed to happen. I
don't think a function call is really what should be done, though I
would expect it should work. The fact is, though, that with the latest
gcc-3.4.4 and AVR patches (so I can start on my ATtiny45 shortly), it
doesn't work.
This little operation seems to me like a prime candidate for inclusion
into boot.h, alongside actual SPM/LPM code. If one can't get out of the
bootloader, there's really no point. It's also (AFAICT) always going to
work the same way, so it seems obvious to me that it should be included
in avr-libc.
I'd submit a patch, but I don't know what it really should be called,
and all it consists of is a function-ish #define with the above assembly
code in it. I can file a bug at least, for tracking purposes.
TTYL,
Omega
aka Erik Walthinsen
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-dev] Additional bootloader support in boot.h?,
Erik Walthinsen <=