Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-ноя-18 19:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 2014-фев-22 13:36 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
В проектируемом изделии через линии 14, 15 порта C выводятся сигналы стробов данных. При отладке программы на EVALUATION BOARD к контакту PC-14 подключена кнопка RIGHT с конденсатором подавления дребезга, из-за этого конденсатора сигнал почти не виден. попытался перенести этот сигнал на линию PB-08, которая в изделии не используется.
Отладочная плата подключена через порт JTAG-A (используется JEM-ARM V2). Программа нормально компилируется и записывается во флэш-память МК, но при запуске CMC-ARM "падает" с сообщением "Аппаратная ошибка #0x010B. Прочитано неверное значение регистра IDCODE отлаживаемого JTAG устройства". Сама программа в МК на отл.плате при этом нормально работает. При подключении отладочной платы через JTAG-B стереть программу из МК можно, а записать и отлаживать не получается (CMC-ARM утверждает, что записал и запустил программу, однако МК на отл.плате не работает).
Возможно, что работе JTAG-B препятствует настройка портов МК в моей программе, но почему перестаёт работать JTAG-A при переназначении единственного сигнала с РС-14 на РВ-8 ?
Настройки портов В и С для работы в изделии:
#define PB_RXTX 0x00001000 // разряд 12 = 1
#define PB_OE 0x0000B021 // разряды 0,5,12,13,15 OE_OUT; 1-4,6-11,14 OE_IN
#define PB_FUNC 0xAAA0E800 // разряды 0-4,8,9 FUNC_PORT; 5,6,10-15 FUNC_ALTER; 7 FUNC_OVERRID
#define PB_ANALOG 0x0000FFFF // все разряды MODE_DIGITAL
#define PB_PULL 0xF21F0D80 // разряды 0-4,9,12-15 PULL_UP; 7,8,10,11 PULL_DOWN; 5,6 PULL_OFF
#define PB_PD 0x4FDE4FDE // разряды 0,5,12,13,15 Sch_OFF, PD_DRIVER; 1-4,6-11,14 Sch_ON, PD_OPEN
#define PB_PWR 0x8A000802 // разряды 0,5,12,13,15 SPEED_FAST; 1-4,6-11,14 OUTPUT_OFF
#define PB_GFEN 0x00000F80 // разряды 0-6,12-15 GFEN_OFF; 7-11 GFEN_ON
#define PC_RXTX 0x0000C000 // разряды 14,15 = 1
#define PC_OE 0x0000FFFF // все разряды OE_OUT
#define PC_FUNC 0x00000000 // все разряды FUNC_PORT
#define PC_ANALOG 0x0000FFFF // все разряды MODE_DIGITAL
#define PC_PULL 0xC0000000 // разряды 0-13 PULL_OFF; 14,15 PULL_UP
#define PC_PD 0x00000000 // все разряды Sch_OFF, PD_DRIVER
#define PC_PWR 0xAAAAAAAA // разряды 0-15 SPEED_FAST;
#define PC_GFEN 0x00000000 // все разряды GFEN_OFF

Настройки портов В и С для работы на отладочной плате:
#define PB_RXTX 0x00001100 // разряды 8,12 = 1
#define PB_OE 0x0000B121 // разряды 0,5,8,12,13,15 OE_OUT; 1-4,6,7,9-11,14 OE_IN
#define PB_FUNC 0xAAA0E800 // разряды 0-4,8,9 FUNC_PORT; 5,6,10-15 FUNC_ALTER; 7 FUNC_OVERRID
#define PB_ANALOG 0x0000FFFF // все разряды MODE_DIGITAL
#define PB_PULL 0xF31F0C80 // разряды 0-4,8,9,12-15 PULL_UP; 7,10,11 PULL_DOWN; 5,6 PULL_OFF
#define PB_PD 0x4EDE4EDE // разряды 0,5,8,12,13,15 Sch_OFF, PD_DRIVER; 1-4,6,7,9-11,14 Sch_ON, PD_OPEN
#define PB_PWR 0x8A020802 // разряды 0,5,8,12,13,15 SPEED_FAST; 1-4,6-11,14 OUTPUT_OFF;
#define PB_GFEN 0x00000E80 // разряды 0-6,8,12-15 GFEN_OFF; 7,9-11 GFEN_ON
#define PC_RXTX 0x00008000 // разряд 15 = 1
#define PC_OE 0x0000BFFF // разряды 0-13,15 OE_OUT; 14 OE_IN
#define PC_FUNC 0x00000000 // все разряды FUNC_PORT
#define PC_ANALOG 0x0000FFFF // все разряды MODE_DIGITAL
#define PC_PULL 0x80004000 // разряды 0-13 PULL_OFF; 14 PULL_DOWN; 15 PULL_UP
#define PC_PD 0x40004000 // разряды 0-13,15 Sch_OFF, PD_DRIVER; 14 Sch_ON, PD_OPEN
#define PC_PWR 0x8AAAAAAA // разряды 0-13,15 SPEED_FAST; 14 OUTPUT_OFF;
#define PC_GFEN 0x00004000 // разряды 0-13,15 GFEN_OFF; 14 GFEN_ON

