LINUX.ORG.RU

Сообщения olegk0

 

Объем памяти

Форум — Linux-hardware

Здравствуйте.

Есть китайский тв бокс на arm amlogic s812, и 2G памяти на борту (4 чипа по 4 Gbit).
Есть ядро из родной прошивки и самосборное из официальных исходников amlogic, оба одной версии 3.10.33.
Есть DTS конфиг из родной прошивки в котором размер памяти указан 1G.

1. загружаю родное ядро с родной DTS - из boot log
...
a) Total memory is 2046 MiB
...
b) Built 1 zonelists in Zone order, mobility grouping on. Total pages: 212752
...
c) Memory: 64MB 16MB 1757MB = 1837MB total

2. загружаю родное ИЛИ самосборное ядро с измененным DTS(общий размер памяти выставил 2G)
...
Total memory is 2046 MiB
...
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 474896
...
Memory: 64MB 16MB 1781MB = 1861MB total

3. самосборное ядро с оригинальным DTS
...
Total memory is 1022 MiB
...
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 212752
...
Memory: 64MB 16MB 757MB = 837MB total

В итоге случай 2 сыпется дампами и глохнет 1 и 3 нормально загружаются, и в /proc/meminfo соответственно

MemTotal: 1871872 kB
и
MemTotal: 835104 kB

Меня терзают сомнения - действительно ли в родном ядре инициализируется 2G или это обманка, т.к.:
1. строка 1a похоже статическая
2. строка 1b говорит что памяти (212752*4096) = 870 Mb, но в строке 1c уже рисует под 2G

цифра строки 1b из исходников ядра (не родного) из
nr_free_zone_pages(gfp_zone(GFP_HIGHUSER_MOVABLE)); где
#define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | __GFP_HIGHMEM | __GFP_MOVABLE)

Кто что думает?

 , ,

olegk0
()

Выделить память под фреймбуффер

Форум — Development

Здравия всем есть ARM система на которой установлен linux на ядре из под андроида. В этом ядре есть фреймбуфер и есть к нему оверлей (устройства fb0 fb1), под фреймбуффер память резервируется ядром, а вот под оверлей память должна выделятся системой (в оригинале андроидом) и потом через IOCTL передаваться адрес этой памяти на fb1.

собственно вопрос - как выделить в пользовательском режиме эту память и получить реальный адрес для передачи в драйвер? или это невозможно (сложно) и лучше выделять память самим видео драйвером при загрузке - так у меня сейчас сделано(но хотел переделать потому-что оверлей этот использую только для вывода видео).

 

olegk0
()

RSS подписка на новые темы