Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2020-фев-22 17:01

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 129 сообщений ]  На страницу « 14 5 6 7 8 9 »
Автор Сообщение
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-22 18:47 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
Возвращаюсь к вопросу работы с внешней 16-битной шиной с последовательной ECC.
Код:
#define ECC_BASE_ADDR (0x1002F800UL)
int Init (void) 
{
	uint32_t tmp;
	uint32_t data32;
	
	CLK_CNTR->KEY      = 0x8555AAA1;

	CLK_CNTR->PER0_CLK |= (1 << 17)|(1 << 16)|(1 << 15)|(1 << 5)|(1 << 1)|(1 << 4);	//Enable clocks of PE, PD, PC, EBC, BKP, FTMODE
	
	/* Clocks config */
	if((BKP->REG_63_TMR0 & ((1 << 23)|(1 << 22))) != ((1 << 23)|(1 << 22)))	//if HSI switch off
	{
		BKP->KEY = 0x8555AAA1;
		
		tmp = BKP->REG_63_TMR0 | (1 << 22);	//HSI_ON Set
		
		BKP->REG_63_TMR0 = tmp;
		BKP->REG_63_TMR1 = tmp;
		BKP->REG_63_TMR2 = tmp;
		
		while((BKP->REG_63_TMR0 & (1 << 23)) == 0){}	//while HSI not ready
			
		BKP->KEY = 0;
	}
	
	CLK_CNTR->MAX_CLK = 0;	//HSI
	CLK_CNTR->CPU_CLK = 0;	//DIV = 0, FCLK = HSI frquency
	
	/* Ext Bus Config */
	EXT_BUS_CNTR->KEY 	= 0x8555AAA1;
	EXT_BUS_CNTR->RGN0_ECCBASE = ECC_BASE_ADDR;
	data32 =  	1<<0 | //En 
															1<<1 | //ECC En
															1<<2 | //ECC Mode
															0<<3 | //RDY Wait 
															1<<4 | //MODE 
															0<<6 | //ROM/RAM 
															0<<7 | //CPOL 
														 (0UL)<<8 | //WS_ACTIVE
														 (0UL)<<16 | //WS_SETUP
														 (0UL)<<20 | //WS_HOLD
														 (0UL)<<24 | //USE SEP PAD
														 (0UL)<<25 | //CACHEBLE 
														 (1UL)<<26 | //READ32
														 (0UL)<<27 | //ENOCLK
														 (0UL)<<28;  //DIVOCLK
	EXT_BUS_CNTR->RGN0_CNTRL = data32;
	/* Pins Config */
	
	/* clear configuration of PortC */
	PORTC->KEY     = 0x8555AAA1;
	PORTC->CFUNC[3]= 0xFFFFFFFF; 
	PORTC->CFUNC[2]= 0xFFFFFFFF; 
	PORTC->CFUNC[1]= 0xFFFFFFFF; 
	PORTC->CFUNC[0]= 0xFFFFFFFF; 
	PORTC->CANALOG = 0xFFFFFFFF; 
	PORTC->CPWR[1] = 0xFFFFFFFF; 
	PORTC->CPWR[0] = 0xFFFFFFFF; 
	PORTC->CPULLUP = 0xFFFFFFFF;
	PORTC->CPULLDOWN = 0xFFFFFFFF;
	PORTC->CPD = 0xFFFFFFFF;
	PORTC->CCL = 0xFFFFFFFF;
	PORTC->CIE = 0xFFFFFFFF;
	
	/* config PortC[30], PortC[31] (Bus Address[1:0]) */
	PORTC->SFUNC[3]= (2UL)<<28 | (2UL)<<24;  // pins 30 & 31	
	PORTC->SANALOG = (1UL)<<30 | (1UL)<<31;  // pins 30 & 31 
	PORTC->SPWR[1] = (3UL)<<30 | (3UL)<<28;  // pins 30 & 31
	
	/* clear configuration of PortE */
	PORTE->KEY     =  0x8555AAA1;
	PORTE->CFUNC[3]= 0xFFFFFFFF; 
	PORTE->CFUNC[2]= 0xFFFFFFFF; 
	PORTE->CFUNC[1]= 0xFFFFFFFF; 
	PORTE->CFUNC[0]= 0xFFFFFFFF; 
	PORTE->CANALOG = 0xFFFFFFFF; 
	PORTE->CPWR[1] = 0xFFFFFFFF; 
	PORTE->CPWR[0] = 0xFFFFFFFF;	
	PORTE->CPULLUP = 0xFFFFFFFF;
	PORTE->CPULLDOWN = 0xFFFFFFFF;
	PORTE->CPD = 0xFFFFFFFF;
	PORTE->CCL = 0xFFFFFFFF;
	PORTE->CIE = 0xFFFFFFFF;
	
	/* config PortE[13:0] (Bus Data[15:2]) */
	PORTE->SFUNC[0] = 2<<0 | 2<<4 | 2<<8 | 2<<12 | (2UL)<<16 | (2UL)<<20   | (2UL)<<24 | (2UL)<<28; // pins 7..0
	PORTE->SFUNC[1] =	2<<0 | 2<<4 | 2<<8 | 2<<12 | (2UL)<<16 | (2UL)<<20   | (2UL)<<24 | (2UL)<<28; // pins 15..8
	PORTE->SANALOG = 1<<0 | 1<<1 | 1<<2 | 1<<3  | 1<<4  | 1<<5 | 1 << 6 | 1 << 7 | 1 << 8 | 1 << 9 | 1 << 10 | 1 << 11 | 1 << 12 | 1 << 13 | 1 << 14 | 1 << 15;  // pins 15...0 
	PORTE->SPWR[0] = 3<<0 | 3<<2 | 3<<4 | 3<<6  | 3<<8  | 3<<10 | 3<<12 | 3<<14 | (3UL)<<16 | (3UL)<<18 | (3UL)<<20 | (3UL)<<22 | (3UL)<<24 | (3UL)<<26 | (3UL)<<28 | (3UL)<<30;  // pins 15...0
	
	/* clear configuration of PortD */
	PORTD->KEY     =  0x8555AAA1;
	PORTD->CFUNC[3]= 0xFFFFFFFF; 
	PORTD->CFUNC[2]= 0xFFFFFFFF; 
	PORTD->CFUNC[1]= 0xFFFFFFFF; 
	PORTD->CFUNC[0]= 0xFFFFFFFF; 
	PORTD->CANALOG = 0xFFFFFFFF; 
	PORTD->CPWR[1] = 0xFFFFFFFF; 
	PORTD->CPWR[0] = 0xFFFFFFFF;
	PORTD->CPULLUP = 0xFFFFFFFF;
	PORTD->CPULLDOWN = 0xFFFFFFFF;
	PORTD->CPD = 0xFFFFFFFF;
	PORTD->CCL = 0xFFFFFFFF;
	PORTD->CIE = 0xFFFFFFFF;
	
	/* config PortD[5:0] (Bus Address[16:2] (PD[14:0]); ~CS (PD[19]); ~OE (PD[23]); ~WE (PD[24]); Bus Data[1:0] (PD[31:30])) */
	PORTD->SFUNC[0]= 2<<0 | 2<<4 | 2<<8 | 2<<12 | (2UL)<<16 | (2UL)<<20 | (2UL)<<24 | (2UL)<<28;  // pins 7...0
	PORTD->SFUNC[1]= 2<<0 | 2<<4 | 2<<8 | 2<<12 | (2UL)<<16 | (2UL)<<20 | (2UL)<<24;  // pins 14...8
	PORTD->SFUNC[2]= (2UL)<<12 | (2UL)<<28;  // pins 16, 19 and 23
	PORTD->SFUNC[3]= 2<<0 | 3<<4 | 3<<8 | (2UL)<<24 | (2UL)<<28;  // pins 24, 25, 26, 30, 31
	
	PORTD->SANALOG = (0x7FFFUL)<<0 | (1UL)<<19 | (1UL)<<21 | (1UL)<<23 | (1UL)<<24 | (1UL)<<25 | (1UL)<<26 | (1UL)<<30 | (1UL)<<31;  // pins 31, 30, 24, 23, 19, 16..0,
	
	PORTD->SPWR[0] = 0xFFFFFFFF;  // pins 15...0
	PORTD->SPWR[1] = (3UL)<<6 | (3UL)<<10 | (3UL)<<14 | (3UL)<<16 | (3UL)<<18 | (3UL)<<20 | (3UL)<<28 | (3UL)<<30;  // pins 16, 19, 23, 24, 25, 26, 30, 31 
	
	return (0);
}

uint16_t *ptr;
uint32_t data32;

int main(void)
{
   Init();
   
   ptr = (uint16_t *)0x10019000;
   *ptr = 0x1234;
   *(ptr + 1) = 0x5678;
   while(1) {
   }
}
Код выполняется из внутренней RAM.

Внешняя память проецируется в регион 0, начиная с адреса 0x10000000. Микросхема памяти с 16-битной шиной данных.
Делаю две 16-битные записи.
После каждой из них смотрю регистр REGION[0].ECCCS и после каждой записи счетчики одинарных и двойных ошибок увеличиваются, флаги возникновения одинарной и двойной ошибки устанавливаются.
Почему? Что я делаю не так? :)

Без режима ECC внешняя память отлично пишется и читается.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-22 18:58 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
А пишите в ранее не проинициализированную память ? Т.е. там изначально случайные данные ?


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-23 10:44 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
-=Sergei=- писал(а):
А пишите в ранее не проинициализированную память ? Т.е. там изначально случайные данные ?
Да.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-23 14:25 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 724
Откуда: г. Санкт-Петербург
QuadMan писал(а):
-=Sergei=- писал(а):
А пишите в ранее не проинициализированную память ? Т.е. там изначально случайные данные ?
Да.
Перед тем как писать 8-ми или 16-ти разрядные данные в память необходимо память проинициализировать 32-х разрядными данными.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-23 15:18 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
vasili писал(а):
QuadMan писал(а):
-=Sergei=- писал(а):
А пишите в ранее не проинициализированную память ? Т.е. там изначально случайные данные ?
Да.
Перед тем как писать 8-ми или 16-ти разрядные данные в память необходимо память проинициализировать 32-х разрядными данными.
а в каком режиме проводить инициализацию?
Вот я попробовал записать два 32 битных нуля, но на каждую операцию записи опять вижу увеличение счетчика ошибок.
Или нужно проинициализировать область не в ECC режиме?

