Пытаюсь реализовать довольно сложную (по крайней мере для меня!) систему на микроконтроллере Cortex M4: LPC4370. У этого есть инструкции HighSpeed ADC (до 80Msps), DMA и DSP (Single Instruction Multiple Data). Вот что я хочу сделать:
Тактовая частота микроконтроллера составляет 204 МГц, и пока давайте предположим, что ADC fs не является спецификацией дизайна, но в идеале я хотел бы, чтобы она была как можно выше. Поэтому мне нужно, чтобы код был настолько быстрым, насколько я могу. Вот настроена память MCU.
А вот и МНОГОСЛОЙНАЯ МАТРИЦА AHB
На данный момент я больше рассматриваю общую архитектуру прошивки и, в частности, управление памятью. Некоторые соображения:
В руководстве пользователя LPC4370 (глава 2):
Для оптимизации производительности процессора ARM Cortex-M4 имеет три шины для доступа к инструкциям (коду) (I), доступу к данным (D) и доступу к системе (S). Пространство памяти доступа I- и D-bus расположено ниже 0x2000 0000, S-bus обращается к пространству памяти, начиная с 0x2000 0000. Когда инструкции и данные хранятся в отдельных памяти, тогда доступ к коду и данным может выполняться параллельно в один цикл. Когда код и данные хранятся в одной и той же памяти, инструкции по загрузке или сохранению данных могут занимать два цикла.
Моя идея на данный момент состоит в том, чтобы хранить выборочные данные в двух разных буферах, помещенных в две разные области памяти (например, LocRam128 и LocRam72), и «пинг-понг» DMA и M4 между этими двумя областями. Единственная проблема в том, что эти две области используются для обучения (I). Так что мой гостевой код также должен быть размещен здесь, и это нехорошо для меня. Интересно, как я могу эффективно использовать RAMAHB32, поскольку он подключен только к системной шине M4 (S), а не к данным (D) или инструкциям (I).
Любые подсказки?
Хорошо, поскольку вы не можете поделиться более подробной информацией. Я дам вам несколько общих моментов:
Надеюсь это поможет.
пгвурхис
a_bet
пгвурхис
a_bet
Эллиот Алдерсон
a_bet
Джон
Старожил
Старожил