Всем привет!
Пост больше для истории, проблема была решена.
Мы используем один DDR контроллер, на котором установлено две микросхемы памяти MT41K512M16VRP-107 по 1ГБ. Но система видит только 1ГБ. Есть ли какие-то ограничения у контроллера DDR на объем памяти? Если нет, то хотелось бы рекомендаций для изменения инициализации контроллера DDR в загрузчике u-boot.
Ответ ЭЛВИСа был следующем: контроллеры DDR не поддерживают объем больше 1.5GB (это на 100% правда), поправьте секцию memory в dtsi (это не работает).
Правка секции dtsi не работает, ни u-boot, ни kernel. А что же работает?
В нашей плате мы используем только DDR#0. Плата сделана на базе салютов ПМ и ОМ.
Для того чтобы увидеть в u-boot и Linux объем 1.5GB (2GB вы не увидите можете не пытаться, все повиснет) требуется следующее:
- Исправить в файле mcom02-defconfig-src-linux-5-4/u-boot/elvees/common/board.c две строчки:
заменяем
gd->bd->bi_dram[0].size = PHYS_SDRAM_0_SIZE;
на
gd->bd->bi_dram[0].size = 0x60000000;//PHYS_SDRAM_0_SIZE;
заменяем
gd->ram_size = PHYS_SDRAM_0_SIZE;
на
gd->ram_size = 0x60000000;//PHYS_SDRAM_0_SIZE;
- В mcom02-defconfig-src-linux-5-4/u-boot/board/elvees/salute-pm/salute-pm.c делаем правку, а именно заменяем cfg->common.rows = 32768; на cfg->common.rows = 65536;//32768;
Компилируем u-boot, заливаем на флэшку и видим 1.5GB. Хотелось бы все два, но дареному коню насильно мил не будешь.
После этого у нас ушли еще две проблемы, стал корректно в Linux инициализироваться Ethernet и USB в части DMA.
Возможно есть более изящное решение, но нам не до него.)
Всем, спасибо!
