LINUX.ORG.RU

Вопрос по настройке RAM-памяти в uboot

 


0

1

Доброго времени суток. У меня есть отладочная плата с процессором alwinner a33 с ядром линукс и 1гб оперативной памяти. Нужно перенести прошивку на плату с 2гб оперативной памяти и тем-же процом.

Направьте меня, пожалуйста, в нужном направлении. В какой части нужно перенастроить uboot, что бы он загрузил плату с другой оперативной памятью? Нужно загрузчик с определенными настройками перекомпилировать?

Спасибо.


а попробовать не судьба? вероятнее всего - там автодетект объема памяти, а не зашитая в убут константа.

если увидит всего гиг - ну что ж, тогда конфиг убута смотреть.

NiTr0 ★★★★★
()

Я не понял, как понять перенести прошивку? Она на microsd же

sqq
()

Нужно перенести прошивку на плату с 2гб оперативной памяти и тем-же процом.

Что это за загадочная прошивка такая, которую надо «переносить»?

Настройкой контроллера памяти в 99% случаев занимается проприетарный блоб, который обычно содержится в образе загрузчика для sd-карточки.

zloy_starper ★★★
()
Ответ на: комментарий от Dark_SavanT

сфигали - не бывает? на мипсах все именно так. с олвинеровскими армами как-то не сильно сталкивался, не нужны были.

NiTr0 ★★★★★
()
Ответ на: комментарий от zloy_starper

Китайские коробки с 3ГБ памяти на плате, из которых ОС использует 2Г. Не намекают на кое-чего? Были душещипательные истории совсем недавно. Всё как положено, на плате 3Г. Прошивка видит 2.

Deleted
()

в конфигурационном файле объём памяти настраивается обычно

запускаешь make menuconfig в корневой директории с исходниками u-boot и там в менюшках ищешь, где объём памяти задаётся, сохраняешь, пересобираешь, профит

можно дефолт в конфиге поменять потом

Нужно загрузчик с определенными настройками перекомпилировать?

да

Harald ★★★★★
()

Нужно перенести прошивку на плату с 2гб оперативной памяти и тем-же процом.

а память такая же? В смысле производитель, модель чипа. Если нет, то ещё и все тайминги вручную в исходниках задавать придётся.

Harald ★★★★★
()
Ответ на: комментарий от NiTr0

а попробовать не судьба? вероятнее всего - там автодетект объема памяти, а не зашитая в убут константа.

откуда на одноплатниках может быть автодетект объёма памяти, это же не десктоп

Harald ★★★★★
()
Ответ на: комментарий от NiTr0

тебе надо знать тайминги и организацию банок в чипах, в общем случае это непредсказуемо.

в частном случае, на dimm стоит i2c eeprom в котором эта инфа есть.

на тех мипсах с которыми я сталкивался были гвоздями прибиты константы в коде и обмазано ифдефами.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Harald

а что сложного-то? автодетект обема памяти на десктопах был еще во времена, когда SPD даже и не пахло.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

может там на занятых слотах контакты замыкались )

Harald ★★★★★
()
Ответ на: комментарий от Dark_SavanT

тайминги допустим могут быть забиты, организация - какбы пофиг, проверить живет ли кто на этом CS - не высшие материи.

на ралинках/медиатеках объем памяти детектируется автоматом, страпами только ширина шины указывается. тайминги ессно зашиты.

NiTr0 ★★★★★
()
Ответ на: комментарий от Harald

записать байт и проверить, прочитался он или нет - много ума не надо, это даже 8086 умели, у которых память вообще не в слотах была, а просто микрухами набивалась в плату.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

записать байт и проверить, прочитался он или нет

этот байт может удержаться на ёмкостях пустых линий, не подключённых ни к чему

Harald ★★★★★
()
Ответ на: комментарий от Harald

не может, в принципе. хотя бы потому что «пустые линии» подключены к терминирующим резисторам.

NiTr0 ★★★★★
()
Ответ на: комментарий от Harald

а они всегда подключены. без них современная память в принципе работать не может. а на всякой там обычной DRAM - там вместо терминирующих резисторов был pull-up.

ну и да, эта «нерешаемая проблема» решается записью не одного, а аж целых двух байт (вернее, слов), разных, и последующим их чтением.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

ну и да, эта «нерешаемая проблема» решается записью не одного, а аж целых двух байт (вернее, слов), разных, и последующим их чтением.

а ещё проверить, не перезаписались ли эти два байта в первом чипе памяти, потому что шина адреса делает wrap :)

