Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bootloader для AT91SAM7s256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Пришелец
Подскажите пожалуйста bootloader для AT91SAM7s256 help.gif
желательно не встраиваемый в приложение

планируется его переработка - загрузка приложения из внешней DATAFLASH.
Приложение на основе FREERTOS.

Спасибо всем кто откликнется. smile.gif
PrSt
Цитата(Пришелец @ Feb 9 2007, 13:17) *
Подскажите пожалуйста bootloader для AT91SAM7s256 help.gif
желательно не встраиваемый в приложение

планируется его переработка - загрузка приложения из внешней DATAFLASH.
Приложение на основе FREERTOS.

U-boot
мне тя жаль, если начнеш его переписывать, он паршиво документирован и через-чур мудренно сконструирован... уже с ним столкнулся...
хотя неофициальная сегодняшняя версия 1.2.0 получше постоена уже...
в ней даже легче чтото искать стало по сравнению с 1.1.6
Пришелец
Цитата(PrSt @ Feb 9 2007, 14:28) *
Цитата(Пришелец @ Feb 9 2007, 13:17) *
Подскажите пожалуйста bootloader для AT91SAM7s256 help.gif
желательно не встраиваемый в приложение

планируется его переработка - загрузка приложения из внешней DATAFLASH.
Приложение на основе FREERTOS.

U-boot
мне тя жаль, если начнеш его переписывать, он паршиво документирован и через-чур мудренно сконструирован... уже с ним столкнулся...
хотя неофициальная сегодняшняя версия 1.2.0 получше постоена уже...
в ней даже легче чтото искать стало по сравнению с 1.1.6



Посмотрел я и мне то же стало сразу жаль себя - разбраться год наверное в нём надо
а если ещё и адаптировать то вообще можно загнуться. maniac.gif

А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный
но рабочий unsure.gif
anpilog
Немного не втему, но по теме 8)

