i.MX6SX запускает прошивку M4 из DDR

Я делаю тесты на 6SX-SABRE-SBD board. На этой плате установлен i.MX6SX, асимметричный двухъядерный процессор: Cortex A9 и Cortex M4.

На данный момент система запускается с U-Boot и linux kernel с SD. Это означает, что A9 работает в регионе DDR. Прошивка M4 имеет ОС MQX 4.1.0, портирование freescale.

На данный момент я сделал:

  1. Протестируйте пример пинг-понга, образец кода, предоставленный MQX, который отображает код M4 в QSPI2. Это работает хорошо.
  2. Я изменил сценарий компоновщика (icf, я использую IAR) примера pingpong, чтобы область ROM находилась внутри области DDR (например, 0x84000000).
  3. При запуске U-Boot я останавливаюсь и копирую переназначенный файл .bin по правильному адресу (например, fatload mmc ${mmcdev}:${mmcpart} 0x84000000 myRemapped.bin)
  4. Использовал команду bootaux U-Boot для запуска приложения M4 (например, bootaux 0x84000000, и я пробовал bootaux 0x8400400 также для пропуска векторов)

Эти шаги, кажется, не работают.

В качестве теста я изменил стандартный пример pingpong, чтобы изменить некоторые байты в 0x84000000, адрес внутри DDR region, и он работает хорошо. Это означает, что M4 имеет права на DDR region.

Может ли кто-нибудь помочь мне понять, что необходимо знать/изменить, чтобы сделать прошивку M4 работающей в DDR?


person LPs    schedule 10.03.2015    source источник
comment
Тот факт, что вы можете читать/записывать DDR, не означает, что вы можете работать с ним. Я бы сначала убедился, что M4 вообще может работать с внешней памяти. Довольно часто встраиваемые микроконтроллеры нижнего уровня (одним из них является Cortex-M4) могут выполнять код только из внутренней флэш-памяти. Обратитесь к техническому описанию/справочному руководству чипа.   -  person Eli Iser    schedule 10.03.2015
comment
Я спросил FAE Freescale, и он подтвердил мне, что это возможно, но, очевидно, он не написал мне, как...   -  person LPs    schedule 10.03.2015
comment
Это должно быть указано в справочном руководстве конкретного MCU, который вы используете. Также у Freescale довольно много сэмплов, возможно, вам удастся найти один (или попросить их поддержки).   -  person Eli Iser    schedule 10.03.2015
comment
@ Эли Изер: настоящая проблема в том, что i.MX6SX слишком новый, выпущенный 25.02.2015. Только базовые примеры и ни один, который позволил бы мне понять, как правильно переназначить приложение M4. В руководствах по MCU (4700 страниц) небольшая глава (40 страниц) посвящена рассказу о ядре M4, где я не могу найти что-то полезное для себя. Спасибо вам за ваши предложения.   -  person LPs    schedule 10.03.2015


Ответы (1)


В случае Vybrid нам приходилось запускать M4 с 0x0f000411 — насколько я помню, оперативная память для M4 была сопоставлена ​​с 0x0f000000. Я не помню, почему концовка была 411 вместо 400 или 000, но так оно и было.

person wstrozynski    schedule 10.03.2015
comment
Спасибо за ваш ответ. Платформа Vybrid (Cortex A5 - Cortex M4) имеет другую карту памяти и использует псевдонимы адресов для отображения некоторых диапазонов памяти. i.MX6SX имеет диапазоны DDR от 0x80000000 и модуль RDC, который может определять диапазоны и правила доступа. - person LPs; 11.03.2015