Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 92 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-июн-22 18:47 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 22
Возвращаюсь к вопросу работы с внешней 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
Сообщения: 1271
Откуда: АО "ПКК Миландр"
А пишите в ранее не проинициализированную память ? Т.е. там изначально случайные данные ?


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

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

Да.


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

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

Да.

Перед тем как писать 8-ми или 16-ти разрядные данные в память необходимо память проинициализировать 32-х разрядными данными.


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

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

Да.

Перед тем как писать 8-ми или 16-ти разрядные данные в память необходимо память проинициализировать 32-х разрядными данными.


а в каком режиме проводить инициализацию?
Вот я попробовал записать два 32 битных нуля, но на каждую операцию записи опять вижу увеличение счетчика ошибок.
Или нужно проинициализировать область не в ECC режиме?

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


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

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 22
Товарищи!
У кого-нибудь есть положительный опыт работы на этом процессоре с внешней 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
Сообщения: 15
Здравствуйте! Пытаюсь для ВЕ81Т запустить код из области памяти, начинающейся с адреса 0x0100_0000. Обращался к Вам в техподдержку - получил файл алгоритма программирования "1986BE81_RAM_OTP.FLM". При попытке загрузить пользовательский код, в Keil появляется сообщение: "Flash Timeout. Reset target and try again". Настройки проекта прикрепил к сообщению. В ОЗУ с адреса 0x2000_0000 все работает.


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

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

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

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

_________________
Отдел технической поддержки support@milandr.ru


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

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

Зарегистрирован: 2017-ноя-02 12:37
Сообщения: 15
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
Сообщения: 641
Откуда: г. Санкт-Петербург
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
Сообщения: 49
Откуда: ПКК "Миландр"
Извиняюсь за путаницу, прошлый вариант действительно оказался не рабочим, уход с HSE0 был выполнен не корректно.

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


Вложения:
Комментарий к файлу: FLM для СОЗУ 1986ВЕ8Т
1986BE81_SRAM.zip [5.25 КБ]
Скачиваний: 20

_________________
Отдел технической поддержки support@milandr.ru
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы с отладкой 1986BE8T
СообщениеДобавлено: 2017-ноя-08 12:55 
Не в сети

Зарегистрирован: 2017-ноя-02 12:37
Сообщения: 15
У нас заработало, спасибо!


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

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


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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 92 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

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


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

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


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

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