Пара дурацких вопросов про системы на ARM и ядро
Добрый вечер, господа.
Возникло несколько нубских вопросов.
1) Вот есть у нас какой-нибудь SoC на ARMv8 (для определенности). Есть ядро для него и есть device tree blob. А где физически хранится информация о карте памяти? Т.е. одно из ядер CPU собирается исполнить, например, store по некоторому адресу, и уже на уровне L1 кэша должно быть известно, что это за адрес - оперативка или что-нибудь еще, TLB и MMU должны знать, какие у страницы, содержащей этот адрес, параметры (cacheable/non-cacheable, access ordering и т.п.). А откуда они это знают? Эта логика только софтварная, т.е. кроме загрузки dtb в память и передачи ядру указателя на него, ничего не нужно больше, или эта логика и в железе есть, и, скажем, L1, когда видит store, интересуется у кого-то, что это за адрес? ARM ARM листал, но сходу найти ответ, увы, не смог:(
2) Допустим, собрал я ядро для этого SoC'а. Но загрузчик хочу использовать какой-нибудь совсем тривиальный, поэтому с помощью objcopy сделал из elf'ника binary, потеряв при этом возможность по произвольному адресу ядро класть. И есть какой-нибудь способ, кроме ручной правки linker-скриптов, этот адрес задать? Беглый поиск показал, что для uboot'а это можно переменной задать, но если я не хочу с ним связываться, что мне делать?
Спасибо большое.