58743
[i] Процессор К1967ВН02BG не загружается из внешней памяти
К процессору К1967ВН02BG подключена внешняя 8-разрядная память. Загрузочный образ сформирован с помощью утилиты Loader и успешно загружен во внешнюю память с помощью утилиты Flasher. После подачи питания на плату процессор не выполняет загруженную во внешнюю память программу. В чём может быть дело?
Причин может быть несколько. Чтобы выявить причину не запуска процессора с внешней памяти, требуется проверить, верно ли сформирована программа и корректно ли установлен режим загрузки процессора.
- Программная часть:
Рисунок 1 - Отладочная конфигурация без загрузки программы (вкладки Main и Debugger по умолчанию)
Данная отладочная конфигурация позволяет подключиться к процессору без сброса и загрузки программы. После запуска отладки процессор будет остановлен, что позволит проверить выполнение загрузки программы из внешней памяти.
Загрузку программы из внешней памяти выполняет контроллер DMA, канал 0. После сброса при nBMS=0 в регистры канала 0 DMA загружается конфигурация, настроенная на считывание 256 32-разрядных слов из внешней памяти EPROM во внутреннюю память по адресу 0x0000_0000. После считывания 256 слов канал 0 завершает работу и устанавливается прерывание, переводящее выполнение процессора на адрес 0x0000_0000.
Если считывание каналом 0 DMA прошло успешно, то в регистрах контроллера DMA будут значения, приведённые на рисунке 2.
Рисунок 2 - Регистры канала 0 DMA после успешного выполнения загрузки из внешней памяти (nBMS=0)
Если считывание каналом 0 DMA не было выполнено, например, в случае, если nBMS=1, то в регистрах контроллера DMA будут значения, приведённые на рисунке 3.
Рисунок 3 - Регистры канала 0 DMA в случае отсутствия загрузки из внешней памяти (nBMS=1)
Дополнительно необходимо проверить регистры каналов 8-11 DMA, которые отвечают за загрузку программы из портов связи (Link). Если загрузка из портов связи не выполнялась, то регистры каналов 8-11 DMA будут иметь значения по сбросу (рисунок 4), как указано в спецификации, таблица – "Группа регистров TCB порта связи. Прием".
Рисунок 4 - Регистры каналов 8-11 DMA, значения регистров соответствуют значениям по сбросу
Если канал 0 DMA успешно завершил работу, то необходимо проверить загруженную программу во внутренней памяти - Window->Show View->Memory Browser, во вкладке Memory Browser необходимо ввести адрес 0x00000000 (рисунок 5), после чего проверить содержимое памяти на предмет некорректных значений, например, 0xFFFF_FFFF.
Рисунок 5 - Содержимое внутренней памяти процессора, начиная с адреса 0x0000_0000
- Программная часть:
- Проверить настройки утилиты Loader: выбранный загрузчик (bootloader), ID процессора, тип сегмента, генерация таблицы MMAP. Генерация таблицы MMAP, как правило, требуется при формировании образа для нескольких процессоров, при этом должен быть выбран соответствующий загрузчик с поддержкой MMAP.
- Проверить выполнение верификации в утилите Flasher.
- Подробная информация об утилитах Loader и Flasher приведена в соответствующей документации, поставляемой в составе среды CM-LYNX.
- Проверить настройки тактирования процессора. Информация по настройке тактирования приведена в спецификации, таблица – "Конфигурация PLL" и пункт "Домены синхронизации".
- Проверить, верно ли задан ID процессора(ов) с помощью внешних резисторов доопределения. Каждый процессор в кластере должен иметь уникальный ID.
- Проверить подтяжку конфигурационных выводов: nBMS = 0, nBM = 0 (если не требуются включение внешних прерываний), TMR0E = 0/1, nBUSLOCK = 0/1. Процессор с ID = 0 имеет внутреннюю подтяжку выводов nBMS и nBUSLOCK (спецификация, таблица – "Описание функций конфигурационных портов"), выводы nBM и TMR0E должны быть подтянуты до допустимого логического уровня внешним резистором подтяжки.
- Неиспользуемые тактовые входы портов связи (Link) необходимо доопределить: LxCLKINN требуется подключить через R=4.7кОм к DGND, а LxCLKINP - через R=4.7кОм подключить к 2.5В. Иначе помехи на неподключённых тактовых входах могут привести к "ложной" загрузке программы через порт связи, что в свою очередь приведёт к некорректной загрузке из внешней памяти.
- Проверить порядок подачи напряжений питания: Ucc, Uccio или одновременно (спецификация, раздел "Схема формирования внутреннего сброса по включению питания").
Рисунок 1 - Отладочная конфигурация без загрузки программы (вкладки Main и Debugger по умолчанию)
Данная отладочная конфигурация позволяет подключиться к процессору без сброса и загрузки программы. После запуска отладки процессор будет остановлен, что позволит проверить выполнение загрузки программы из внешней памяти.
Загрузку программы из внешней памяти выполняет контроллер DMA, канал 0. После сброса при nBMS=0 в регистры канала 0 DMA загружается конфигурация, настроенная на считывание 256 32-разрядных слов из внешней памяти EPROM во внутреннюю память по адресу 0x0000_0000. После считывания 256 слов канал 0 завершает работу и устанавливается прерывание, переводящее выполнение процессора на адрес 0x0000_0000.
Если считывание каналом 0 DMA прошло успешно, то в регистрах контроллера DMA будут значения, приведённые на рисунке 2.
Рисунок 2 - Регистры канала 0 DMA после успешного выполнения загрузки из внешней памяти (nBMS=0)
Если считывание каналом 0 DMA не было выполнено, например, в случае, если nBMS=1, то в регистрах контроллера DMA будут значения, приведённые на рисунке 3.
Рисунок 3 - Регистры канала 0 DMA в случае отсутствия загрузки из внешней памяти (nBMS=1)
Дополнительно необходимо проверить регистры каналов 8-11 DMA, которые отвечают за загрузку программы из портов связи (Link). Если загрузка из портов связи не выполнялась, то регистры каналов 8-11 DMA будут иметь значения по сбросу (рисунок 4), как указано в спецификации, таблица – "Группа регистров TCB порта связи. Прием".
Рисунок 4 - Регистры каналов 8-11 DMA, значения регистров соответствуют значениям по сбросу
Если канал 0 DMA успешно завершил работу, то необходимо проверить загруженную программу во внутренней памяти - Window->Show View->Memory Browser, во вкладке Memory Browser необходимо ввести адрес 0x00000000 (рисунок 5), после чего проверить содержимое памяти на предмет некорректных значений, например, 0xFFFF_FFFF.
Рисунок 5 - Содержимое внутренней памяти процессора, начиная с адреса 0x0000_0000
Документация
2.8.0 от 11.04.2025
04.05.2022