реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Двухъядерные микроконтроллеры NXP LPC43xx, Есть ли изюм в переходе???
Metallist64
сообщение Jul 5 2013, 19:10
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Здравствуйте уважаемые специалисты!
Заинтересовали 2х ядренные микроконтроллеры от NXP.
В частности серия LPС43xx.
Но помимо всяких вкусностей, есть непонятности.
1. Отсутствие внутренней флэш памяти. Я так понимаю ставят внешнюю шлэш... Наверное медленее исполняется программа...???
2. Наличие каких-то драйверов для переферии уже в самом МК. Это вообще непонятно...
Ну и последнее, как на практике, для новичка выглядит программирование под 2 ядра???
Можно ли запустить один таймер на сопроцессоре для отрисовки скажем небольшого графического дисплея, а основное ядро допустим не будет отвлекаться на эти прерывания???

Если кто сталкивался или пользовался, просвятите пожалуйста.
Очень интересно!
Go to the top of the page
 
+Quote Post
Fujitser
сообщение Jul 7 2013, 04:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925



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


LPC4357FET256 имеет 1Mb встроенной флеш-памяти. И потом, можно же переписать программу в ОЗУ при загрузке.
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 7 2013, 09:29
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Да, действительно, посмотрел немного повнимательнее и нашел много микросхем со встроенной flash.
Но все таки интересно, как разделяется работа программы между ядрами.
Может кто-нибудь на пальцах сможет объяснить?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 7 2013, 09:59
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


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

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

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

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

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

Go to the top of the page
 
+Quote Post
SII
сообщение Jul 7 2013, 10:39
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



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


Как программист сделает, так и будет. NXP исходит из того, что на ядре Cortex-M4 выполняются всякие расчёты и т.д., а ядро Cortex-M0 обслуживает ввод-вывод. Но в действительности будет так, как сделает программист, т.е. всё в Ваших руках.
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 7 2013, 20:38
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Цитата
Как программист сделает, так и будет.

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

Посмотрел хидер для 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.
Может быть, кто-нибудь имел так сказать, практический опыт?




Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 7 2013, 21:20
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


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

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

Плохо что в чипе нет аппаратной защиты от такого доступа.
Т.е. можно таких уникальных багов наворотить, что и JTAG не поможет. wacko.gif
Go to the top of the page
 
+Quote Post
Methane
сообщение Jul 8 2013, 05:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(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, но тогда придется городить прослойку чтобы они общались друг с другом.

Согласен что целое поле не паханное для уникальнейших граблей, каких еще свет не видывал.
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 8 2013, 06:56
Сообщение #9


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата(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) *
Можно ли запустить один таймер на сопроцессоре для отрисовки скажем небольшого графического дисплея, а основное ядро допустим не будет отвлекаться на эти прерывания???

Можно.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 9 2013, 07:54
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



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


Насколько я понял вы уже общались с данными микросхемами.
Не было ли затруднений при обращении в один и тот же массив/структуру обоим ядрам?
Может как-то надо разделять эти операции по времени?
Компилятор(Keil, IAR) вообще корректно работает с данными МК?
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 10 2013, 07:30
Сообщение #11


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



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

-Не понимаю какие затруднения могут быть?
-Да корректно. Ну и наверно компилятор работает не с МК, а с ядром (M4/M0).


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 10 2013, 07:38
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Ну и прекрасно.
Всем большое спасибо за мнения и ценные сведения!
В ближайшее время постараюсь приобрести небольшой отладочный набор.
Go to the top of the page
 
+Quote Post
Ёрген
сообщение Jul 15 2013, 14:47
Сообщение #13





Группа: Участник
Сообщений: 12
Регистрация: 1-07-05
Пользователь №: 6 437



Неужели трехядерник:

LPC4370: 32-bit ARM Cortex-M4 + 2 x M0 MCU; 282 kB SRAM; Ethernet; two HS USBs; 80 Msps 12-bit ADC; configurable peripherals
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 15 2013, 15:02
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Что Вас удивляет ? В OMAP4460 по моим подчетам около 6 ядер, от M0 до A9 + C64x+. Да и что считать за процессор, если в егоном С64 6 АЛУ
А вы название проца верно написали ? Что-то почти не гуглиться, как-то 80 Msps 12-bit ADC кажется многовато..
Go to the top of the page
 
+Quote Post
MrAlex
сообщение Jul 15 2013, 15:16
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 15-10-10
Из: г. Москва
Пользователь №: 60 179



http://www.nxp.com/products/microcontrolle...4370FET256.html
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016