LINUX.ORG.RU

64-битная адресация в 32-битном arm процессоре

 , ,


0

2

Всех приветствую.

Как обычно, я познаю окружающий мир. Сейчас, почитывая DT на один arm (в данном случае это am5728), обратил внимание на то, что местами ranges там не 3 числа, а 4.

Пошел рыть откуда там берется четвертое. Нашел (не без помощи дипсикР1), что если у парента #address-cells = <0x02>, то в потомке адрес на шине парента будет из двух чисел u32 (что, очевидно логично).

Пошел дальше искать, а где у нас у парента адрес 64-бита. И оказалось, что в корне DT указано:

#address-cells = <0x02>;
#size-cells = <0x02>;

Ну хорошо, указали и ладно. Но теперь меня терзает вопрос, зачем? Может там где-то в SoC-е разрядность шины адреса больше 32? Но полистал TRM (не очень внимательно там, 8тыс страниц), ничего похожего не нашел.

ЗЫ. Сука!

MPU Memory Map
...
EMIF1_SDRAM_CS0  0x02_0000_0000  0x02_3FFF_FFFF  1GiB  EMIF1 CS0: Access to DDR
...
TILER_VIEW_0    0x01_0000_0000   0x01_1FFF_FFFF   512MiB   Natural view
...

Оставлю пост, для расширения кругозора.

Продолжаю наблюдение.

★★★★★

А теперь самое печальное.

Когда-то, когда я первый раз листал этот трм, я это все видел, просто забыл.

Скажу больше, в детстве, у меня была «микроша», которой я вторым этажом припаял еще 32КБ ОЗУ, а выбор страницы вывел на ВВ55А. Фактически, сделал 17 разрядный адрес памяти, при встроенном 16 разрядном.

Похоже это старческий маразм уже пришел. Грустно

yax123 ★★★★★
() автор топика
Ответ на: комментарий от yax123

На маразм не похоже. Мне кажется, такая организация адресного пространства преследует как минимум цель разграничения доступа с помощью MPU. Можеть быть эти старшие биты (Q8-Q15) упрощают реализацию самого MPU, например. Или генерацию прерывания если по этим адресам обращается кто-то, кому вообще-вообще туда нельзя. Учитая количество устройств, что напихали в SoC, выглядит как реализация какого-то требования по разграничению доступа.

dsl
()

так это арм, там куча легаси костылей вроде вот такой сегментной памяти

давно пора переходить на современный risc v

anonymous
()