|
Самопрограммирование ARM, Прошивка FLASH |
|
|
|
 |
Ответов
|
Apr 15 2005, 09:51
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Popkov @ Apr 15 2005, 11:44) А можно по конкретнее ибо вот есть конкретная задача: при старте нужно чтобы закпускался загрузчик(с поддержкой некоторых прерываний), потом он по команде пришедшей по CAN (или другому итерфейсу) передает управление приложению, или перепрошивает это приложение. Мне тут видится следующие вопросы: 1. Как происходит разделение векторов прерываний между загрузчиком и приложением У LPC есть маленькая таблица векторов прерываний, которая может располагаться либо в начале Flash-памяти, либо в начале SRAM. Зависит ее расположение от настроек внутренних регистров процессора. Таким образом, можно разместить эту таблицу памяти и на ходу менять ее содержимое - какие-то вектора (например, FIQ) можно обрабатывать в бутлоадере, а другие (IRQ) в приложении. Цитата 2. Для прошивки приложения мне нужно выполнятся в какой то специальной области памяти? Скажем в SRAM? Т.е. я должен сначало переписать функцию прошивки в SRAM, а потом передать ей управление? Но в этом случае как быть с векторами прерываний, их то я не могу переписать куда то. Нет, для прошивки можно просто исполняться из Flash'a. Хотя, если хочется, то можно исполнять и из SRAM, но стартовать все-равно придется из Flash'a. А вектора прерываний, как я уже сказал, можно переписать.  Цитата 3. Как происходит передача управления на загрузчик (при старте), на приложение при необходимости, и из приложения в загрузчик. При старте LPC родной загрузчик проверяет содержимое таблицы векторов исключений(прерываний) и если находит там по смещению 0x14 двоичное дополнение суммы всех остальных векторов, то передает управление по адресу 0x0 (вектор ресета). Далее стартует программа во Flash'e, которая может загрузить другое приложение и передать управление в ту область, куда она его загрузила. Цитата Люди дайте тогда хоть пример какой нить, или подетальней распишите как это все происходит. С уважением, Михаил Рекомендую скачать описание по интересующему процессору и почитать его. Там довольно популярно все написано.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Mar 21 2008, 19:17
|

Частый гость
 
Группа: Новичок
Сообщений: 111
Регистрация: 10-02-07
Из: St.Petersburg, Russia
Пользователь №: 25 241

|
Цитата(makc @ Apr 15 2005, 12:51)  У LPC есть маленькая таблица векторов прерываний, которая может располагаться либо в начале Flash-памяти, либо в начале SRAM. Не у LPC, а у арма. Я кажется писал уже, лучше поместить в FLASH разумный обработчик IRQ и FIQ, на UNDEF и ABORT реализовать что-то вроде вываливания списка регистров и содержимого стека в последовательный порт с перезапуском. От программы остаётся только програмирование контроллера прерываний (речь о AT91). Почему так: РАЗМЕЩЕНИЕ ВЕКТОРОВ В RAM ДОСТАТОЧНО ДУРНАЯ ИДЕЯ. Ибо затереть что-то в той области куда указывает NULL в силу разных программных глюков -- раз плюнуть. И дальше неописуемый и трудно диагностируемый глюкодром. А так оно в аборт вывалится, жалобно пропищит, поморгает диодиком и перезапустится, если как я говорю делать.
--------------------
[ZX]
|
|
|
|
|
Mar 24 2008, 08:12
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Kirill Frolov @ Mar 21 2008, 22:17)  ..писал уже, лучше поместить в FLASH разумный обработчик IRQ и FIQ, А я там-же "оценил" такой (c ненужной промежуточной оберткой) подход к делу. Цитата ...на UNDEF и ABORT реализовать что-то вроде вываливания списка регистров и содержимого стека в последовательный порт с перезапуском. В подавляющем большинстве случаев это хороший вариант для bootloader. Цитата Почему так: РАЗМЕЩЕНИЕ ВЕКТОРОВ В RAM ДОСТАТОЧНО ДУРНАЯ ИДЕЯ. Не лучшая, это точно. Цитата Ибо затереть что-то в той области куда указывает NULL в силу разных программных глюков -- раз плюнуть. Затереть вероятно и RAM тратится впустую, только вот на РЕМАПИРОВАНУЮ таблицу NULL не указывает.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 28 2009, 10:20
|
Частый гость
 
Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870

