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


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=


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


-1

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

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


4
/ dev / shm почти не использует память, если она пуста. Он начнет использовать ram только после загрузки в него файлов.
Патрик

/ dev / shm - не что иное, как реализация традиционной концепции разделяемой памяти. Это эффективный способ передачи данных между программами. Одна программа создаст часть памяти, к которой могут обращаться другие процессы (если разрешено). Это приведет к ускорению работы в Linux.
Satish
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.