Добрый день!
Регистры SOC (System-On-Chip) отображаются в адресном пространстве памяти операционной системы Linux, и это достигается с помощью механизма, называемого "памятью устройства" (memory-mapped I/O). Ваша структура устройства в Device Tree Source (DTS), которую вы привели, содержит информацию о регистре, в том числе его адреса.
### Определение адресов регистров
После загрузки операционной системы и инициализации устройств, адреса регистров можно обнаружить в нескольких местах:
1. **Device Tree**: Ваша запись в DTS описывает адреса регистров WDT (watchdog timer) как `reg = <0x00 0xfe600000 0x00 0x100>;`. Это значит, что регистры для WDT находятся по адресу `0xfe600000`, а их размер – `0x100` байт.
2. **Linux Kernel**: Когда устройство инициализируется, информация из Device Tree загружается в ядро Linux, и драйвер устройства получает доступ к этим адресам. Обычно адреса регистров отображаются в виртуальной памяти с использованием функции `ioremap()`.
3. **Драйверы устройства**: В драйверах, написанных для вашего устройства, вы можете найти код, который использует `ioremap()` для сопоставления физических адресов с виртуальными адресами, доступными в драйвере. Например:
```c
void __iomem *wdt_base;
wdt_base = ioremap(0xfe600000, 0x100);
```
### Определение, являются ли адреса регистрами SOC
Чтобы убедиться, что определенный адрес в памяти принадлежит регистрам SOC, вы можете использовать следующие шаги:
1. **Сравнение с картой адресов**: Составьте карту адресов на основе документации SOC. Каждое устройство в системе будет иметь назначенный диапазон адресов. Сверьтесь с ним, чтобы определить принадлежность.
2. **Доступ к `/proc/iomem`**: Файл `/proc/iomem` в Linux содержит информацию об используемых адресах памяти и их назначениях. Вы можете просмотреть этот файл для проверки, какие устройства отображены на различных адресах. Например:
```bash
cat /proc/iomem | grep fe600000
```
3. **Используйте утилиты**: Существуют утилиты, такие как `devmem`, которые позволяют читать и записывать в произвольные адреса физической памяти. Это полезно, но следует проявлять осторожность, так как некорректные операции могут привести к нестабильности системы.
Рекомендуется ознакомиться с документацией вашего конкретного SOC (в данном случае Rockchip RK3568), чтобы найти детальные описания адресов и регистров. Это позволит точно определить, какие адреса являются регистрами и как они формируют адресное пространство памяти в вашей системе.