ASavit писал(а):
luden писал(а):
Отладочные платы Milandr 1986ВЕ91Т. После установки CodeMaster-ARM и загрузки примера Milandr 1986 Phyton CMC-ARM C Compiler: LCD, PORTs and SysTick interrupts using (Milandr 1986BE91 evaluation board needed). При попытке загрузки отладчика JTAG-эмулятор JEM-ARM-2, выдаётся аппаратная ошибка #0x0117 (отсутствует питание в домене Debug целевого микроконтроллера). При попытке залития прошивки, выдаётся две неуказываемых ошибки.
Следовал инструкциям квикстарта. Что я делаю не так?
Нам удалось исследовать ситуацию, очень похожую на описанную Вами.
Обнаружена следующая причина возникновения 0x0117 ошибки во время запуска отладчика.
После программирования микроконтроллера в его флэш-памяти образовался код, который, будучи выполненным, блокирует работу отладочного модуля микроконтроллера. Т.е. в Вашем случае запрограммировалось не то, что должно было программироваться. Из-за ошибки в CodeMaster-ARM v2.25.01 такая ситуация вполне вероятна.
Чтобы разблокировать микроконтроллер нужно запретить ему выполнять код из флэш-памяти. Для этого:
1. На Вашей плате при отключенном питании нужно выбрать вариант загрузки из внешней памяти - EXT_ROM/JTAG_B (переключатели SW1, SW2, SW3 в положении 0, 1, 0).
2. Подключить отладчик к разъему JTAG_B.
3. Подать питание на плату.
4. Подключить отладчик к USB.
5. Запустить CodeMaster-ARM версии 2.25.02 или выше (скачать можно с сайта
Фитона).
6. Выполнить команду стирания флэш-памяти - меню "Отладка" / "Стереть флэш-память".
После этого можно завершить работу с CodeMaster-ARM, отключить питание от платы, переключателями SW1, SW2, SW3 выбрать прежний режим загрузки и подключить отладчик к соответствующему разъему (JTAG_A или JTAG_B), подать питание на плату.
Теперь можно запустить CodeMaster-ARM и снова загрузить демонстрационный пример. Теперь должно работать.
Вляпался в подобную проблему (ошибка 0x0117) с одной лишь разницей. Проблема появилось при прошивке кода, приведенного ниже в кастомную (а не отладочную) плату. Описаное выше решение не подходит ибо сигналы MODE[2:0] = 001 жестко разведены на плате и дорожки находятся под корпуспм микросхемы - доступа к ним нет (не порезать, не подпаяться). Есть ли еще какое нибудь решение (через сигнал RESET например) ? CodeMaster-ARM 2.40.00
#include <types.h>
#include <stdio.h>
void main(void)
{
RST_CLK->PER_CLOCK = 0xFFFFFFFF;
RST_CLK->UART_CLOCK = 0x3000000; //Разрешение тактовой частоты на UART1, UART2, делитель тактовой частоты UART1_CLK=HCLK, UART2_CLK=HCLK
PORTC->FUNC = 0x00000000;
PORTC->ANALOG = 0xFFFFFFFF;
PORTC->OE = 0xFFFFFFFF;
PORTC->PWR = 0x55555555;
PORTC->RXTX = 0x00000000;
//Конфигурируем таймер
RST_CLK->TIM_CLOCK = 0x7000000; // Разрешаем тактирование таймеров, делитель тактовой = 0
TIMER1->CNTRL =0x00000000;
TIMER1->CNT = 0x00000000;
TIMER1->PSG = 0x0;
TIMER1->ARR = 0x0000FFFF;
TIMER1->IE = 0x00000002;
TIMER1->CNTRL = 0x00000001;
__WFI();
}