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

 
 
> Побайтовое обращение к памяти., NiosII
slog
сообщение Nov 29 2008, 19:44
Сообщение #1


Знающий
****

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



Долблю Nios + внешнее ОЗУ в 32 разряда. Хочу писать в память байты а читать слова по 4 байта за раз. Че то не получается. Перепробовал всё и вообще запутался.

Выполняю запись по байтам
for(i=0; i<8; i++)
{
IOWR_8DIRECT(SRAM_BASE, i, i);
}

Потом читаю IORD_32DIRECT(SRAM_BASE, i); получаю
0x00000000
0x00000100
0x00020000
0x03000000

Если читаю IORD(SRAM_BASE, i); получаю
0x00000000
0x00000004

А КАК ПРОЧИТАТЬ 0x03020100 ? Всяко пробовал, не получается. Может дело в Native Address Alignment или Dynamic Bus Sizing? Только не врублюсь в чем разница если я пишу по всем адресам подряд байты, а читаю их потом по 4 за раз. Они же физически должны лежать в памяти как адрес 0 = 0x03020100, адрес 1 = 0x07060504 и т.д.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение Nov 30 2008, 04:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(slog @ Nov 30 2008, 01:44) *
А КАК ПРОЧИТАТЬ 0x03020100 ?

должны работать и IORD_32DIRECT(SRAM_BASE, i), и IORD(SRAM_BASE, i). они отличаются тем, что в первом случае смещение измеряется в байтах, а во втором в словах. т.е. будет либо
IORD_32DIRECT(SRAM_BASE, 0);
IORD_32DIRECT(SRAM_BASE, 4);
либо
IORD(SRAM_BASE, 0);
IORD(SRAM_BASE, 1);
может запись косячит? выведите
IORD_8DIRECT(SRAM_BASE, i);
плата своя или кит? сигналы правильно подключены?
про IORD/IOWR посмотрите в <io.h>
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 17:32
Рейтинг@Mail.ru


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