Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка и запуск кода на выполнение в ОЗУ
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
mdmitry
Здравствуйте!
Возникла необходимость в следующем использовании контроллера (тема перекликается с Запуск исполняемого кода из ОЗУ).

К контроллеру должна быть подключена малокнопочная клавиатура и графический дисплей, а также коммуникационный порт (RS-232). Для экспериментов есть отладочная плата EM-LPC1700-68 Embest в которой все это присутствует.

Хочется иметь следующую рабочую ситуацию:
Контроллер стартует обычным образом (из флэши) (выполнаяется Flashprog), инициализирует дисплей, выводит некоторое сообщение о загрузке. Далее по коммуникационному порту получает код программы (RAMprog) и грузит его в ОЗУ. После полной загрузки кода программа Flashprog отдает управление вновь загруженной программе RAMprog, которая далее является единственной выполняемой на контроллере и которой, вообще-то, не надо знать о наличии и предыдущей работе Flashprog.

RAMprog подразумевается как программа, подгружаемая в зависимости от режима работы всего устройства. Может быть набор программ, хранящихся на некотором внешнем носителе. Основная функция которой на данном этапе обработка клавиатуры и отрисовка дисплея (GUI), работа с коммуникационным каналом (прием и отображение информации, передача информации об изменении настроек, выполненных оператором через GUI).

Это чем-то похоже на загрузку и работу старших ARMов и процессоров DSP (Uboot+linux kernel + ..., flashboot + ....).

Вопросы:
1. Реально ли организовать такой режим работы? (На мой дилетантский взгляд - да, проблемы могут быть в деталях о которых я не знаю и не подозреваю).
2. Допускается ли в качестве RAMprog применять полновесное приложение, собираемое независимо от Flashprog, которое вообще не использует флэш-память? (понятно, что скрипты линкера должны быть разными и, наверное, что-то ещё).

Подскажите, пожалуйста, где можно прочитать о передаче управления в программу, находящуюся в ОЗУ.

Спасибо.
haker_fox
QUOTE (mdmitry @ Apr 5 2012, 18:26) *
1. Реально ли организовать такой режим работы? (На мой дилетантский взгляд - да, проблемы могут быть в деталях о которых я не знаю и не подозреваю).
2. Допускается ли в качестве RAMprog применять полновесное приложение, собираемое независимо от Flashprog, которое вообще не использует флэш-память? (понятно, что скрипты линкера должны быть разными и, наверное, что-то ещё).

Подскажите, пожалуйста, где можно прочитать о передаче управления в программу, находящуюся в ОЗУ.

Добрый день!
Ответы:
1. Да, реально. Правда я делал для LPC24x8. Незнаю, насколько кортекс отличается, но мне кажется, что если пространство FLASH/RAM/EXTERNAL MEMORY едино, то припятствий нет.
2. Загрузчик от приложения может отличаться как угодно. Важно лишь предусмотреть некий общий интерфейс и набор правил для взаимодействия (стартовый адрес приложения, инициализация периферии и т.п.).

На счет передачи управления, на форуме есть несколько топиков, где показано как вызвать "функцию", имеющую необходимый адрес. Я даже использовал что-то предназначенное для AVR, т.к. язык Си невилировал архитектурные особенности.

Вообще советую на U-Boot мельком глянуть. Там есть что "скопипастить" )))

Вот как-то так...)
mdmitry
Цитата(haker_fox @ Apr 5 2012, 16:25) *
Добрый день!
...

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