|
Цитата(zltigo @ Mar 24 2008, 11:12)  Не лучшая, это точно.
Затереть вероятно и RAM тратится впустую, только вот на РЕМАПИРОВАНУЮ таблицу NULL не указывает. RAM тратится??? :-))) При объемах 32кБ, например, что значат 64 байта??? Не надо грешить против истины :-))) Размещение в RAM иногда наилучшее решение, особенно когда ресурсов немного. Приведу пример. Записываешь маленький загрузчик в начале флэш , который загружает с какого-то внешнего источника (датафлэш или UART, например) программу загрузчик под любые нужды(USB, SD Card и т.п.) в RAM. Старт загрузчика... При этом загрузчик в начале флэш получается очень маленький (можно вписаться в 4кБ). При работе загрузчика по барабану как RAM тратится. Ничего не затрешь. Или такой пример. У меня стоит датафлэш со всякого рода картинками и загрузка этих картинок так и сделана -- с SD карты загрузчик записывается в RAM и записывает картинки на датафлэш. Экономия флэш около 6 кБ.
|
|
|
|
Сообщений в этой теме
Popkov Самопрограммирование ARM Apr 14 2005, 11:41 makc Цитата(Popkov @ Apr 14 2005, 14:41)Народ, вот... Apr 14 2005, 14:10 IgorKossak Возможность подключить собственный бутлоадер есть ... Apr 14 2005, 14:12 SasaVitebsk Цитата(IgorKossak @ Apr 14 2005, 18:12) В... Dec 4 2009, 19:50     zltigo Цитата(Step_ARM @ Nov 28 2009, 13:20) RAM... Nov 28 2009, 12:27      Step_ARM Цитата(zltigo @ Nov 28 2009, 15:27) 32K R... Nov 30 2009, 04:07 Vitaliy_ARM Цитата(Popkov @ Apr 14 2005, 14:41) Народ... Mar 21 2008, 12:25 Shkn Можно посмотреть на сайте www tnkernel com. на его... Mar 24 2008, 07:06 _dem Загрузчик размещаете в конце памяти, при запуске п... Mar 24 2008, 14:35 zltigo Цитата(_dem @ Mar 24 2008, 17:35) Загрузч... Mar 24 2008, 14:45  meister Цитата(zltigo @ Mar 24 2008, 17:45) И при... Mar 24 2008, 15:04   zltigo Цитата(meister @ Mar 24 2008, 18:04) И в ... Mar 24 2008, 15:10    meister Цитата(zltigo @ Mar 24 2008, 18:10) Прило... Mar 24 2008, 15:11   zltigo Цитата(meister @ Mar 24 2008, 18:04) Если... Mar 24 2008, 15:15    meister Цитата(zltigo @ Mar 24 2008, 18:15) Повто... Mar 24 2008, 15:30     zltigo Цитата(meister @ Mar 24 2008, 18:30) А пе... Mar 24 2008, 15:39   Александр_С Цитата(meister @ Mar 24 2008, 18:04) И в ... Mar 25 2008, 01:43    zltigo Цитата(Александр_С @ Mar 25 2008, 04:43) ... Mar 25 2008, 05:46 _dem Боже, какие ужасы, господа ....
А что мешает нача... Mar 24 2008, 15:32 meister Цитата(_dem @ Mar 24 2008, 18:32) Боже, к... Mar 24 2008, 15:37  zltigo Цитата(meister @ Mar 24 2008, 18:37) А я ... Mar 24 2008, 15:47 zltigo Цитата(_dem @ Mar 24 2008, 18:32) для отл... Mar 24 2008, 15:42  _dem Цитата(zltigo @ Mar 24 2008, 19:42) Для о... Mar 24 2008, 15:49   zltigo Цитата(_dem @ Mar 24 2008, 18:49) пишет 0... Mar 24 2008, 16:06 _dem Цитата(meister @ Mar 24 2008, 19:37) А я ... Mar 24 2008, 15:39 meister Цитата(_dem @ Mar 24 2008, 18:39) Проясни... Mar 24 2008, 15:43 _dem хм. А чем вероятность незаписи 0-го сектора отлича... Mar 24 2008, 18:13 zltigo Цитата(_dem @ Mar 24 2008, 21:13) хм. А ч... Mar 24 2008, 18:43 _dem Ладно, за сим закроем тему по причине, видимо, нем... Mar 24 2008, 19:38 zltigo Цитата(_dem @ Mar 24 2008, 22:38) Перенос... Mar 24 2008, 19:51  argentum Помогите новичку
Пишу bootloader для LPC 2478 под ... Nov 27 2009, 12:17 goodwin Дык самое простое - взять, например, "lpc24x... Nov 27 2009, 13:58 argentum Цитата(goodwin @ Nov 27 2009, 16:58) Дык ... Nov 28 2009, 21:00  zltigo Цитата(argentum @ Nov 29 2009, 00:00) г) ... Nov 28 2009, 23:32   argentum Цитата(zltigo @ Nov 29 2009, 02:32) Ну не... Nov 29 2009, 20:33    GetSmart Цитата(argentum @ Nov 30 2009, 02:33) В з... Nov 30 2009, 06:48     argentum Большое спасибо, GetSmart!!!
Всё сдела... Dec 1 2009, 07:11 skripach ЦитатаНеудивительно, что ничего не работает. В про... Nov 30 2009, 08:14 GetSmart Цитата(skripach @ Nov 30 2009, 14:14) Неп... Nov 30 2009, 08:20 skripach ЦитатаСамому написать компилятор
Угу первое что пр... Nov 30 2009, 08:26 GetSmart Цитата(skripach @ Nov 30 2009, 14:26) Угу... Nov 30 2009, 08:39 skripach ЦитатаА потребность-то в чём? Нужа такая прошивка,... Nov 30 2009, 08:57 GetSmart Цитата(skripach @ Nov 30 2009, 14:57) Ну ... Nov 30 2009, 09:17 skripach ЦитатаХочется, чтобы исполняемая прога начиналась ... Dec 1 2009, 07:48 argentum Хм... Да... Это точно... Согласен.
Но тогда... Dec 1 2009, 13:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|