Harald ★★★★★
()
Ответ на: комментарий от NiTr0

а ещё некоторые тайминги контроллера могут зависеть от общего объёма подключённой памяти

Harald ★★★★★
()
Ответ на: комментарий от zloy_starper

о, что, медперсонал снова бухает и к компьютеру пациенты прорвались?

slapin ★★★★★
()

если топология памяти совпадает, можно попробовать без перекомпиляции запустить и посмотреть.

Если это сборка с официальным SDK, то там используется прелоадер, который конфигурит память, берет он настройки из файла, лежащего рядом или из себя самого. Во втором случае в нем захардкожена таблица параметров памяти, и выбирается только номер в таблице, и если твоей памяти в таблице нет - облом. Тогда нужно искать сырцы прелоадера и добавлять туда свою память. Стоит сходить погуглить на linux-sunxi.org и в списке рассылки чтобы найти нужные исходники. В случае если u-boot используется штатный, то все в конфиге u-boot'а делается и просто пересобрать u-boot надо. Короче, читайте доки, они рулез. Здешних кадров лучше не слушать - запутают, заведут в лес и ограбят. Я allwinner'ами немного занимаюсь, меня можно немного поспрашивать в контакт в профиле. Сюда лучше не писать. Но я использую только открытые тулы, штатный SDK давно забыт.

slapin ★★★★★
()
Ответ на: комментарий от NiTr0

кек. там в даташите сказано, вот константы для такой памяти, вот константы для такой. ищите где хотите, не наши проблемы

организация - какбы пофиг

Вот в голос. DRAM контроллеру необходимо знать rows*columns чтобы раскладывать байтики кошерно. То что тебе медиатек не дал крутилок, а дал несколько доступных вариантов + ddr/sdr - ну такоэ, это не значит что так везде.

Это конечно не так чтобы сложно все эти константы посчитать, надо просто сесть с даташитом на проц и память и внимательно посчитать знаения для десятка регистров. У норальных производителей чипов есть экселина которая тебе это всё сразу выдаст. Но один раз это сделать надо и руками, просто чтобы понимать что кроется за этими непонятными значениями.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от NiTr0

если знатно накосить, может оказаться что ты пишешь не то и не туда. особенно знатно можно накосить на таймингах, когда вроде всё работает, а под нагрузкой раз и не работает.

А, да, иногда шина данных делится пополам на две банки, а адрес параллелится. Там CS один на обе банки будет.

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от Dark_SavanT

Прочитал http://linux-sunxi.org/Device_Tree Мне, получается, нужно вручную прописать исходный код Device Tree?

Нашел Device Tree для платы, но там я не вижу каких-то конкретных данных о планке памяти. Может быть я не там ищу или U-boot сам все онлайн настраивает?

miphid
() автор топика
Ответ на: комментарий от Harald

Не нашел никаких настроек для памяти в menuconfig. Искал в разделах Device Tree Control, Device Drivers. В Device Drivers есть подраздел Memory Drivers, но он пустой. В Device Drivers есть такие пункты касательно планок памяти: Memory Controller drivers ---- Multifunction device drivers ---> MMC Host controller Support ---> MTD Support ---> NAND Device Support ---> SPI Flash Support ---> Ничего касательно DRAM

miphid
() автор топика
Ответ на: комментарий от Dark_SavanT

DRAM контроллеру необходимо знать rows*columns чтобы раскладывать байтики кошерно.

внезапно - это ЭЛЕМЕНТАРНО определяется софтом. и элементарно определялось еще 35 лет назад. перебор колонок/строк с записью-чтением значений - примитивно же.

и, повторюсь, даже SDRAM первая вполне себе работала без SPD. на писюках, да.

NiTr0 ★★★★★
()
Ответ на: комментарий от Dark_SavanT

если знатно накосить, может оказаться что ты пишешь не то и не туда. особенно знатно можно накосить на таймингах, когда вроде всё работает, а под нагрузкой раз и не работает.

тайминги - они какбы бутлодырем задаются, да. но на объем памяти и его детект они никак не влияют.

А, да, иногда шина данных делится пополам на две банки, а адрес параллелится. Там CS один на обе банки будет.

и что это меняет? команды чипам памяти даются-то по адресным линиям, а не по линиям данных.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

но зачем это всё если у тебя память прибита гвоздями к борде. А если не прибита на ней есть SPD?

даже SDRAM первая вполне себе работала без SPD. на писюках, да.

Ты видимо забыл что там было всё же попроще с таймингами, и микрухи были стандартные, а не что попало. sdram вообще сильно проще в плане крутилок.

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.