Уважаемые коллеги,
Имеется Freescale Quick Start board i.MX53 (MCIMX53-START-R). SOC i.MX535 c ядром ARM Cortex-a8 и "незаблокированной" технологией TrustZone.
Для изучения возможностей технологии TrustZone, написал простое приложение, которое загружаю и запускаю при помощи u-boot.
Предварительно отмечу (напомню), что после включения питания и загрузки u-boot процессор находится в "secure world".
Суть простого приложения:
1) Выключаю MMU ;
2) Создаю свою таблицу преобразования адресов, в которой будут записи для областей ОЗУ, недоступных из "normal world" (записи таблицы страниц с NS-bit = 0) и будут записи для областей доступных из "normal world" (для таких записей в таблице страниц NS = 1) ;
3) Инициализирую соответсвующие регистри (TTBR0 и т.п.) ;
4) Включаю MMU ;
4a) Проверяю работает ли в принципе новая таблица преобразования адресов ?. Да, работает.
5) Инициализирую secure monitor
6) Переключаюсь в "normal world" (проверяю произошло ли переключение ? Да произошло).
6.a Первым делом проверяю доступность "разрешенных" и "запрещенных" для "normal world" адресов.
6.б Обнаруживаю, что и разрешенные и запрещенные области памяти доступны из "normal world".
7) Это неправильно. Не понимаю почему такое происходит.
Имеются ли какие-либо соображения по данной ситуации ?
Отмечу также , что не имеется (у меня, во всяком случае) каких-либо примеров использования trustzone на SOC i.MX535,то есть, сравнить не с чем.
Теоретически, вышеописанная процедура должна работать.
С уважением,
Вячеслав.