реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> bootloader at91sam7s ищу, Существуют ли православные рабочие стартапы и линкерскрипты?
sloth
сообщение Feb 10 2010, 20:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 27-07-05
Из: Сочи
Пользователь №: 7 130



Есть устройство на at91sam7s256 с SD картой и есть желание сделать обновление прошивки с SD карты.
Перепробовал кучу найденных на просторах сети вариаций линкер скриптов и стартапов, переделывал их в соответствии с различными рекомендациями - приложение запустить не удалось. Используемый компилятор - gcc. Уже тошно смотреть на эти стартапы, хотелось бы побыстрее закончить проект, да и сроки давно вышли (хотя проект больше для себя).
За столько лет существования МК наверняка же кто-то написал правильные и работающие скрипты для бутлоадера!? В общем, рассмотрю любые условия получения исходников.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 10 2010, 21:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Все это хорошо, вот только какое отношение "скрипты линкера и стартапы" имеют к поставленной задаче? Или вы хотите загнать bootloader с поддержкой SD и файловой системы непосредственно в стартап?
Go to the top of the page
 
+Quote Post
sloth
сообщение Feb 11 2010, 04:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 27-07-05
Из: Сочи
Пользователь №: 7 130



Цитата(aaarrr @ Feb 11 2010, 02:22) *
Все это хорошо, вот только какое отношение "скрипты линкера и стартапы" имеют к поставленной задаче? Или вы хотите загнать bootloader с поддержкой SD и файловой системы непосредственно в стартап?

Как какое? Написать программу, которая читает с флешки и записывает во флеш для меня не проблема, а вот правильно прыгнуть с бутлоадера на программу у меня не получается, а это делается в стартапе.
Go to the top of the page
 
+Quote Post
alexsl
сообщение Feb 11 2010, 05:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165



Добрый день. У меня аналогичная проблема. И вроде бы на первый взгляд все правильно. После лнковке в .map файле видно что функция на которую прыгаю находится по адресу во флэше - 0x00100160:

.text 0x00100160 0x2a8 main.o
0x00100160 main

Однако, при выполнении команды LDR pc, =main программа переходит по адресу 0x160. Не пойму почему.

Использую gcc 4.4.2

Сообщение отредактировал alexsl - Feb 11 2010, 05:45
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 11 2010, 08:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sloth @ Feb 11 2010, 07:28) *
...правильно прыгнуть с бутлоадера на программу у меня не получается, а это делается в стартапе.

Вовсе не обязательно это делать именно в стартапе. Перед прыжком нужно или вернуть процессор и периферию в безопасное состояние, или же учесть в основной программе, что процессор уже частично инициализирован. Особо обратить внимание на контроллер прерываний, ремап и перезапуск PLL - это основной набор граблей.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 11 2010, 08:37
Сообщение #6


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Тоже планирую сделать обновление прошивки с SD карты, только на STM32.
Думаю загрузчик расположить в конце флешки контроллера, переходить на его адрес по вызову из прошивки (адрес ведь будет статический), а по окончании прошивки просто выполнять сброс контроллера.
Таким образом новая прошивка стартанёт безо всяких проблем.

Только вот не знаю, можно ли в STM32 вектора прерываний переместить в оперативку?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 11 2010, 08:42
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Feb 11 2010, 11:37) *
Думаю загрузчик расположить в конце флешки контроллера, переходить на его адрес по вызову из прошивки (адрес ведь будет статический), а по окончании прошивки просто выполнять сброс контроллера.
Таким образом новая прошивка стартанёт безо всяких проблем.

А если вдруг не стартанет? Останетесь без загрузчика и без прошивки.

Цитата(sonycman @ Feb 11 2010, 11:37) *
Только вот не знаю, можно ли в STM32 вектора прерываний переместить в оперативку?

На Cortex-M3 можно где угодно.
Go to the top of the page
 
+Quote Post
prgjz
сообщение Feb 11 2010, 08:48
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Для EWARM кусочек моего кода бутлодера, важно чтоб функция sysjump() __arm была.

__arm void sysjump(unsigned int addr)
{
void ( __arm *kernelstart)(void);
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF; // disable all irq
kernelstart = (void (*)(void))addr; // load start address of app.
(*kernelstart)(); // jump to reset vector of app.
}


#define START_APP 0x4000 // reset vektor address of app.


sysjump(START_APP); //-- Never return
Go to the top of the page
 
+Quote Post
sloth
сообщение Feb 11 2010, 15:53
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 27-07-05
Из: Сочи
Пользователь №: 7 130



На словах все конечно красиво, но граблей там уж слишком много. Может, кто-нибудь, кто прошел все грабли, возьмется написать за вознаграждение?
Go to the top of the page
 
+Quote Post
prgjz
сообщение Feb 12 2010, 11:17
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Цитата(sloth @ Feb 11 2010, 18:53) *
На словах все конечно красиво, но граблей там уж слишком много. Может, кто-нибудь, кто прошел все грабли, возьмется написать за вознаграждение?


Посмотрите на http://www.tnkernel.com/usb_fw_upgrader.html там Юрий очень хороший пример для выложил.
Go to the top of the page
 
+Quote Post
sloth
сообщение Feb 24 2010, 21:34
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 27-07-05
Из: Сочи
Пользователь №: 7 130



Цитата(prgjz @ Feb 12 2010, 16:17) *
Посмотрите на http://www.tnkernel.com/usb_fw_upgrader.html там Юрий очень хороший пример для выложил.

Спасибо огромное что еще раз напомнили про этот пример! Пример действительно очень хороший и доступный для понимания, а также реально работающий, и идеологически верный на мой взгляд.
Бутлоадер, сделанный с небольшими доработками данного примера работает. Ура! smile.gif Все большое спасибо за участие.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01421 секунд с 7
ELECTRONIX ©2004-2016