Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проектирование протокола для инструментального аппаратного загрузчика
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
MIX@
К сожалению, не нашёл соответствующего места где разместить тему кроме как здесь.
Поскольку разработку веду на FPGA - разместил всё же здесь.
Если ошибся - модераторы перенесите в более подходящий раздел.

Товарищи, созрел вопрос - создание инструментального аппаратного загрузчика на FPGA.
Суть его проста - часть системы на кристалле, обеспечивающая начальную инициализацию памяти для дальнейшего функционирования внешнего блока, например, какого-либо SOFT-процессора. Т.е. после отработки - он просто отключается от всех шин.

На данный момент разработал загрузчик на базе протокола Intel Hex с небольшими изменениями.

Изменения следующие - разбил одну IntelHex запись на две части - заголовок и данные и после каждого влепил свою контрольную сумму (XOR, как в оригинальном Intel HEX), обозвав это всё пакетом.

Организовал сие за следующим: длина записи не фиксированной длины (может варьироваться от 0 до 255) и при неправильной передаче этого поля - контроллер может просто зависнуть. Т.е. проверка контрольной суммы после заголовка - служит некоторой защитой от этого. Загрузчик сейчас работает вкупе с UART (принимает данные с UART побайтно), но цель проектирования была, в первую очередь, универсальность. Т.е. возможность работы с устройствами сопрягающиеся, возможно, с менее надёжными каналами.

Вообщем, такие вот противоречивые требования, ибо проект академический.

Как по вашему - стоит ли игра с разработкой "нового" протокола свеч или, может быть, посоветуете другие проектные решения протокола для подобной задачи.
Andrew2000
Цитата(MIX@ @ Apr 7 2009, 23:38) *
Как по вашему - стоит ли игра с разработкой "нового" протокола свеч или, может быть, посоветуете другие проектные решения протокола для подобной задачи.

Посмотрите на механизм загрузки (BTL) в микроконтроллерах Infineon-a.
Кратко:
- при вкл. питания микроконтроллер (или Ваш плис-загрузчик) ждет нулевой (==0) байт из UART-a
- по этому байту определяется скорость передачи и настраивается собственный UART
- высылается подтверждение (1 байт)
- принимается 32 байта (можно больше), которые записываются в память со стартового адреса своего процессора
- снимается ресет с процесора, который начинает выполнять эти 32 байта
(32 байта вполне достаточно для примитивной программы-загрузчика, которая может догрузить саму себя)
На мой взгляд - ничего лишнего в плис и вся нагрузка на программу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.