TYBLE16 Module as Mbed OS 5 Board (mbedlization)

/media/uploads/kenjiArai/tyble16_size_Nm6vsx7.jpg

2019/12/28 対処療法ですが、DAPLinkの書込み方法を暫定案として記載
2019/12/20 LPC11U35/DAPLinkで書き込みが上手くいかない症状が発覚しました
2019/12/19 プログラムを更新+新規プログラム
2019/2/13 プログラム更新(ベースmbed-os-5.10.4)

1.注意事項及び免責

重要

TYBLE16をMbedボードとして、Mbed OS 5上で動作させることが出来ました。
しかしながら、まだ充分な確証があるわけではありません。
実際の改造は自己責任で進めてください。
ファームエアを上書きしてしまい、二度と元の状態に戻せません!!!
TYBLE16には、太陽誘電が開発した独自のファームウェアが書き込まれて出荷されています。
本来の目的は、そのファームウェアを駆使してClient(Central)とServer(Peripheral)間の通信を行うものです。
ここで紹介する方法は、TYBLE16のファームウェアを書き換えてしまい、TYBLE16のみでMbedのプログラムを走らせます。
もう一度書きます。二度と元のファームウェアに戻せません!!
秋月通商や太陽誘電に対して、更に私に対するクレームは出来ませんので、事前のご理解をお願いします。
あくまでも自己責任として、対応できる方だけ実験してください。
先ずは、本来の機能をお楽しみください。


TYBLE16本来の使用例/Notebook
/users/kenjiArai/notebook/tyble16-module--akizuki/
/users/kenjiArai/notebook/tyble16-module--uart-communication-between-central/
TYBLE16をOS 2上で動作させた例/Notebook
/users/kenjiArai/notebook/tyble16-module-will-become-a-mbed-family--mbedliza/

2.Mbedにするために

TYBLE16は、下記のようなシステム構成となっていて、他のnRF51を流用してMbed上でコンパイルすることが出来ませんでした。

BoardXTAL[MHz]System Clock[MHz]LF SettingROM[kB]RAM[kB]
TYBLE163216internal RC25632

オフラインコンパイラーを使用してMbedのファイル群を修正すれば、動作させることが可能なことは判っていましたが、何とかオンラインコンパイラーで動作させたいと色々な方法を検討しましたが、失敗ばかりでした。
そんな時に下記プログラムが、公開されました。
/users/manhpham/code/Nucleo_rtos_basic_ir_controller/
何がすごいかと言うと、Mbed OS 2 (Classic) で提供されているmbed-devに相当するMbed OS 5のソースファイル群が入っています。
はっきり言って、どんな方法でこの膨大なファイル群がアップロードできたのか、私にはわかりません(どなたか、大量のファイル群をアップロードする方法をご存知なら教えてください Wataraiさんに教えてもらいました。下段、reply参照願います)。
この謂わばmbed-dev-os5を利用すれば、OS5内のファイル修正が可能になります。
今回は、下記のファイルを修正しています。
(1) mbed.h
ファイルは、直下のDirectoryに存在します。
(2) PinNames.h
ファイルは、下記Directoryに存在します。
\mbed-os\targets\TARGET_NORDIC\TARGET_NRF5\TARGET_MCU_NRF51822_UNIFIED\TARGET_NRF51_DK
(3) targets.json
ファイルは、下記Directoryに存在します。
\mbed-os\targets

ライブラリーは、mbed-os-5.10.4(及び5.13も併用)をベースに上記修正とTYBLE16に関係ない部分は削除したファイル群で構成しています。

[Repository '/users/kenjiArai/code/TYBLE16_os5_BASE/rev/cbf8cd268b0d/' not found]

Mbedで設定するボードも重要です。
実は、Nordic nRF51-DKのボードを使っていることとし、コンパイラーをだまして使っています。
従ってボードの選択は、下記のページから自分のボードに登録願います。
/platforms/Nordic-nRF51-DK/
/media/uploads/kenjiArai/nordic_nrf51-dk.png

3.ピン定義

/media/uploads/kenjiArai/tyble16_pins.pdf /media/uploads/kenjiArai/tyble16new.png

4.サンプルプログラム

Import programTYBLE16_mbedlized_os5_several_examples_1st

TYBLE16 on os5 sample programs


当初全てのプログラムをひとつにまとめましたが、UART(7&8)がメモリーオーバーフローで動作しなくなったので分離しました。

Import programTYBLE16_mbedlized_os5_several_examples_2nd

Separated Uart_Clinent & Uart_Server due to memory overflow


プログラムを動作させるには、select_example.cpp内の定義番号を0から9まで選択して切り替えます。