Вроде бы я не менял ничего, кроме линий РВ-8 и РС-14

_________________
Странник


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-фев-24 07:46 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1010
Откуда: Тула
С jtag'ами тут по-моему у всех одна и та же проблема. Ещё на заре появления этих МК тема обсуждалась. Сейчас я не нашел, но вот такой код полностью решил мои проблемы с отладкой:
Код:
   register uint32_t temp;
  temp = PORTB->RXTX;
  temp |= (1<<11);
  temp &= ~(31);
  PORTB->RXTX = temp;

т.е. jtag'овые биты всегда переводим в ноль.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-фев-24 20:15 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Спасибо!
Хм... Мне как-то не пришло в голову, что биты JTAG в порту требуют обнуления...
В изделии у меня нет "портовых" выходов в порту В, только один вход, а также UART-1, SSP-1, Ext.Int-1, Ext.Int-2 и (для отладки и перепрошивки) JTAG-A. А к одноразрядным сигналам (отдельным битам портов) я через Bit-band обращаюсь (в среднем так быстрее получается - всего пара машинных команд).
В общем, задачу я решил переносом проблемного сигнала из порта С в порт D, а не B, но эту особенность JTAG теперь буду как-то учитывать в следующих разработках...

_________________
Странник


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-мар-18 13:24 
Не в сети

Зарегистрирован: 2011-ноя-21 08:45
Сообщения: 6
prostoRoman писал(а):
С jtag'ами тут по-моему у всех одна и та же проблема.

Здравствуйте!
Изделие подключено через JTAGB. В режиме загрузки ext_rob/jtagb флэш МК стирается и программируется, но отладка не работает, причем сигналы на всех линиях JTAG порта присутствуют.
В режиме загрузки flash/jtagb программа загружается из флэш МК, но jtag не работает. При этом ответы МК на линии ТДО отсутствуют. Попытки различной настройки порта Д никакого эффекта не дали.
Система CodeMaster.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-мар-18 18:54 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
В режиме загрузки ext_rom+jtagb (MODE=010b) отладка и не должна работать: программа в этом режиме запускается из внешней памяти (которой у Вас видимо нет), а не из FLASH. Я этот режим использую только для стирания сбойных программ, блокирующих работу JTAG-A. В режиме flash+jtagb (MODE=000b) отладкой пользоваться не пробовал, пробовали в соседнем отделе нашего НИИ, говорят, что не вышло, но подробностей не знаю. Сам я отлаживаю только через JTAG-A (MODE=001b) -- так у нас исторически сложилось...
Народ на форуме пишет, что если в программе используется непосредственный вывод в линии порта, на котором работает JTAG, то все разряды JTAG надо при каждом таком выводе обнулять, иначе почему-то пропадает связь TDI-TDO и отладка прекращается. Я пробовал НЕ обнулять -- действительно, при первой же команде вывода в порт В (повторюсь, я использую JTAG-A) CodMaster перестаёт видеть отлаживаемое устройство.

_________________
Странник


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-мар-19 09:12 
Не в сети

Зарегистрирован: 2011-ноя-21 08:45
Сообщения: 6
Здравствуйте!
Спасибо, будем пробовать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB