Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Двухъядерные микроконтроллеры NXP LPC43xx
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Metallist64
Здравствуйте уважаемые специалисты!
Заинтересовали 2х ядренные микроконтроллеры от NXP.
В частности серия LPС43xx.
Но помимо всяких вкусностей, есть непонятности.
1. Отсутствие внутренней флэш памяти. Я так понимаю ставят внешнюю шлэш... Наверное медленее исполняется программа...???
2. Наличие каких-то драйверов для переферии уже в самом МК. Это вообще непонятно...
Ну и последнее, как на практике, для новичка выглядит программирование под 2 ядра???
Можно ли запустить один таймер на сопроцессоре для отрисовки скажем небольшого графического дисплея, а основное ядро допустим не будет отвлекаться на эти прерывания???

Если кто сталкивался или пользовался, просвятите пожалуйста.
Очень интересно!
Fujitser
Цитата(Metallist64 @ Jul 6 2013, 01:10) *
1. Отсутствие внутренней флэш памяти. Я так понимаю ставят внешнюю шлэш... Наверное медленее исполняется программа...???


LPC4357FET256 имеет 1Mb встроенной флеш-памяти. И потом, можно же переписать программу в ОЗУ при загрузке.
Metallist64
Да, действительно, посмотрел немного повнимательнее и нашел много микросхем со встроенной flash.
Но все таки интересно, как разделяется работа программы между ядрами.
Может кто-нибудь на пальцах сможет объяснить?
AlexandrY
Цитата(Metallist64 @ Jul 7 2013, 12:29) *
Но все таки интересно, как разделяется работа программы между ядрами.
Может кто-нибудь на пальцах сможет объяснить?


Всю правду и замыслы NXP вам никто не расскажет.

Но я вижу такой вариант использования:
У NXP традиционно очень упрощенная периферия последовательных интерфейсов и сделать на них нишевые интерфейсы как LIN, HART, 1-Wire и т.д. получается довольно криво в плане использовния ресурсов процессора.
Вот они и решили убить всех зайцев дополнительным ядром.

Но на обоих, как я понял из их мануала, ставятся RTOS.
Поскольку реально необходимость в сопроцессоре появляется когда задач становиться действительно много - несколько десятков.
А с таким количеством задач можно работать только используя RTOS.

Далее они накидали схематично протокол на основе разделяемой памяти и прерываний и там уже разработчику реализовывать его надо самому, а может у них и API где-то в ROM-е закопано. Этот момент мутный.

На уровне же приложения распределение функциональности на локальную и на сопроцессоре делается исключительно в ручную методом проб и ошибок.
Некотороые оси предлагают прозрачный интерфейс межзадачного обмена.
И тогда перенос какой либо локальной задачи на сопроцессор не вызывает необходимости править исходники других задач.
Но NXP такой оси не предлагает.
Это с их стороны ошибка думаю, уменьшают юзабельность своего решения.

SII
Цитата(Metallist64 @ Jul 7 2013, 13:29) *
Но все таки интересно, как разделяется работа программы между ядрами.
Может кто-нибудь на пальцах сможет объяснить?


Как программист сделает, так и будет. NXP исходит из того, что на ядре Cortex-M4 выполняются всякие расчёты и т.д., а ядро Cortex-M0 обслуживает ввод-вывод. Но в действительности будет так, как сделает программист, т.е. всё в Ваших руках.
Metallist64
Цитата
Как программист сделает, так и будет.

В общем и интересует, кто как делает.
Можно ли допустим обработку прерываний повесить на одно ядро, а вычисления - на второе?

