Работа с памятью на встроенных устройствах

Встроенное устройство под управлением Linux. Как правило, файловая подсистема устройства MTD используется для взаимодействия с флэш-памятью.

У меня есть несколько вопросов об управлении памятью на таких устройствах. Спецификация карты памяти устройства недоступна. Существует несколько методов доступа к памяти на встроенном устройстве, один из них — это прямой вызов адреса памяти, например, при прямой записи какого-либо значения в адрес памяти при отладке или использовании команды для чтения по физическому адресу:

show <hex address> <number of words to display>

Выполняет ли эта команда доступ к флэш-памяти NVRAM NOR или оперативной памяти устройства? Можно ли повернуть этот процесс вспять, т.е. найти адрес памяти, где «живет» та или иная настройка? Предполагая, что мы знаем конкретное значение и знаем, что значение хранится где-то в памяти. Всегда ли можно найти адрес?


person Community    schedule 24.02.2017    source источник
comment
Не ясно. Где вы хотите выполнить чтение? На уровне ядра или на уровне приложения?   -  person LPs    schedule 24.02.2017
comment
@LPs Из сеанса терминала можно читать и записывать данные в регистры (регистр MAC, регистр PHY), поэтому это уровень 1 OSI.   -  person    schedule 25.02.2017


Ответы (1)


Выполняет ли эта команда доступ к флэш-памяти NVRAM NOR или оперативной памяти устройства?

Да, команда работает для обоих типов памяти и, как правило, для любой другой памяти, которая указана в карте памяти ОС (т. е. памяти устройства PCI).

Можно ли повернуть этот процесс вспять, т.е. найти адрес памяти, где «живет» та или иная настройка? Предполагая, что мы знаем конкретное значение и знаем, что значение хранится где-то в памяти. Всегда ли можно найти адрес?

Да, если вы контролируете компиляцию, существуют такие инструменты, как objdump и nm, которые позволяют разложить двоичный . Если у вас есть только развернутая система, вы хотите изучить обратный инжиниринг.

person P.S.    schedule 27.02.2017
comment
Что непонятно: предположим, у меня на диске сохранен mtdblock устройства (nvram), я исследовал его и нашел адрес памяти, где находится целевой объект. Если я вызову этот адрес памяти в работающей системе, будет ли он возвращать целевой объект, что означает, что адрес памяти объекта в статическом mtdblock совпадает с адресом памяти в живой работающей системе ? Должны ли адреса памяти в статическом файле и в работающей системе совпадать? - person ; 01.03.2017
comment
@sonex: зависит от того, какой раздел исполняемого файла и как настроен компоновщик. См.: linuxjournal.com/article/6463?page=0,0 - person P.S.; 05.03.2017