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

 
 
> Как SDRAM-память работает вместе с микроконтроллером?, микроконтроллер - AT91SAM9260
h0rr0rr_drag0n
сообщение Jan 22 2012, 20:47
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 29-10-09
Пользователь №: 53 281



Дано - у меня есть отладочная плата SK-AT91SAM9260-SIM300 от стартеркита (http://starterkit.ru/html/index.php?name=s...=view&id=28).
На ней стоит микроконтроллер - AT91SAM9260. К нему подключены две микросхемы - SDRAM память от самсунга (http://www.samsung.com/global/system/busin...trial_rev11.pdf).

Успешно сломал мозг, пытаясь понять как работает эта SDRAM-память, в частности, как она взаимодействует с микроконтроллером (AT91SAM9260) и как с ней работать программно. Ниже, много странных вопросов...

0) Где бы почитать про особенности организации работы SDRAM с CPU/МК? Где описано, как все эти номера строк и столбцов преобразовываются в обычные адреса, что происходит когда приложение хочет записать/прочитать что-то по какому-то адресу в SDRAM и так далее...?

1) Где узнать размер слова, которым память обменивается с микроконтроллером? Размер слова должен совпадать с разрядностью шины данных? Или же размер слова может произвольно варьироваться? Если да, то как его вычислить?

2) Количество строк и столбцов всегда жестко задается в даташите или же эти величины можно варьировать?

3) В документации на мою отладочную плату написано, что на ней установлено 64 Мб памяти. На самом деле там стоят 2 микросхемы по 256 мегабайт каждая. Они имеют 16-битную шину данных, но подключены к микроконтроллеру через 32-битную шину - D[0:15] к шине данных одной микросхемы и D[16:31] к шине данных второй. Таким образом, как я понял, младшие 16-бит слова физически лежат в одной микросхеме, а старшие в другой. Итак, я имею 256 Мб памяти на плате.
Еще, в документации написано, что память 4-х банковая, откуда я и получаю 64 мегабайта памяти. Но мне непонятно, откуда взялось это деление на банки и почему я не могу использовать сразу все 256 мегабайт??

4) Я правильно понимаю, что судя по описанию адресного пространства для AT91SAM9260 я могу обращаться к SDRAM, начиная с адреса 0x2 000 0000 и заканчивая адресом 0x2400 0000 (для 64Мб = 0x4000 000)? А трансляцией из подобных "обычных" адресов в номера строк и колонок занимается контроллер-SDRAM?


5) Есть ли какие-то особые требования к размещению исполняемого кода в SDRAM? Например, должен ли он располагаться в в начале строки, банка? Поясняю причину вопроса - у меня есть самосборное ядро линукса, несжатое. Заметил, что если его разместить в SDRAM по адресу 0x2040 0000, то оно грузится, если же по адресу 0x2000 8000, то оно не грузится. Какая может быть разница между этими двумя адресами для ядра? Ему не все ли равно, главное лишь бы места хватало и ничего не перекрывалось?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 14:14
Рейтинг@Mail.ru


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