У ethernut.de есть свой бутлоадер http://ethernut.de/arc/bootmon-1.0.2.zip
Самому нужен бутлоадер под этот камень.
Но раньше чем через несколько месяцев до этого руки не дойдут 8(
Сергей Борщ
Цитата(Пришелец @ Feb 9 2007, 13:58) *
А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный
но рабочий unsure.gif
AVR231 - AES bootloader. Не считатая портирования UART останется только заменить spm.h и spm.s90 на прилагаемые и выкинуть запись в eeprom. Вроде больше ничего править там не нужно...
Пришелец
Цитата(Сергей Борщ @ Feb 9 2007, 15:41) *
Цитата(Пришелец @ Feb 9 2007, 13:58) *

А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный
но рабочий unsure.gif
AVR231 - AES bootloader. Не считатая портирования UART останется только заменить spm.h и spm.s90 на прилагаемые и выкинуть запись в eeprom. Вроде больше ничего править там не нужно...



Извините не очень понял - это ведь проект для AVR или не так?
PrSt
Цитата(Пришелец @ Feb 9 2007, 13:58) *
Посмотрел я и мне то же стало сразу жаль себя - разбраться год наверное в нём надо
а если ещё и адаптировать то вообще можно загнуться. maniac.gif
А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный
но рабочий unsure.gif

не так там уж и много, просто невероятно запутано все
мне хватило недели что-бы в тех леанах разобраться что мне нужно и пропатчить...
Сергей Борщ
Цитата(Пришелец @ Feb 9 2007, 14:59) *
Извините не очень понял - это ведь проект для AVR или не так?
Но ведь он на С wink.gif Он состоит условно из четырех частей - инициализация периферии, прием по UART, расшифровка и запись во флеш. Первую, вторую и третью надо переписать. К счастью, они составляют примерно 10% от всего проекта. Как пример вполне сойдет.
zltigo
Цитата(Сергей Борщ @ Feb 9 2007, 15:53) *
Первую, вторую и третью надо переписать. К счастью, они составляют примерно 10% от всего проекта.

Причем переписывать эти части желательно прямо не читая smile.gif ибо написаны они левой ногой.
Сама дешифрация/годится, но в протоколе избавляться (соответственно и шифратор гнусно заточенный править) от мелочной узкозаточенной под AVR придется.
Ну а дешифратор можно использовать не глядя - там все прямо все в лоб написано, но по размеру пожалуй оптимум.
Для LPC2000 загрузчик делал именно с использованием и по мотивам этой AVRовской штучки.
В 8K с дополнительными наворотиками в виде служебной консольки, HEX загрузчика, .... уложилось легко.
Пришелец
Цитата(Сергей Борщ @ Feb 9 2007, 16:53) *
Цитата(Пришелец @ Feb 9 2007, 14:59) *

Извините не очень понял - это ведь проект для AVR или не так?
Но ведь он на С wink.gif Он состоит условно из четырех частей - инициализация периферии, прием по UART, расшифровка и запись во флеш. Первую, вторую и третью надо переписать. К счастью, они составляют примерно 10% от всего проекта. Как пример вполне сойдет.



Мне казалось что наоборот вся специфика сосредоточена в записи во flash остальное в принципе у нас будет своё.

брали готовые лоадеры - все они грохаются где-то на REMAPE
Сергей Борщ
Цитата(Пришелец @ Feb 9 2007, 16:22) *
Мне казалось что наоборот вся специфика сосредоточена в записи во flash остальное в принципе у нас будет своё.

Да вся специфика свелась к этому:
Код
inline void ClearFlashBuffer() {
    uint8_t Size = PAGE_SIZE / sizeof(uint32_t);
    uint32_t const *r = (uint32_t *)0;
    do {
        spmWriteWord(r++, ~(uint32_t)0);
    } while (--Size);
}
//-----------------------------------
    case TYPE_PROGRAM:            // Program page buffer into flash page
        {
            uint32_t *q = pageBuffer;
            uint32_t const *r = address;
            ClearFlashBuffer();    // page erasing emulation
            do {
                __watchdog_reset();
                spmWriteWord(r++, *q++);
            } while (--size);
            spmProgramPage(address);
        }
        break;
файлы с реализацией spmXXX я выкладывал выше.
Цитата(Пришелец @ Feb 9 2007, 16:22) *
брали готовые лоадеры - все они грохаются где-то на REMAPE
Это надо отладчиком отлавливать. У меня старт примерно такой:
Код
extern "C" __arm void __program_start();
int main(void) {
    // Check that the Application Section contents is undamaged
    // by calculating the CRC of the whole memory.
    if( (!dir(MANUAL_PROG))                 // if power-on reset
         && (!signal(MANUAL_PROG))) {

        uint16_t crc = 0;
        uint8_t const *p = (uint8_t *)APP_START;
        uintptr_t n = APP_END - APP_START + 1;
        do    { crc = CRC(crc, *p++); } while (--n);
        if (!crc) {                        // Application Section OK
            dir_out(MANUAL_PROG);        // set MANUAL_PROG as output

                                        // copy application INTVEC_ID to remapped INTVEC
            uint32_t const *Src = (uint32_t *)APP_START;
            uint32_t *Dst = (uint32_t *)0x00200000; //RAMSTART
            uint_fast8_t Size = 0x40 / sizeof *Dst;
            do    { *Dst++ = *Src++; } while (--Size);

            AT91C_BASE_MC->MC_RCR = AT91C_MC_RCB;    // REMAP
            __program_start();
        }
    }

    loader();    
}
PrSt
Цитата(Пришелец @ Feb 9 2007, 16:22) *
Мне казалось что наоборот вся специфика сосредоточена в записи во flash остальное в принципе у нас будет своё.
брали готовые лоадеры - все они грохаются где-то на REMAPE

вот еще такое есть в природе - http://armboot.sourceforge.net/
Пришелец
Спасибо - буду разбираться
Пришелец
Оказалось - атмеловский бутлоадер (с сайта) работает smile.gif

только без JTAGа

При запуске его из под отладчика не хотят запускаться прерывания RSпорта и таймера (другими словами все разрешённые)

Иногда наоборот возникают самопроизвольно нерарешённые прерывания blink.gif после выполнения segmentinit()

Прерывания разрешаются и в AIC и в самой перефирии
флаг разрешения прерывания в USART установлен флаг приёма байта так же устанавливается при приёме байта а до АIC сигнал не доходит. Без JTAG всё работает.


help.gif
Пришелец
С JTAG работает
но без расставленных точек останова до вызова ф-ции самой загрузки

прерывания так же перестают вызываться если остановить работающий проект в любом месте.

blink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.