TY51822R3でS130 v2を利用する場合の動作について

06 Dec 2016

お世話になっております。

TY51822R3で、表題のとおり、S130 v2を利用で、問題が発生しておりますので、なにか対応があればお教えいだきたく、ご質問させていだきます。

オンラインコンパイラで、TY51822R3のプラットフォームのプロジェクトを作成し、ライブラリを最新のもの (mbed:130, BLE_API:1208, nRF51822:638)にしますと、softdeviceは、S130 v2になります。 これで、ビルドし、実行しますと、BLEのアドバタイズはできて、iPhoneなどに認識されるのですが、 接続を試みると、TY51822R3は、接続処理で、動作停止してしまいます。(タイマー割り込みなどが停止してしまう)

S130 v1を利用するリビジョンへ、各ライブラリを戻して、ビルドした場合は、問題がなく、iPhoneとのBLE接続ができます。

そこで、mbedをmbed-devにして、オフライン(GCC)でビルドして、デバッグしているのですが、BLE接続時に、sdの関数コール(どの関数か不明)でリターンしないようです。(DEBUGマクロを定義し、DEVICE_STDIO_MESSAGES=1としています。) シリアルコンソールでエラーメッセージは出力されていません。 さらに、調査するには、どのような事をしたらよいでしょうか?あるいは、そもそも、TY51822R3は、S130 v2に未対応なのでしょうか?

07 Dec 2016

TY51822R3でのsoftdeviceをs130 v2を利用する件ですが、アプリのバイナリのobj-dumpをしたところ、 SWI2_IRQHandlerがデフォルトのままでしたので、BLEスタックのイベントはSWI2_IRQのコールバックで処理されますので、 haltしたようになっていたようです。 mbedのオフラインで提供される、startup_NRF51822.oおよび、そのソースのstartup_NRF51822.Sでは、

.long WDT_IRQHandler_v /*WDT */

.long RTC1_IRQHandler_v /*RTC1 */

.long QDEC_IRQHandler_v /*QDEC */

.long LPCOMP_IRQHandler_v /*LPCOMP */

.long SWI0_IRQHandler_v /*SWI0 */

.long SWI1_IRQHandler_v /*SWI1 */

.long SWI2_IRQHandler_v /*SWI2 */

.long SWI3_IRQHandler_v /*SWI3 */

となっておりました。

しかし、nordicのSDKや、従来のmbedオフラインコンパイラ環境では、

DCD WDT_IRQHandler ;WDT

DCD RTC1_IRQHandler ;RTC1

DCD QDEC_IRQHandler ;QDEC

DCD LPCOMP_IRQHandler ;LPCOMP

DCD SWI0_IRQHandler ;SWI0

DCD SWI1_IRQHandler ;SWI1

DCD SWI2_IRQHandler ;SWI2

DCD SWI3_IRQHandler ;SWI3

DCD SWI4_IRQHandler ;SWI4

DCD SWI5_IRQHandler ;SWI5

となっております。

そこで、今までのソースを利用して、ビルドしましたところ、s130 v2でもBLE接続イベントコールバックまで実行するようになりました。お騒がせしてしまいすみませんでした。

08 Dec 2016

同じく,割り込みが動作しなくて困っております. mbed, BLE_API, nRF51822のバージョンをどこまで戻したかお教えください.

09 Dec 2016

Sotoshi Hasegawaです。 オンラインコンパイラで、かつmbedのままでビルドをするのでしたら、ソフトデバイス s130 v1を利用するバージョンになってしまいすが、それでよろしければ、mbed ver113, BLE_API ver 1041, nRF51822 ver.540まで戻しました。

自分は、ソフトデバイス s130 v2を利用したくて、GCC(オフライン)で最新のバージョンでmbedは、mbe-devを利用しました。 セキュアなDFUを試してみたかったので。

09 Dec 2016

ありがとうございます.オンラインIDEでバージョンを戻したらところ,動作しました.