Siemens Sgold: Анализатор Ввода-Вывода

Нюхач — специальная программа для анализа и перехвата сетевого трафика, передачи данных через интерфейсы и многое другое.

В этом случае мы будем следить за операциями (чтение и запись) с портами ввода-вывода.

на примере линейного телефона Сименс SЗолото и я постараюсь объяснить, как все это работает.

Siemens SGold: анализатор ввода-вывода



Предисловие

Многие сразу задаются вопросом о целесообразности и полезности этой идеи, ведь эти телефоны давно устарели.

Во-первых, давайте рассматривать телефон как просто устройство, имеющее микроконтроллер.

ARM926EJ-S (без документации) и мы хотим сделать свою прошивку для своих нужд, используя полученные данные.

Во-вторых, научный интерес!

Теория

Итак, что мы имеем? И у нас есть микроконтроллер PMB 8875 S-GoldLite на базе процессора Intel, то есть ARM9 .

И как любой нормальный микроконтроллер, внутри него есть устройства и готовые интерфейсы, такие как УСАРТ , ССК , I2C , ФАПЧ , РТК , таймеры, извините за выражение, ЕВС (External Bus Unit) и другие страшные буржуазные аббревиатуры.



Порты ввода-вывода
Как отмечалось ранее, имеется несколько устройств и интерфейсов.

А в 4-гигабайтном (32-битном) адресном пространстве им отведены свои диапазоны.

Да, адресное пространство нашего микроконтроллера физически разделено на: 0x00000000-0x00003FFF - СРАМ №1 0x00080000-0x00097FFF - СРАМ №2 0x00400000-0x0040FFFF - Загрузочный ПЗУ 0xF0000000-0xFFFFFFFF — Порты ввода/вывода, встроенные регистры устройств А внешнюю ОЗУ и ПЗУ можно вставить по свободному физическому адресу с помощью пресловутой ЕВС .

Так, например, для устройства УСАРТ0 диапазон выделен Ф1000000-Ф1000084 .

В рабочем состоянии это выглядит примерно так:

Siemens SGold: анализатор ввода-вывода

Каждый СЛОВО РУКА равен 4 байтам) в этом диапазоне находится регистр для управления этим интерфейсом.

То есть, записывая определенные значения в определенные регистры, мы передаем на устройство команды или данные, и читая из них получаем данные и проверяем состояния.

Я забыл это сказать УСАРТ0 (Универсальный синхронный асинхронный приемник и передатчик) мы используем в качестве передатчика и приемника по кабелю, грубо говоря, COM-порт , но с низким напряжением.

И давайте подробнее рассмотрим процесс передачи 1 байта в самом простом случае:

   

#define USART_REG(a)

Теги: #siemens #elf #arm #io #C++ #обратное проектирование
Вместе с данным постом часто просматривают: