Загрузчик Flash-памяти предназначен для того, чтобы работать именно в этой области памяти (Flash), однако ISP и IAP используют пользовательское программное обеспечение, частично расположенное во встроенной оперативной памяти (об использовании оперативной памяти рассказано ниже в этой главе). Вектора прерывания, постоянно находящиеся в загрузочном секторе встроенной Flash-памяти, после сброса также становятся активными, т. е. младшие 64 байта загрузочного сектора отображаются в область памяти, начинающейся с адреса 0x0000 0000. Вектор сброса содержит команду перехода к точке входа в подпрограмму загрузчика Flash-памяти.
На Рис. 20.1 представлен вид карты памяти после любого сброса, на примере микроконтроллеров LPC2114/24/19/29/94 и LPC2212/14/92/94 с объемом Flash-памяти 128К.
20.4. Критерий действительного
пользовательского программного кода
Критерий действительного пользовательского программного кода" состоит в следующем. Зарезервированный вектор прерывания ARM, расположенный по адресу 0x0000 0014, должен содержать дополнение до двух контрольной суммы остальных векторов прерывания («действительную сигнатуру»). В таком случае, контрольная сумма всех векторов равна 0. Загрузчик кода отключает отображение векторов прерываний на загрузочный блок, затем вычисляет контрольную сумму векторов прерываний в секторе 0 Flash-памяти. Если вычисленная сумма соответствует заданной сигнатуре, то управление передается пользовательской программе и в программный счетчик загружается адрес 0x0000 0000. Следовательно, пользовательский вектор сброса во Flash-памяти должен содержать команду перехода к точке входа в пользовательскую прикладную программу.
' Действительный пользовательский программный код — это любой программный код, записанный во встроенную Flash-память микроконтроллера. Действительная (или истинная) пользовательская сигнатура формируется автоматически при программировании Flash-памяти этим кодом. Если Fash-память еще не программировалась или была полностью стерта пользователем, то истинная пользовательская сигнатура сформирована не будет и встроенная программа-загрузчик (записанная во Flash-память на заводе и пользовательской программе недоступная) не передаст управление после сброса по адресу 0x00000000 Flash-памяти. (Прим. науч. ред.)
Если сигнатура недействительна, то подпрограмма автоматической установки скорости обмена (auto-baud) производит синхронизацию скорости обмена с главным компьютером (хостом) через последовательный порт 0. Для осуществления синхронизации, хост должен послать символ синхронизации ('?') и ожидать ответа. Параметры настройки последовательного порта должны быть следующими: 8 информационных битов, 1 столовый бит и отсутствие контроля четности. Подпрограмма автоматической установки скорости обмена измеряет время передачи бита полученного символа синхронизации в собственных единицах частоты и соответствующим образом программирует генератор скорости обмена через последовательный порт. Затем она посылает в хост символьную строку ASCII «Synchronized<CR><LF>». В ответ на это, хост должен послать символьную строку «Synchronized<CR><LF>».
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |