Увеличение объема памяти ядра

14

У меня есть встроенная плата с 512 МБ оперативной памяти под управлением Linux 2.6.29 и загрузчик UBoot. Но ядро ​​может использовать только 128 МБ оперативной памяти.

Я попытался изменить значение XCODE_MEMSIZE, которое, я думаю, определяет, сколько оперативной памяти использует ядро.

Когда я установил его на 512, ядро ​​вылетает при загрузке. Есть ли другой параметр конфигурации, который нужно изменить?

Тим
источник
Можете ли вы быть более конкретным в отношении упомянутой аварии? Что вы видите на экране? Есть ошибки?
Straphka
А что это за доска?
Жиль "ТАК - перестань быть злым"
На самом деле нужно предоставить более подробную информацию о «только использовать 128 МБ». Похоже, что-то где-то было ограничено (размер стека на пользователя и т. Д.).
полином
сколько памяти обнаруживает U-Boot? Он обнаруживает все 512 МБ?
свободолюбивый
Что cat /proc/cmdlineговорит вам на вашей доске?
Анкур Агарвал

Ответы:

3

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

  1. Попробуйте mem=параметр загрузки ядра . (Я думаю, что иногда память может быть доступна с неконтинентального адреса, поэтому вам, возможно, придется использовать что-то вроде этого, но адреса нужно будет проверять в зависимости от вашего состояния.

    mem = 512M @ 0 mem = 256M @ 0x80000000 mem = 256M = 0xc0000000

  2. У вас есть встроенная видеокарта? Это может убрать кусок вашего доступного барана. Если вы можете добраться до биоса или аналогичного, проверьте это.

@ смотрите параметры ядра для получения дополнительной информации оmem=

Manwe
источник
Возможно, вам потребуется указать значение менее 512 МБ - возможно, устройство или что-то находится по физическому адресу 0x20000000 (512 МБ) или рядом с ним в карте памяти платы, которую вы должны получить копию, чтобы узнать, где находится ОЗУ на вашей плате.
LawrenceC
1

Я думаю , вы должны увеличить RAM Diskразмер в вашем ядре.

Сатиш
источник
-1

В дополнение к другим постам о том, чтобы быть более конкретным, я бы также предложил размонтировать, /dev/shmесли он смонтирован. Это файловая система ramdisk и съедает ваш ram.

Также взгляните на sysctlкоманду в Linux. Делая что-то подобное, вы sysctl -w kernel.shmmax="<some number>"меняете ядро, пока оно работает.

Фредди
источник
4
/ dev / shm почти не использует память, если она пуста. Он начнет использовать ram только после загрузки в него файлов.
Патрик
/ dev / shm - не что иное, как реализация традиционной концепции разделяемой памяти. Это эффективный способ передачи данных между программами. Одна программа создаст часть памяти, к которой могут обращаться другие процессы (если разрешено). Это приведет к ускорению работы в Linux.
Satish