реклама на сайте
подробности

 
 
> AT91SAM9G45, SMC: Asynchronous Page Mode read, контроллер не поддерживает заявленный режим
vugluskr
сообщение Nov 9 2010, 20:31
Сообщение #1


High speed digital design
***

Группа: Свой
Сообщений: 413
Регистрация: 6-10-09
Пользователь №: 52 786



Конфигурация платы:
МК AT91SAM9G45 подключен к FPGA (Xilinx Spartan-6) к шине EBI1, связб осуществляется через SMC. На ФПГА заведены сигналы:
EBI1_A[25..1]
EBI1_DATA[15..0]
EBI1_NCS2
EBI1_NWE
EBI1_NRD
Пишет/читает нормально. Но вот заявленный режим Asynchronous Page Mode не поддерживается (см. документ doc6438.pdf page218).
Конфигурация контрольного регистра для CS2
Код
    AT91C_BASE_SMC->SMC_CTRL2  = (        AT91C_SMC_NWAITM_NWAIT_DISABLE
                                                              | AT91C_SMC_TDFEN
                                                                  | ((0x1 << 16) & AT91C_SMC_TDF)
                                  | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS
                                  | AT91C_SMC_PMEN
                                  | (0x3 << 28));//32 bytes burst READ


В поле PS данного регистра (биты 29..28) задается режим бурст чтения по 4, 8, 16, 32 байта. Соответственно на 16 битной шине это должно соответствовать 2,4,8,16 транзакциям чтения (смене адреса). Реальноже работает только PS = 0x0/0x1. Если задавать 0x2/0x3 - производится только 8 транзакций чтения.
На рисунке сигналы с шины, ловим ЧипСкопом внутри ФПГА, режим контроллера - считываем 32 байта (т.е. 16 транзакций):


соответствие сигналов на рисунке сигналам на шине процессора:
EBI1_A - addr
EBI1_DATA - bus_data
EBI1_NCS2 - bus_cs2
EBI1_NWE - bus_nwe
EBI1_NRD - bus_nrd

Это я что-то делаю не так или действительно что-то с контроллером

p.s. у меня не ES, а нормальная версия микроконтроллера


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrAlex
сообщение Nov 16 2010, 06:14
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 15-10-10
Из: г. Москва
Пользователь №: 60 179



Это ж чисто софтверная функция, реализация зависит от компилятора, ничто не мешает ее в ассемблере посмотреть.
Go to the top of the page
 
+Quote Post
vugluskr
сообщение Nov 16 2010, 09:45
Сообщение #3


High speed digital design
***

Группа: Свой
Сообщений: 413
Регистрация: 6-10-09
Пользователь №: 52 786



Цитата(MrAlex @ Nov 16 2010, 09:14) *
Это ж чисто софтверная функция, реализация зависит от компилятора, ничто не мешает ее в ассемблере посмотреть.


Причем здесь ассемблер? Вы вопрос и времянки видели?

305: memcpy(tmp,FPGA_CS2,32);
0x00300264 E3A02020 MOV R2,#0x00000020
0x00300268 E1A01005 MOV R1,R5
0x0030026C E1A00006 MOV R0,R6
0x00300270 EB0004EE BL __rt_memcpy_w(0x00301630)


соответственно
__rt_memcpy_w:
0x00301630 E92D4010 STMDB R13!,{R4,R14}
0x00301634 E2522020 SUBS R2,R2,#0x00000020
0x00301638 3A000005 BCC 0x00301654
0x0030163C E8B15018 LDMIA R1!,{R3-R4,R12,R14}
0x00301640 E2522020 SUBS R2,R2,#0x00000020
0x00301644 E8A05018 STMIA R0!,{R3-R4,R12,R14}
0x00301648 E8B15018 LDMIA R1!,{R3-R4,R12,R14}
0x0030164C E8A05018 STMIA R0!,{R3-R4,R12,R14}
0x00301650 2AFFFFF9 BCS 0x0030163C
0x00301654 E1B0CE02 MOVS R12,R2,LSL #28
0x00301658 28B15018 LDMCSIA R1!,{R3-R4,R12,R14}
0x0030165C 28A05018 STMCSIA R0!,{R3-R4,R12,R14}
0x00301660 48B10018 LDMMIIA R1!,{R3-R4}
0x00301664 48A00018 STMMIIA R0!,{R3-R4}
0x00301668 E8BD4010 LDMIA R13!,{R4,R14}
0x0030166C E1B0CF02 MOVS R12,R2,LSL #30
0x00301670 24913004 LDRCS R3,[R1],#0x0004
0x00301674 24803004 STRCS R3,[R0],#0x0004
0x00301678 012FFF1E BXEQ R14


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016