Don't ad-block us - support your favorite websites. We have safe, unobstrusive, robotics related ads that you actually want to see - see here for more.
0 Members and 1 Guest are viewing this topic.
: RxChar(); TxChar('>'); if (RxChar() == '<') { TxChar(PageSize); TxChar(DeviceID); TxChar(FlashSize); TxChar(BootSize); TxChar(EEpromSize); RxChar(); TxChar('!'); while (1) { WDR(); GetPageNumber(); if (RealPageAddress == 0xffff) break; if (WriteFlashPage()) TxChar('!'); else TxChar('@'); }:
i assume that this is the "handshake" while the others are used for error detection and correction
Question . . . I want in my code to restart the bootloader upon receiving a command by UART . . . so upon receiving this command I *think* I need to disable UART then jump to the bootloader start address, right?
asm("jmp 0x0000"); // Run application code
void (*app_start)(void) = 0x0000;int main(int argc, char *argv[]) {:: app_start();return;}
EasyRadio has a buffer of only 180 byte, but the bootloader sent packets of 7680 byte.So the synchronization was lost (timeout) after the first packet (7680 = 0x1E00).The buffer size can be reduced, but not below the page size (256 byte on the ATmega2560).
I just spoke with the guy who wrote that bootloader on this problem:QuoteEasyRadio has a buffer of only 180 byte, but the bootloader sent packets of 7680 byte.So the synchronization was lost (timeout) after the first packet (7680 = 0x1E00).The buffer size can be reduced, but not below the page size (256 byte on the ATmega2560). Ideas?