Я пишу драйвер ядра Linux для сторожевого таймера с использованием внутренних регистров процессора и выделенное место в (постоянном) ОЗУ для хранения отладочной информации в случае сброса с помощью сторожевого таймера.Как сопоставить ресурсы двух устройств в одном драйвере ядра Linux с использованием дерева устройств?
В старом мире у меня было два ресурса типа IORESOURCE_MEM
в моем файле платы: внутренние регистры (базовый адрес внутренних регистров плюс смещение) и местоположение в ОЗУ (абсолютный адрес памяти).
Я мог бы получить доступ к ним через platform_get_resource()
с соответствующим индексом, а затем я мог бы переназначить.
В новом мире с деревом устройств мой узел для сторожевого таймера находится в домене внутренних регистров процессора, и я могу получить к ним доступ без проблем.
Но как мне добавить место в памяти в ОЗУ? Базовый адрес ОЗУ отличается от внутренних регистров CPU, поэтому я не могу просто добавить еще один диапазон в запись «reg» (например, reg = <0x20300 0x408>, <0x3BFFE000 0x1000>;
). Возможно, мне нужно добавить новое «устройство»?
PRAM {
#address-cells = <1>;
#size-cells = <1>;
PRAM0: Watchdog_Crash_Debug_Context {
reg = <0x3BFFE000 0x1000>;
};
};
Но как я могу ссылаться на это в драйвере сторожевого устройства? Или в записи дерева сторожевого устройства?
Версия для Linux - 4.1.18.
аппаратное обеспечение сторожевого таймера? – jgr208
Аппаратный сторожевой таймер (на Marvell Armada XP) –