И, кстати, когда я пытаюсь прочесть данные (в режиме без ECC), которые расположены по адресу ECCBASE, я вижу там 0. Такое ощущение, ECC туда не пишется.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-сен-04 19:23 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
Товарищи!
У кого-нибудь есть положительный опыт работы на этом процессоре с внешней 16-битной шиной с последовательным ECC?
Пока не удается запустить этот режим - появляются ошибки.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-сен-07 11:08 
Не в сети

Зарегистрирован: 2010-янв-22 14:20
Сообщения: 23
Откуда: АО "ПКК Миландр"
Несмотря на то, что используется 16-разрядная шина, контроллер внешней системной шины все равно манипулирует 32-х разрядными словами.
Сделайте указатель ptr 32-х разрядным. Должно заработать.
uint32_t *ptr;
Ещё заметил в коде следующую ошибку. В настройках пинов шина адреса 17 разрядов (EBUS_ADR[16:0] - PD[14:0],PC[31:30]). А фактически используется 18 разрядов адреса. ECC_BASE_ADDR = 0x2F000.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-04 12:48 
Не в сети

Зарегистрирован: 2017-ноя-02 12:37
Сообщения: 18
Организация: АО НИИ Субмикрон
Здравствуйте! Пытаюсь для ВЕ81Т запустить код из области памяти, начинающейся с адреса 0x0100_0000. Обращался к Вам в техподдержку - получил файл алгоритма программирования "1986BE81_RAM_OTP.FLM". При попытке загрузить пользовательский код, в Keil появляется сообщение: "Flash Timeout. Reset target and try again". Настройки проекта прикрепил к сообщению. В ОЗУ с адреса 0x2000_0000 все работает.


Вложения:
[ attachment ]
download.jpg [ 63.9 КБ | 5912 просмотров ]
[ attachment ]
debug.jpg [ 91.76 КБ | 5912 просмотров ]
[ attachment ]
target.jpg [ 87.21 КБ | 5912 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-07 14:46 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 470
Организация: Milandr
Откуда: ПКК "Миландр"
В высланном Вам файле использовался HSE0, которого у Вас видимо нет. Отсюда бесконечный цикл ожидания.

Попробуйте прилагаемый вариант

Вариант не рабочий, удален.


Последний раз редактировалось Vasiliy 2017-ноя-08 11:03, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-07 16:22 
Не в сети

Зарегистрирован: 2017-ноя-02 12:37
Сообщения: 18
Организация: АО НИИ Субмикрон
HSE у нас действительно не задействован, но с новым файлом такая вот ошибка:
Programming Failed!
Cannot access Memory (@ 0xe000edf0, Read, Acc Size: 4 Byte)
Error: Flash Download failed - "Cortex-M4"
Flash Load finished at 16:18:23


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-07 19:13 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 724
Откуда: г. Санкт-Петербург
Lab221 писал(а):
HSE у нас действительно не задействован, но с новым файлом такая вот ошибка:
Programming Failed!
Cannot access Memory (@ 0xe000edf0, Read, Acc Size: 4 Byte)
Error: Flash Download failed - "Cortex-M4"
Flash Load finished at 16:18:23
Попробовал загрузится через ULINK с выложенным FLM (до этого отладчик не использовал, грузился через UART)
Получил аналогичную ситуацию - Cannot access Memory (@ 0xe000edf0, Read, Acc Size: 4 Byte)


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-08 11:02 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 470
Организация: Milandr
Откуда: ПКК "Миландр"
Извиняюсь за путаницу, прошлый вариант действительно оказался не рабочим, уход с HSE0 был выполнен не корректно.

Выкладываю исправленный и проверенный на демо-плате вариант с тактированием от HSI. Предыдущие вложения удаляю для избежания недоразумений.


Вложения:
Комментарий к файлу: FLM для СОЗУ 1986ВЕ8Т
1986BE81_SRAM.zip [5.25 КБ]
190 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-08 12:55 
Не в сети

Зарегистрирован: 2017-ноя-02 12:37
Сообщения: 18
Организация: АО НИИ Субмикрон
У нас заработало, спасибо!


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-16 15:40 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
Подскажите, как настроить Keil, чтобы можно быть смотреть ETM trace в BE81T?
Keil ULINK Pro есть, окно настроек следующее:
[ img ]
При запуске проекта, окна Trace Data и т.д. пустые, в них ничего не появляется.
Проект работает на 24 МГц.
Никогда с этой штуковиной не работал.


Вернуться к началу
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-18 22:12 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 42
В общем, как я понимаю, необходим файл инициализации для режима Trace для этого процессора.
Не подскажете, где его можно взять?


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 129 сообщений ]  На страницу « 14 5 6 7 8 9 »

Часовой пояс: UTC+03:00


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

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


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB