Forum: Mikrocontroller und Digitale Elektronik BLE Module mit Dualcore CPU: interrupts & sandbox


von ble (Gast)


Lesenswert?

Mir sind folgende BLE Controller mit Dual Core bekannt:
- ST WB55
- NRF53
- ESP32-S3 (und andere Varianten)

In meiner Applikation habe ich einen ADC einer Datenrate von 1kHz - 
10kHz, daher fallen Controller mit managed Interrupts wie NRF52 raus 
(der BLE Stack könnte zu lange blockieren). Daher suche ich BLE 
Controller mit Dual Core.

Beim ST hat man volle Kontrolle über den Application Core, aber bei den 
NRF53 und ESP32 Dual Cores finde ich keine Dokumentation, darüber ob die 
Applikation in einer Sandbox läuft oder nicht.

Für den NRF52 habe ich die zugehörige Doku über das Softdevice gefunden, 
aber wo ist die zugehörige Doku für den NRF53?

von Patrick C. (pcrom)


Lesenswert?

Vielleicht einer der Cypress/Infineon PSOC (4) controllers ?

von Robin (Gast)


Lesenswert?

PSoC 63 ist ein dual core (MR und M0+) mit BLE. Bei dem man beide cores 
frei programmieren kann.

PSoC4 ist "nur" ein single core M0, wobei ich mich Frage was in der ADC 
ISR passieren soll, damit der nicht reicht.

von Genialer Inkenieur (Gast)


Lesenswert?

Die STM32WBs sind sicher gute Drivate, jedoch habe ich als Laie es nicht 
hinbekommen das BLE zu verwenden. Die Dokumentation ist ziemlich 
verworren und unübersichtlich, sowie umfangreich.

von ble (Gast)


Lesenswert?

Robin schrieb:
> PSoC 63 ist ein dual core (MR und M0+) mit BLE. Bei dem man beide
> cores
> frei programmieren kann.

Das geht wohl bei den ESP32 dual cores auch, aber das freie 
Programmieren von dem 2. Core (also der angenommene für BLE) erzwingt 
soweit ich weiß eine Sandbox, ansonsten kann das nicht vom Hersteller 
für beliebige Applikationen zertifiziert sein?

Bei den STWB55 läuft auf dem Network Core wirklich nur BLE, das gefällt 
mir besser. Dadurch entwickelt man auch gar nicht für einen Dual Core, 
sondern quasi für einen Single Core mit spezieller Peripherie.

von Kaj (Gast)


Lesenswert?


von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

ble schrieb:

> In meiner Applikation habe ich einen ADC einer Datenrate von 1kHz -
> 10kHz, daher fallen Controller mit managed Interrupts wie NRF52 raus
> (der BLE Stack könnte zu lange blockieren). Daher suche ich BLE
> Controller mit Dual Core.

Verwende einfach DMA, dann sollte es doch überhaupt kein Problem geben, 
die 10k samples vom ADC abzuholen.

> Für den NRF52 habe ich die zugehörige Doku über das Softdevice gefunden,
> aber wo ist die zugehörige Doku für den NRF53?

Spannend, habe ich auch nicht gefunden. Vielleicht gibt es kein SD und 
die Verwendung von Zephyr ist vorgesehen.

Der CC2640 von TI hat eine Cortex M3 plus einen eigenen 
Radio-Controller. Die Software-Entwicklung macht in dem Bereich aber 
echt keinen Spaß.

von Robin (Gast)


Lesenswert?

ble schrieb:
> Das geht wohl bei den ESP32 dual cores auch, aber das freie
> Programmieren von dem 2. Core (also der angenommene für BLE) erzwingt
> soweit ich weiß eine Sandbox, ansonsten kann das nicht vom Hersteller
> für beliebige Applikationen zertifiziert sein?

Mein Stand hierzu ist, dass die Module nur den BLE Stack und die BLE 
Hardware Implementierung (Transceiver, Antenne, ...) zertifiziert haben, 
die Application muss aber meines Wissens immer selbst zertifiziert 
werden.

> Bei den STWB55 läuft auf dem Network Core wirklich nur BLE, das gefällt
> mir besser. Dadurch entwickelt man auch gar nicht für einen Dual Core,
> sondern quasi für einen Single Core mit spezieller Peripherie.

Dafür gibt es beim PSoC6 auch ein fertiges Image für den M0+, der den 
BLE LowLevel kram übernimmt, auf dem CM4 Core werden dann die BLE 
Profile gehandelt. Ist dann auch quasi Single Core.
https://github.com/Infineon/psoc6cm0p/tree/master/COMPONENT_CM0P_BLESS

Ich sehe aber auch noch nicht wirklich den Anwendungsfall für einen Dual 
Core, 1-10kHz ist jetzt nicht wirklich schnell.

von 900ss (900ss)


Lesenswert?

ble schrieb:
> aber wo ist die zugehörige Doku für den NRF53?

Hier steht der Hinweis, dass die Softdevices gleich sind NRF52/53.

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_ble_controller.html#id2

Wenn du da dem Link zur Documentation folgst sollte doch alles da sein?
Da kommt dann, links im Menu "Softdevice Controller->Scheduling".
Da sollte dir doch geholfen werden?

von ble (Gast)


Lesenswert?

Danke für die Vorschläge soweit.
Was mir erst jetzt in den Sinn kommt:

Kann ich bei den frei programmierbaren Dualcores (Psoc, ESP32, NRF53) 
einstellen, dass die BLE Interrupts auf Core0 und mein DRDY Interrupt 
gleichzeitig auf Core1 läuft?

Dann hätte sich das Problem ja erübrigt. Meine Befürchtung war, dass der 
BLE Stack wahllos um 100µs alle Interrupts blockieren kann (wie bei BLE 
Singlecore Modulen).

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

ble schrieb:

> Kann ich bei den frei programmierbaren Dualcores (Psoc, ESP32, NRF53)
> einstellen, dass die BLE Interrupts auf Core0 und mein DRDY Interrupt
> gleichzeitig auf Core1 läuft?

davon würde ich sehr stark ausgehen.

> Dann hätte sich das Problem ja erübrigt. Meine Befürchtung war, dass der
> BLE Stack wahllos um 100µs alle Interrupts blockieren kann (wie bei BLE
> Singlecore Modulen).

Was sind den genau Deine Befürchtungen / Anforderungen? Ich kann mir 
beim besten Willen nicht vorstellen, warum der BLE Stack 100µs lang alle 
Interrupts blockieren sollte. In der Regel werden das ein paar µs sein. 
Und wie gesagt: die meisten µCs haben DMA.

von ble (Gast)


Lesenswert?

Torsten R. schrieb:
> Was sind den genau Deine Befürchtungen / Anforderungen? Ich kann mir
> beim besten Willen nicht vorstellen, warum der BLE Stack 100µs lang alle
> Interrupts blockieren sollte. In der Regel werden das ein paar µs sein.
> Und wie gesagt: die meisten µCs haben DMA.

Wenn man hier 
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsds_s140%2FSDS%2Fs1xx%2Fprocessor_avail_interrupt_latency%2Fexception_mgmt_sd.html 
das softdevice runterlädt, findet man z.B. auf Seite 89, dass der bei 
einem Connect Event der BLE Stack bis zu 250µs für das Postprocessing 
braucht. Das läuft im Softdevice timing-critical interrupt, solange 
läuft da nichts von der Userapplikation. Das ganze gilt für einen NRF5X 
Singlecore.

DMA ist natürlich gut, aber wenn ich die ADC Daten auch live verarbeiten 
möchte muss der DMA (oder mit weiterem Peripheral):
- automatisch Transfer triggern bei DRDY interrupt
- Memoryaddresse nach jedem Transfer ändern können
Das können manche, aber denke ich nicht alle Mikrocontroller.

Die Anforderung ist, dass ich in Echtzeit (also höchste 
Interruptpriorität) alle 100µs einen DMA transfer starten kann. Wenn der 
Controller/DMA das automatisch kann, entfällt die Echtzeitanforderung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.