bus16 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Есть устройство со встроенным вторичным загрузчиком. Обновление вторичного загрузчика производиться путём загрузки в ОЗУ программы, которая и обновляет этот загрузчик. Вопрос: возможно - ли в процессе выполнения функции IAP приём (на линии возможен обмен данными) по UART0 какого-либо произвольного символа или последовательности, которая прервёт или нарушит выполнения процедуры записи во FLASH. Что-то типа приёма "ISP command sbort"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Спрашивайте у того, кто этот загрузчик писал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Периферия, во время выполнения записи в IAP, продолжает работать как обычно. Поэтому UART (особенно при включённом FIFO) способен принимать байты. Если загрузчик навороченный, то и прерывания от Уарта могут обрабатываться. IAP же невозможно подобными действиями прервать или нарушить работу. Только если улететь в аборт или там стек запороть. Н это уже фатально для всей проги вцелом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба При вызове IAP прерывания глобально и в VIC вектор UART0 запрещены, естественно. Вопрос в том, что фирменный загрузчик может сам инициализировать периферию под себя, а это чревато... Ведь есть-же метод перевода контроллера в режим ISP без подтяжки соответствующей ножки путём посыла "секретных" команд в момент его старта. Условно-же может быть какая-то произвольная последовательность байт на линии, способная помешать процедуре записи во FLASH данных. Вероятно не надо использовать UART0 при смене ПО, либо аппаратно запрещать приём данных в момент записи во FLASH. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Не надо путать IAP и ISP (встроенный бутлодер). это совершенно независимые вещи. Во время вызова IAP можно делать что угодно на UART0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Вот в этом сильно сомневаюсь. Если есть возможность перевести LPC2xxx принудительно в режим ISP - то может быть дыра и в IAP, с тем-же самым переходом в ISP и приём за команду управления "мусор" на линии... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться