|
|
  |
bootloader at91sam7s ищу, Существуют ли православные рабочие стартапы и линкерскрипты? |
|
|
|
Feb 10 2010, 20:36
|
Участник

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

|
Есть устройство на at91sam7s256 с SD картой и есть желание сделать обновление прошивки с SD карты. Перепробовал кучу найденных на просторах сети вариаций линкер скриптов и стартапов, переделывал их в соответствии с различными рекомендациями - приложение запустить не удалось. Используемый компилятор - gcc. Уже тошно смотреть на эти стартапы, хотелось бы побыстрее закончить проект, да и сроки давно вышли (хотя проект больше для себя). За столько лет существования МК наверняка же кто-то написал правильные и работающие скрипты для бутлоадера!? В общем, рассмотрю любые условия получения исходников.
|
|
|
|
|
Feb 11 2010, 04:28
|
Участник

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

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

Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 11 2010, 08:42
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sonycman @ Feb 11 2010, 11:37)  Думаю загрузчик расположить в конце флешки контроллера, переходить на его адрес по вызову из прошивки (адрес ведь будет статический), а по окончании прошивки просто выполнять сброс контроллера. Таким образом новая прошивка стартанёт безо всяких проблем. А если вдруг не стартанет? Останетесь без загрузчика и без прошивки. Цитата(sonycman @ Feb 11 2010, 11:37)  Только вот не знаю, можно ли в STM32 вектора прерываний переместить в оперативку? На Cortex-M3 можно где угодно.
|
|
|
|
|
Feb 11 2010, 08:48
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 11 2010, 15:53
|
Участник

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

|
На словах все конечно красиво, но граблей там уж слишком много. Может, кто-нибудь, кто прошел все грабли, возьмется написать за вознаграждение?
|
|
|
|
|
Feb 12 2010, 11:17
|
Участник

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

|
Цитата(sloth @ Feb 11 2010, 18:53)  На словах все конечно красиво, но граблей там уж слишком много. Может, кто-нибудь, кто прошел все грабли, возьмется написать за вознаграждение? Посмотрите на http://www.tnkernel.com/usb_fw_upgrader.html там Юрий очень хороший пример для выложил.
|
|
|
|
|
Feb 24 2010, 21:34
|
Участник

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

|
Цитата(prgjz @ Feb 12 2010, 16:17)  Посмотрите на http://www.tnkernel.com/usb_fw_upgrader.html там Юрий очень хороший пример для выложил. Спасибо огромное что еще раз напомнили про этот пример! Пример действительно очень хороший и доступный для понимания, а также реально работающий, и идеологически верный на мой взгляд. Бутлоадер, сделанный с небольшими доработками данного примера работает. Ура!  Все большое спасибо за участие.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|