Как стать автором
Обновить

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4.8K
Всего голосов 25: ↑24 и ↓1+35
Комментарии3

Комментарии 3

Device tree который вы предлагаете на практике может давать проблемы, по крайней мере с ядром 5.19 и zynq7k. Если не замапить его на драйвер (к примеру uio), то ядро Linux включает его в CMA memory pool, и некоторые драйвера могут начать его использовать. Закономерно испортив память. Отвалится и хост arm и софтпроцессор.

Возможно у вас памяти слишком много и этот эффект не заметен. Для теста попробуйте занулить из arm весь зарезервированный регион.

Я так полагаю, что речь идет о devicetree для Hard-CPU и ноде reserved-memory.

По идее, зарезервированный регион не должен нигде использоваться, если этого явно не указано. Например, для использования региона каким-либо драйвером, в его описании devicetree можно указать следущее:

memory-region = <&reserved>;

Таким образом драйвер будет явно привязан к этому региону по тегу.

Для того, чтобы использовать регион через DMA API, нужно назначить ему стандартный драйвер через:

compatible = "shared-dma-pool";

В случае с CMA, также указать:

linux,cma-default;

Вожможно, у вас в devicetree есть некое наложение по тегу региона или адресу. Попробуйте переименовать регион с "reserved" на что-нибудь другое, например "mb-reserved".

Что касается адреса, я описывал детально как выбирал его для конкретной платформы в первой части. В вашем случае он может отличаться, и, вероятно, должен отличаться, чтобы соответствовать иным требованиям.

Тест с затиранием памяти понятен. Конечно, если нарушить код загруженной ОС, или данные региона памяти, выделенного тому или иному драйверу, все пойдет не по лучшему сценарию. В тексте я делал акцент на важности исключения совместного использования региона обеими ОС. В вашем случае интересно разобраться все же почему зарезервированный регион попал в ведение ОС Hard-CPU.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий