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

 
 
> Несколько программ в одной прошивке, Как проще сделать?
Непомнящий Евген...
сообщение Aug 3 2007, 04:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



ИАР 4.30 + Atmega128

У меня есть устройство которое выполняет несколько несвязанных между собой функций. Хотелось бы разместить эту функциональность в разных программах. При включении устройства запускается основная программа, пользователь может войти в меню и выбрать там другую программу. При этом устройство перезагрузится и она начнет выполняться.

Как это можно реализовать?

Я представляю примерно так: при загрузке устройства запускается программа-загрузчик, которая в зависимости от какого-то байта в епроме дальше передает управление по разным адресам. Т.е. я могу сделать в иаре несколько проектов с разными стартовыми адресами, а потом руками "склеить" hex-файлы?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Redaer
сообщение Aug 15 2007, 14:38
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 12-07-06
Пользователь №: 18 762



Здравствуйте



Дабы не засорять конференцию похожими темами, задам свой вопрос здесь. Пытаюсь с помощью IAR 4.40 запрогать AT91SAM7S256. Так вот вопрос состоит в следующем: Можно ли с помощью иара залить во флешь процессора 2 разные программы переопределив в файлах at91SAM7S256_64KRAM.xlc и at91SAM7S256_NoRemap.xlc параметр -DROMSTART



В частности первую программку хочется залить по адресу 0x0 вторую же по адресу 0x2000

Я так понимаю, при запуске АРМ начинает работать с нулевого адреса. Так?

Собсно, хочется из первой программки(бутлоадер своеобразные) прыгнуть на вторую(основную)... Можно ли это сделать посредством ассемблеровской вставки asm("B 0x2000")



И ещё вопрос. При загрузке программы в АРМ посредством ИАРа какие-нть происходят действия с флеш (полностью ли она затирается или начиная с аддреса, обозначенного в xlc)?



Попробовал в бутлоадере сделать asm("B 0x2000"). Залил во флеш.

Потом в основной проге в обоих xcl изменяю -DROMSTART=0x00002000. Пытаюсь залить во флеш через дебагер. Ну и дебагер у меня подвисает, т.е. как я понимаю, прыжка не происходит на адрес 0x2000 со стороны бутлоадера.



Уж простите за сумбурное объяснение проблемы. Прошу вас, задавайте вопросы, попытаюсь раскрыть тему более полно.



Помогите советом или ссылкой на доки, пожалуйста help.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 15 2007, 16:24
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Redaer @ Aug 15 2007, 17:38) *
Можно ли с помощью иара залить во флешь процессора 2 разные программы переопределив в файлах at91SAM7S256_64KRAM.xlc и at91SAM7S256_NoRemap.xlc параметр -DROMSTART
Теоретически да, причем поскольку во флешь, то использовать второй из перечисленных файлов и не забыть, что память стирается страницами, чтобы при стирании памяти под одну программу не затереть часть другой.
Цитата(Redaer @ Aug 15 2007, 17:38) *
Я так понимаю, при запуске АРМ начинает работать с нулевого адреса. Так?

Собсно, хочется из первой программки(бутлоадер своеобразные) прыгнуть на вторую(основную)... Можно ли это сделать посредством ассемблеровской вставки asm("B 0x2000")
Да, начинает с адреса 0. Не уверен, что команда "B" в асм-вставке поймет абсолютный адрес. Можно в .xcl первой программы определить символ, скажем -DApplication=0x2000, а в самой программе сделать extern void Application(); Application();
Цитата(Redaer @ Aug 15 2007, 17:38) *
И ещё вопрос. При загрузке программы в АРМ посредством ИАРа какие-нть происходят действия с флеш (полностью ли она затирается или начиная с аддреса, обозначенного в xlc)?
Затираются только те страницы, в которые записываются данные. Т.е. если программа заняла 1К, то только этот 1К будет стерт, даже если в .xcl под программу отведено 100К.
Цитата(Redaer @ Aug 15 2007, 17:38) *
Попробовал в бутлоадере сделать asm("B 0x2000"). Залил во флеш.

Потом в основной проге в обоих xcl изменяю -DROMSTART=0x00002000.
Это лишнее. Первый .xcl нужен только для отладки в RAM.
Цитата(Redaer @ Aug 15 2007, 17:38) *
Пытаюсь залить во флеш через дебагер. Ну и дебагер у меня подвисает, т.е. как я понимаю, прыжка не происходит на адрес 0x2000 со стороны бутлоадера.
Сначала убедитесь, что асм-вставка действует именно так, как вы хотите. Пройдите это место в симуляторе и убедитесь, что переход происходит. Команда "B" подразумевает в качестве аргумента смещение относительно PC.

P.S. Надо было все же в отдельную тему писать - предыдущее обсуждение шло про AVR.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Непомнящий Евгений   Несколько программ в одной прошивке   Aug 3 2007, 04:47
- - tag   Цитата(Непомнящий Евгений @ Aug 3 2007, 08...   Aug 3 2007, 06:51
|- - Непомнящий Евгений   Цитата(tag @ Aug 3 2007, 10:51) ...вопрос...   Aug 3 2007, 15:35
|- - KRS   Цитата(Непомнящий Евгений @ Aug 3 2007, 19...   Aug 3 2007, 20:01
- - KRS   Цитата(Непомнящий Евгений @ Aug 3 2007, 08...   Aug 3 2007, 09:46
- - haker_fox   Цитата(Непомнящий Евгений @ Aug 3 2007, 12...   Aug 4 2007, 05:30
|- - Непомнящий Евгений   Цитата(haker_fox @ Aug 4 2007, 09:30) Мож...   Aug 4 2007, 07:52
- - rezident   ИМХО для такой организации лучше подходит выполнен...   Aug 4 2007, 10:31
|- - IgorKossak   Цитата(rezident @ Aug 4 2007, 13:31) ИМХО...   Aug 4 2007, 16:44
- - Серёга_1   Извиняюсь если что не так понял. Мне кажется испол...   Aug 8 2007, 12:06
- - _Sam_   ЦитатаНо меня смущает то, что при этом переходе на...   Aug 8 2007, 12:52
- - alexander55   Цитата(Непомнящий Евгений @ Aug 3 2007, 08...   Aug 8 2007, 13:31
- - Непомнящий Евгений   Цитата(_Sam_ @ Aug 8 2007, 16:52) А зачем...   Aug 9 2007, 07:32
|- - alexander55   Цитата(Непомнящий Евгений @ Aug 9 2007, 11...   Aug 9 2007, 09:54
- - _Sam_   ЦитатаА кто говорит, что они только в одной функци...   Aug 9 2007, 10:16
- - MALLOY2   Не знаю зачем такое нужно ? да и еще на меге , вы...   Aug 9 2007, 17:07
- - Redaer   Большое спасибо за развернутые ответы Че-то я не ...   Aug 16 2007, 07:11


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

 


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


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