Bluetooth の変更点
[[2014-08]]
*PIC32MX で btstack を試す。 [#sad11562]
''[[btstack:https://code.google.com/p/btstack/]]というオープンソースのBluetoothスタック''を試します。
-https://code.google.com/p/btstack/issues/detail?id=407
-すでに、移植されていらっしゃる方がおられましたので、この稿では力弱く、再現テストのような追っかけになっております。
~
''目次''
#contents
~
~
~
---------
*Bluetooth( btstack for PIC32 )のビルド環境を用意します [#v0a43f02]
-説明のため、以下のようなディレクトリ構成を用意します。(Windows)
D:/work/pic32mx/btstack/
~
~
***(1) btstack のソースファイルを上記ディレクトリの下に(svnで)取得します。 [#w9b165fb]
D:/work/pic32mx/btstack/> svn checkout http://btstack.googlecode.com/svn/trunk/
-svnコマンドのインストール方法は[[後述>Bluetooth#svn]]します。
~
***(2) PIC32MXに移植されたコードをtrunkの下にZIP展開します。 [#n4bbfbbf]
-[[上記URL:https://code.google.com/p/btstack/issues/detail?id=407]]から、PIC32.ZIPをダウンロードした後、
D:/work/pic32mx/btstack/trunk/> unzip PIC32.zip
-unzip コマンドのかわりにzipファイルをダブルクリックで仮展開して、trunkの下に、PIC32/ancs/ と来るようにコピーして構いません
~
~
***(3) D:/work/ の下に、MLA(mchip Library) , xc32(compiler) , Pinguino をそれぞれ展開、もしくはインストールします。 [#f3c9f559]
,D:/work/microchip_solutions_v2013-06-15/,MLA, Microchip Library for Application Ver 2013-06-15 を展開。
,D:/work/microchip/xc32/v1.33/,XC32, XC32 Ver 1.33 をインストール、もしくはインストール済ディレクトリーから丸コピー。
,D:/work/pinguinoX.4-rev959/,Pinguino, Pinguino rev959 あるいはそれより新しいVerを展開。
-違う場所にインストールしている場合は、丸コピーする方法を取るか、Makefileを書き換えるかどちらでもOKです。
-XC32コンパイラーは無償版(あるいはお試し版の期限切れ)でOKです。
-mips-gccはPinguino同梱のものを使用します。
~
~
***(4) D:/work/pic32mx/btstack/trunk/PIC32/ancs/Makefile を書き換え [#m752da8e]
Makefile: の最初のところ
MCS=../../../../../microchip_solutions_v2013-06-15
MPBASE=../../../../../microchip/xc32/v1.33
PINPATH=../../../../../pinguinoX.4-rev959
PROGDIR=../../../pic32prog
-インストールディレクトリが異なる場合はそれに合わせてください。
~
***(5) D:/work/pic32mx/btstack/trunk/PIC32/ancs/ で makeを実行。 [#dfb921cb]
-Pinguinoにはパスを通してください。
D:/work/pic32mx/btstack/trunk/PIC32/ancs/> PATH D:\work\pinguinoX.4-rev959\win32\p32\bin;%PATH%
D:/work/pic32mx/btstack/trunk/PIC32/ancs/> make
~
~
~
***トラブルシュート [#vf9e224b]
-Windowsでない場合は、 上記説明から「D:\」を抜いてください。( ~/workとかにします )
-Windows OS にPythonを入れていない場合は、ancs.gattからancs.h が作れないので、ここからコピーしてください。
ancs.h
// ancs.h generated from ancs.gatt for BTstack
// binary representation
// attribute size in bytes (16), flags(16), handle (16), uuid (16/128), value(...)
#include <stdint.h>
const uint8_t profile_data[] =
{
// 0x0001 PRIMARY_SERVICE-GAP_SERVICE
0x0a, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x28, 0x00, 0x18,
// 0x0002 CHARACTERISTIC-GAP_DEVICE_NAME-READ
0x0d, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x28, 0x02, 0x03, 0x00, 0x00, 0x2a,
// 0x0003 VALUE-GAP_DEVICE_NAME-READ-'ANCS Demo'
0x11, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x2a, 0x41, 0x4e, 0x43, 0x53, 0x20, 0x44, 0x65, 0x6d, 0x6f,
// 0x0004 CHARACTERISTIC-GAP_APPEARANCE-READ | WRITE | DYNAMIC
0x0d, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x28, 0x0a, 0x05, 0x00, 0x01, 0x2a,
// 0x0005 VALUE-GAP_APPEARANCE-READ | WRITE | DYNAMIC-''
0x08, 0x00, 0x0a, 0x01, 0x05, 0x00, 0x01, 0x2a,
// GAP Peripheral Privacy Flag
// 0x0006 CHARACTERISTIC-2A02-READ | WRITE | DYNAMIC
0x0d, 0x00, 0x02, 0x00, 0x06, 0x00, 0x03, 0x28, 0x0a, 0x07, 0x00, 0x02, 0x2a,
// 0x0007 VALUE-2A02-READ | WRITE | DYNAMIC-'00'
0x09, 0x00, 0x0a, 0x01, 0x07, 0x00, 0x02, 0x2a, 0x00,
// 0x0008 PRIMARY_SERVICE-GATT_SERVICE
0x0a, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x28, 0x01, 0x18,
// 0x0009 CHARACTERISTIC-GATT_SERVICE_CHANGED-READ
0x0d, 0x00, 0x02, 0x00, 0x09, 0x00, 0x03, 0x28, 0x02, 0x0a, 0x00, 0x05, 0x2a,
// 0x000a VALUE-GATT_SERVICE_CHANGED-READ-''
0x08, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x05, 0x2a,
// END
0x00, 0x00,
}; // total size 74 bytes
//
// list mapping between characteristics and handles
//
#define ATT_CHARACTERISTIC_GAP_DEVICE_NAME_01_VALUE_HANDLE 0x0003
#define ATT_CHARACTERISTIC_GAP_APPEARANCE_01_VALUE_HANDLE 0x0005
#define ATT_CHARACTERISTIC_2A02_01_VALUE_HANDLE 0x0007
#define ATT_CHARACTERISTIC_GATT_SERVICE_CHANGED_01_VALUE_HANDLE 0x000a
~
~
~
-------------
**ビルド成功したら、main32.hexが出来上がります。 [#q7f71ef2]
-Firmwareサイズは約48kBになります。
-PIC32MX220のFlash容量32kBに収めることはほぼ不可能です。
-なので、今回はPIC32MX250を使用します。
//-回路図は、[[USB_HOST]]を参照してください。
~
~
~
//-------------
//**[[シリアルブートローダー>uartflash32]]経由でFlash書き込みしたい。
//
~
~
~
-------------
*SubVersion(svn)のインストールについて [#svn]
-Windows7/8ではSlikSvnがお勧めです
--https://www.sliksvn.com/en/download
-Windows OS のbit数 32bit/64bit に合うほうをDLします。
-実行パスを通します。
~
-そして、実はsvnコマンドはsshコマンドを呼び出すので、sshも必要です。
-これは、MinGW ( http://www.mingw.org )をインストールして、setupから、sshを入れます。
-これは、MinGW ( http://www.mingw.org )をインストール(installerをDLして実行)して、setupから、sshを入れます。
~
~
~
~
-------------
*動作テスト [#ide43cff]
-これから書きます。