SoftDevice:
Wer sich das erste mal mit dem Chip auseinander setzt fragt sich sicher was ein SoftDevice ist. Nordic bezeichnet als Softdevice ein Stück Programmcode der im Flasch vor dem eigenen erstellten Programm liegt.
Das Programm des Softdevice übernimmt dabei göstenteils die Protokollaufgaben in der Bluetoothkominikation. Da die Bluetooth Protokollaufgaben von Nordic vorgefertigt und zertifiziert sind kann der Chip auch ohne Amateurfunklizenz betrieben werden.
Es gibt auch Ansätze von "Opensorce SoftDevice's" hier muss man jedoch sagen das deren betrieb ohne Funklizenz ilegal ist!
Auf der Hompage von Nordic kann das SoftDevice's heruntergeladen werden. Das SoftDevice's wird als hex File zum Download bereitgestellt es muss vor dem eigenen Programm auf dem Controller geflasht werden, mehr dazu wenn das erste Progamm erstellt wird.
Nordic biehtet für seine Bluetooth Chip reihe nRF unterschiedliche SoftDevices an
Chip | S110 | S120 | S130 | S210* | S310* |
nRF51422 | x | x | x | x | x |
nRF51822 | x | x | x |
*S210 und S310 gehören zur ANT technology und finden erst mal keine weitere Beachtung.
Wie man erkennen kann sind für einen Chip mehrere SoftDevice erhältlich. Der Grund dafür liegt teilweise in der Entwiklung (Revision) der Chips so war das erste veröffentlichte Softdevice das S110 danach kam S120 und als letztes S130. Die SoftDevice's erfüllen unterschiedliche Aufgaben je nachdem ob man den Chip als "Master /Slave" betreiben wil. Die Bergrifflichkeit Master/ Slave existiert jedoch nicht bei Bluetooth hier spricht man von Central/Peripheral oder Broadcaster/Observer .
Hier eine kleine Übersicht welche Aufgaben die Softdevices übernehmen.
S110: peripheral/broadcaster
Das SoftDevice S110 ist gedacht für Entgeräte die Antworten wenn sie angesprochen werden.
S120: central protocol stack solution supporting up to eight simultaneous Central role connections
Das S120 arbeitet als Centrale (Master), es ist möglich dabei mit 8 Peripheral's (Endgeräte) verbunden zu sein.
//Für die 128kB Version des nRF51822 ist die höhste verwendbare Version des S120 Bluetooth-Stacks die Revision 1.0.1. Ab Version 2.x.x. benötigt der Stack mehr als 114kB, was nicht mehr genug Platz für größere Programme läßt
S130:Central/Peripheral/Broadcaster/Observer role connections.
Das S130 vereint die beiden Sofdevices S110 und S120 zu einem es kann hier im Betrieb zwischen Central/Peripheral umgeschaltet werden.
SoftDevice und Speicherbedarf:
S110:
Version | FLash | RAM | Specification |
v8 | 92kB | Variabel* | v2.0 |
v7 | 88kB | 8kB | v1.3 |
v7.alpha+ |
84kB | 8kB | v1.3A |
v6 | 80kB | 8kB | v1.2 |
v5 | 80kB | 8kB | v1.1 |
*siehe S.33 Specifications
+ nur für alte Projekte
S120
Version
Version | FLash | RAM | Specification |
v8 | 92kB | Variabel* | v2.0 |
v7 | 88kB | 8kB | v1.3 |
v7.alpha+ |
84kB | 8kB | v1.3A |
v6 | 80kB | 8kB | v1.2 |
v5 | 80kB | 8kB | v1.1 |
S130
Im Jahr 2016 mit erscheinen des SDK 12 und des neuen Controler nrf52 wurde die Unterstützung der Softdevice's S110 S120 für neuere SDK's eingestellt. Dies ist auch der Grund warum in weiteren Artikeln nur auf das S130 mit dem SDK12 eingegangen wird.
SDK:
Wer die ganze zeit SDK liest und darunter nur Bahnhof versteht keine angst, SDK steht für Software Develeopment Kit. SDK's werden von verschiedenen Herstellern herausgegeben um die Softwareentwicklung für Ihre Controller zu vereinfachen. Schaut man sich mal ein SDK genauer an so findet man darin ein Haufen Code Schnipsel und Beispiel Programme die das Programmieren vereinfachen sollen da sie einem einige Arbeit ersparen.
Wer sich mit der Adruino Umgebung auskennt weis das man dort um eine LED zum leuchten zu bringen sich nicht mehr mit Registern des Controler herum schlagen muss da dies die aufgerufene Funktion für einen übernimmt. Ähnlich ist es bei einem SDK die zuvor als Code Schnipsel bezeichneten Dateien sind in Wahrheit Funktionen die einem manchmal den Blick ins Datenblatt ersparen.
Betrachtet man diese Funktionen noch ein wenig genauer kann man sie in zwei oder drei Kategorien einteilen so gibt es Hardware Restriktion Layer (HAL) Code ,Driver Code, und Code der nicht direkt mit den Funktionen des Controllers zu tun hat
Ältere SDK's die nicht mehr auf der Homepage sind hier.