Посмотрел хидер для LPC43xx.h от KEIL`a нашел в частности следующую строки:

CODE

M0_TIMER0_IRQn = 12, /*!< 12 TIMER0 */
M0_GINT1_IRQn = 13, /*!< 13 GINT1 */
M0_TIMER3_IRQn = 15, /*!< 15 TIMER3 */
M0_MCPWM_IRQn = 16, /*!< 16 MCPWM */
M0_ADC0_IRQn = 17, /*!< 17 ADC0 */


По этому хидеру вроде видно, что можно "повесить" обработчик прерывания для ядро Cortex-M0
Причем для есть и такие строки:

CODE

TIMER0_IRQn = 12, /*!< 12 TIMER0 */
TIMER1_IRQn = 13, /*!< 13 TIMER1 */
TIMER2_IRQn = 14, /*!< 14 TIMER2 */
TIMER3_IRQn = 15, /*!< 15 TIMER3 */

Т.е. похоже, что они предназначены для основного ядра Cortex-M4.
Похоже, что можно играться прерываниями независимо от ядра?
Неясно только, как будут обрабатываться прерывания обоими ядрами от одного источника, например от UART0.
Может быть, кто-нибудь имел так сказать, практический опыт?




AlexandrY
Цитата(Metallist64 @ Jul 7 2013, 23:38) *
Т.е. похоже, что они предназначены для основного ядра Cortex-M4.


Мануалы принципиально не читаете?
У каждого ядра свой собственный контроллер прерываний.
Что подключено к каждому лучше смотреть по мануалу, а не по кейловским хидерам.

Ну а предсказать кто из двоих при одновременном старте обслуживания одного и того же прерывания первым доберется до определенных регистров невозможно. Т.е. конфликты неизбежны при таком подходе.

Плохо что в чипе нет аппаратной защиты от такого доступа.
Т.е. можно таких уникальных багов наворотить, что и JTAG не поможет. wacko.gif
Methane
Цитата(Metallist64 @ Jul 5 2013, 22:10) *
Здравствуйте уважаемые специалисты!
Заинтересовали 2х ядренные микроконтроллеры от NXP.

Весьма странная железка.
Цитата
7.4 Interprocessor communication
The ARM Cortex-M4 and ARM Cortex-M0 inte
rprocessor communication is based on
using shared SRAM as mailbox and one processor raising an interrupt on the other
processor's NVIC, for example after it has delivered a new message in the mailbox. The
receiving processor can reply by raising an interrupt on the sending processor's NVIC to
acknowledge the message

Мне лично не совсем понятен смысл. Вроде как уже не то время, чтобы задержки по тактам процессора считать. С остальным справляется ось. Но с осью удобнее когда два процессора одинаковые. Можно конечно чтобы один процессор занимался к примеру UARTами а второй TCP, но тогда придется городить прослойку чтобы они общались друг с другом.

Согласен что целое поле не паханное для уникальнейших граблей, каких еще свет не видывал.
skripach
Цитата(Metallist64 @ Jul 5 2013, 22:10) *
1. Отсутствие внутренней флэш памяти. Я так понимаю ставят внешнюю шлэш... Наверное медленее исполняется программа...???

Ставят внешнюю или используют контроллер с внутренней. С внешней особенно сериальной флешкой жудко медленно!
Цитата(Metallist64 @ Jul 5 2013, 22:10) *
2. Наличие каких-то драйверов для переферии уже в самом МК. Это вообще непонятно...

Во флеш уже залиты какие-то функции осталось их только вызывать зная их адрес.
Цитата(Metallist64 @ Jul 5 2013, 22:10) *
Ну и последнее, как на практике, для новичка выглядит программирование под 2 ядра???

Пишем код для одного адра, отлаживаем; пишем код для второго, отлаживаем.
Цитата(Metallist64 @ Jul 5 2013, 22:10) *
Можно ли запустить один таймер на сопроцессоре для отрисовки скажем небольшого графического дисплея, а основное ядро допустим не будет отвлекаться на эти прерывания???

Можно.
Metallist64
Цитата(skripach @ Jul 8 2013, 09:56) *
Пишем код для одного адра, отлаживаем; пишем код для второго, отлаживаем.
Можно.


Насколько я понял вы уже общались с данными микросхемами.
Не было ли затруднений при обращении в один и тот же массив/структуру обоим ядрам?
Может как-то надо разделять эти операции по времени?
Компилятор(Keil, IAR) вообще корректно работает с данными МК?
skripach
Цитата(Metallist64 @ Jul 9 2013, 10:54) *
Насколько я понял вы уже общались с данными микросхемами.
Не было ли затруднений при обращении в один и тот же массив/структуру обоим ядрам?
Может как-то надо разделять эти операции по времени?
Компилятор(Keil, IAR) вообще корректно работает с данными МК?

-Не понимаю какие затруднения могут быть?
-Да корректно. Ну и наверно компилятор работает не с МК, а с ядром (M4/M0).
Metallist64
Ну и прекрасно.
Всем большое спасибо за мнения и ценные сведения!
В ближайшее время постараюсь приобрести небольшой отладочный набор.
Ёрген
Неужели трехядерник:

LPC4370: 32-bit ARM Cortex-M4 + 2 x M0 MCU; 282 kB SRAM; Ethernet; two HS USBs; 80 Msps 12-bit ADC; configurable peripherals
DASM
Что Вас удивляет ? В OMAP4460 по моим подчетам около 6 ядер, от M0 до A9 + C64x+. Да и что считать за процессор, если в егоном С64 6 АЛУ
А вы название проца верно написали ? Что-то почти не гуглиться, как-то 80 Msps 12-bit ADC кажется многовато..
LexaryStyle
Цитата(AlexandrY @ Jul 6 2013, 21:59) *
У NXP традиционно очень упрощенная периферия
Это с их стороны ошибка думаю, уменьшают юзабельность своего решения.


Цитата
Владельцем Freescale Semiconductor станет компания NXP

Уже не первый раз нам приходится слышать, что некогда выросшая из подразделения Motorola компания Freescale Semiconductor может в очередной раз сменить собственников. Широкой аудитории Freescale известна в качестве бывшего поставщика процессоров для компьютерных систем Apple, однако за свою богатую историю она успела поучаствовать в освоении космоса и модернизации отдельных узлов гоночных автомобилей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.