Здравствуйте!
Возникла необходимость в следующем использовании контроллера (тема перекликается с Запуск исполняемого кода из ОЗУ).
К контроллеру должна быть подключена малокнопочная клавиатура и графический дисплей, а также коммуникационный порт (RS-232). Для экспериментов есть отладочная плата EM-LPC1700-68 Embest в которой все это присутствует.
Хочется иметь следующую рабочую ситуацию:
Контроллер стартует обычным образом (из флэши) (выполнаяется Flashprog), инициализирует дисплей, выводит некоторое сообщение о загрузке. Далее по коммуникационному порту получает код программы (RAMprog) и грузит его в ОЗУ. После полной загрузки кода программа Flashprog отдает управление вновь загруженной программе RAMprog, которая далее является единственной выполняемой на контроллере и которой, вообще-то, не надо знать о наличии и предыдущей работе Flashprog.
RAMprog подразумевается как программа, подгружаемая в зависимости от режима работы всего устройства. Может быть набор программ, хранящихся на некотором внешнем носителе. Основная функция которой на данном этапе обработка клавиатуры и отрисовка дисплея (GUI), работа с коммуникационным каналом (прием и отображение информации, передача информации об изменении настроек, выполненных оператором через GUI).
Это чем-то похоже на загрузку и работу старших ARMов и процессоров DSP (Uboot+linux kernel + ..., flashboot + ....).
Вопросы:
1. Реально ли организовать такой режим работы? (На мой дилетантский взгляд - да, проблемы могут быть в деталях о которых я не знаю и не подозреваю).
2. Допускается ли в качестве RAMprog применять полновесное приложение, собираемое независимо от Flashprog, которое вообще не использует флэш-память? (понятно, что скрипты линкера должны быть разными и, наверное, что-то ещё).
Подскажите, пожалуйста, где можно прочитать о передаче управления в программу, находящуюся в ОЗУ.
Спасибо.