#define EXAMPLE_NUMBER      9
EXAMPLE_NUMBERProgramComments
00_Blinky_LEDLED Blinky
11_Check_RTCCheck RTC function
22_EddyStoneBeaconDemonstration sample program EddyStone Beacon
33_Heart_RateDemonstration sample program Heart Rate
44_RCBControllerPotential usage for Radio Controller (RCB Controller)
55_SDCardDemonstration sample program SD Card
66_ThermoDemonstration sample program Thermometer
77_Uart_ClientUart Client(Central) Baudrate=115200
88_Uart_ServerUart Server(Peripheral) Baudrate=115200
99_MonitorCheck nRF51 CPU functions

2019/12/19 新規プログラム追加

Import programTYBLE16_simple_data_logger

1st working program

FRAMに大気圧、温度、湿度のデータを収集するためのプログラムです。
2分毎の起動に設定すると、2秒程度起動しデータ収集後Sleepしますので、FRAM2Mbitsで20日間以上の記録が可能です。

5.プログラム書き込み方法

重要

2019/12/20追記
購入直後のTYBLE16をLPC11U35/DAPLinkボードで書き込むとうまく動作しないことを確認しました!
一度でもTSUBOLink-IIにて何らかのMbedプログラムを書き込んだ後であれば、LPC11U35/DAPLinkでも書き込みが問題なくできます。
しかし、購入直後で一度も書き込みをしていない状態では、プログラム書き込みがうまくできないことが本日判明しました。
手元にあったモジュールがすべてTSUBOLink-IIで書き込んだ履歴があったので、確認が遅れてしまい申し訳ありませんでした。
2019/12/28追記
0254_lpc11u35_sscity_0x0000.binを利用すれば、最初の書込みから問題なく動作することを確認しました。

下記のモジュールを用意します。
LPC11U35かTSUBOLink-IIのどちらか一方で対応可能です。

モジュール情報先
TYBLE16http://akizukidenshi.com/catalog/g/gK-12339/
LPC11U35(追記DAPLINK用)http://akizukidenshi.com/catalog/g/gK-12144/
TSUBOLink-II (HRM1017用)https://www.switch-science.com/catalog/1829/

2019/12/19 追記
LPC11U35でもDAPLinkを書き込んで、対応できます。
最新版バイナリーファイルを集めたZIPファイルを下記からダウンロードします。
https://github.com/ARMmbed/DAPLink/releases/tag/v0254
2019/12/19時点では、下記が最新です。
0254_release_package_f499eb6e.zip
解凍後に、
0254_lpc11u35_dipdap_sdt51822b_0x0000.bin
を使用してLPC11U35モジュールをBOOTモード(SW1を押したまま、RESETスイッチ操作)にした状態で、元に見えるfirmware.binを削除してから、Copy&pasteで書き込みます。
正常に書き込みが終了するとDAPLINKのドライブとしてMBEDのリンク先とDETAILS.TXTが見えるようになります。
書き込み時の接続は、下記を参照ください。
/media/uploads/kenjiArai/daplink_tyble16_mbed_if.png

注意点)
スイッチサイエンスの商品紹介ページには、
「nRF51822を搭載した他のモジュールへの書き込みは検証しておりません。」
と書かれています。この点も、自己責任で進めてください。
/media/uploads/kenjiArai/mbedlized_3.png

6.動作例

BME280とLCDはI2Cラインに接続
/media/uploads/kenjiArai/lcd_temp_sen.jpg

SDCard制御
/media/uploads/kenjiArai/sdcard00.jpg

データロガー用に手作りした基板
/media/uploads/kenjiArai/tyble16_board.png


4 comments on TYBLE16 Module as Mbed OS 5 Board (mbedlization):

13 Feb 2019

Quote:

はっきり言って、どんな方法でこの膨大なファイル群がアップロードできたのか、私にはわかりません(どなたか、大量のファイル群をアップロードする方法をご存知なら教えてください)。

https://github.com/ARMmbed/mbed-os からForkしたリポジトリをURLインポートすると、オンラインIDE上でソースが全部見れます(変更も出来ます)。Local Revisionsはリリース単位では無くコミット単位でしか表示されなくなりますが。

13 Apr 2019

Wataraiさん、ここを見に来るのをさぼっており、レスが大変遅れて申し訳ありません。
早速、上記方法でmbed-os最新版がインポート出来ることが確認出来ました。
ご教示、ありがとうございました。

17 May 2019

はじめまして。サンプルプログラムにつきまして、CLI(OS 5)でのコンパイルは可能でしょうか。私の環境ですと、Cannot find the mbed tools directoryとエラーがでます。お手数ですが、お教えいただけますと幸いです。

05 Jun 2019

murakamiさん、反応が遅くてすみません。CLIは使用していないので、適切なアドバイスが出来ません。
mbed-os(OS5) をGitHubからForkした際に、不要と思われるTarget内の他のCPU部分などを削除しています。
toolのDirectry部分も削除しました。
https://github.com/ARMmbed/mbed-os/tree/master/tools
の部分をそっくり持ち込んでくると、上記エラーは無くなる(他のエラー出現は不明)のではないでしょうか?
お役に立てずに申し訳ありません。

Please log in to post comments.