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

 
 
 
Reply to this topicStart new topic
> AT91SAM7E и внешняя SRAM, Чтение из SRAM побайтно (LDRB)
AndyBig
сообщение Oct 4 2008, 11:11
Сообщение #1


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



День добрый!
Не могу понять в чем дело: есть связка AT91SAM7SE и внешняя SRAM 512кБ х 16 бит 100 МГц.
Линкеру указано размещать код в младшую половину внешней SRAM, данные в старшую половину, стеки и коды прерываний - во внутреннюю SRAM, отмаппированную на нулевой адрес.
Программа выполняется нормально, и чтение и запись в SRAM проходит... Пока не понадобилось прочесть из нее побайтно (ассемблерная команда LDRB). Тут и начались фокусы - читается абсолютная фигня, даже близко не похожая на оригинальные значения.
Среда - IAR 5.11, память подключена к SMC и сконфигурирована как 16-битная:
Wait States (NWS) = 0
Wait State Enable (WSEN) = 1
Data Float Time (TDF) = 0
Byte Access Type (BAT) = 1
Data Bus Width (DBW) = 1
ACSS = 0
RWSETUP = 0
RWHOLD = 0

Что я не так делаю?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 4 2008, 13:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AndyBig @ Oct 4 2008, 13:11) *
Что я не так делаю?

Физически подключено точно правильно? Глупо, но тот-же самый A0 или что еще ни с чем не перепутан "для удобства". А как себя ведет в чисто восьмибитовом режиме?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Oct 4 2008, 13:16
Сообщение #3


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Проверял несколько раз: А0 контроллера (NBS0) подключен к NLB памяти, NWR1/NBS1 контроллера - к NUB памяти, A1-A18 контроллера - к A0-A17 памяти, NCS0 контроллера - к NCS памяти, NWR0/NWE - к NWE, NRD/CFOE - к NOE.
Для включения памяти в восьмибитный режим, как я понимаю, надо менять схематику?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 4 2008, 14:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AndyBig @ Oct 4 2008, 15:16) *
Для включения памяти в восьмибитный режим, как я понимаю, надо менять схематику?

Посмотрел. Да уж sad.gif с подключением от Atmel c использованием A0 в качестве nLB и сдвигающим адреса......
облом.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Oct 4 2008, 14:39
Сообщение #5


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Для удобства разводки у меня раскиданы невпопад линии адресов и линии данных, но это ведь никак не должно отражаться на логике работы...
Пробовал менять Waystates и RWSETUP,RWHOLD. Эффект проявляется только при значительном изменении Waystates начинает читаться другая фигня, но так же и близко не похожая на то, что в действительности лежит по этому адресу памяти...

Хм... Вру, перепутывание линий данных как раз и может отразиться, в принципе именно так оно отразиться и может... Кажется... :-/
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 4 2008, 14:46
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AndyBig @ Oct 4 2008, 16:39) *
Кажется... :-/

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Oct 4 2008, 15:14
Сообщение #7


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Цитата
При препутывании между байтами

Так и получилось... Благо, что октеты остались в кучах - младший октет контроллера попал на старший октет памяти и наоборот... По идее, достаточно будет поменять местами UB и LB. Сейчас попробую.

Точно, все заработало как надо.
Просто до этого статику использовал только с 8-разрядными контроллерами, в которых просто не бывает UB/LB, вот по инерции и тут соединил "как разведется" smile.gif
Спасибо за помощь! smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th June 2025 - 20:40
Рейтинг@Mail.ru


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