Как я могу сжать область ОС в оперативной памяти через U-boot? - PullRequest
0 голосов
/ 03 января 2012

Насколько я понимаю, после загрузки ПК / встроенной системы ОС будет занимать всю область ОЗУ, ОЗУ будет выглядеть следующим образом:

OS region occupy the entire RAM

Это означает, что во время работы программы, которую я пишу, все переменные, динамическая память, выделенная в стеках, кучах и т. Д., Останутся внутри региона. Если я использую Firefox, Paint, Gedit и т. Д., Они также будут работать в этом регионе. (Это понимание правильно?)

Однако я бы хотел уменьшить область ОС. Ниже приведена иллюстрация того, как я хочу разделить оперативную память:

OS region does not occupy the entire RAM, leaving some physical memory for my usage

Причина, по которой я хочу это сделать, заключается в том, что я хочу сохранить некоторые данные, полученные извне через драйвер, в Custom Region в фиксированном физическом месте, и тогда я смогу получить к нему доступ напрямую из пространства пользователя, не используя copy_to_user().

Я думаю, что это можно сделать, настроив u-boot, но у меня нет опыта работы с u-boot, может кто-нибудь дать мне несколько указаний, с чего начать, например: мне нужно изменить источник u -boot, или изменения environment variables u-boot будет достаточно?

Или есть какой-нибудь альтернативный способ сделать это?

Любая помощь очень ценится. Спасибо!

p / s: я использую процессор TI ARM и загружаюсь с SD-карты, я не уверен, имеет ли это значение.

Ответы [ 3 ]

3 голосов
/ 10 января 2012

Платформа ARM.min_addr и max_addr не будут работать на этих платформах, поскольку они предназначены только для Intel.

Для платформы ARM попробуйте взглянуть на параметр ядра "mem = size @ start".Прочтите документацию / kernel-parameters.txt и arch / arm / kernel / setup.c.Эта опция доступна в большинстве новых кодов Linux (т. Е. 2.6.XX).

3 голосов
/ 03 января 2012

Вам необходимо установить следующие параметры:

max_addr=some_max_physical
min_addr=some_min_physical

для передачи в ядро ​​через uboot в переменной окружения u-boot 'bootargs'.

0 голосов
/ 15 августа 2012

Недавно я попытался сделать обратное - другими словами, заставить Linux использовать дополнительную память в моей системе - хотя я использую Barebox, а не u-boot на платформе OMAP4.

Я обнаружил (немного к моему удивлению), что как только загрузчик первого этапа Barebox MLO узнал о дополнительной оперативной памяти, ядро ​​затем обнаружило и использовало ее также без каких-либо загрузочных меток ,Так как размер памяти нигде не передается в строке загрузки, я могу только предположить, что ядро ​​проверяет отображения памяти, установленные загрузчиком, для определения размера ОЗУ.Это говорит о том, что модификация u-boot, чтобы не отображать всю оперативную память, - это путь.

Что касается boot-args, было время, когда вам рекомендовалось выделить часть оперативной памяти (используемой буфером кадров?) В системах OMAP4, используя загрузочную строку.До сих пор неясно, нужно ли это по-прежнему.

...