ラベル NUCLEO の投稿を表示しています。 すべての投稿を表示
ラベル NUCLEO の投稿を表示しています。 すべての投稿を表示

2015年8月14日金曜日

STM32 ST-LINK Utilityでフラッシュ書込み

NUCLEO-L152REはmbedインターフェースのドラッグ・アンド・ドロップでもフラッシュ書込みが出来るのだが、
EmBitzのメニューからSTM32 ST-LINK Utilityを使えるようにします。

インストール
次のサイトから STSW-LINK004 stsw-link004.zip をダウンロードします。
http://www.st-japan.co.jp/web/jp/catalog/tools/PF258168
zipファイルを展開すると STM32 ST-LINK Utility_v3.7.0.exe が出来るので実行してインストールします。

STM32 ST-LINK Utilityを起動してNUCLEO-L152REが認識するのを確認します。
左から3個目のアイコンまたはメニューのTarget-ConnectでボードのMCUの情報が読み取れます。


EmBitzの設定
EmBitzでhexファイルを作成するように
メニューのProject-Properties-Build TargetsでGenerate Hex fileのチェックを入れます。


EmBitzのメニューのTools-Configure tools-Addで
次のようにコマンドライン版のST-LINK_CLI.exeを設定します。
parameters: -P ${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex -Rst
-P オプションはフラッシュ書込み、 -Rst オプションはリセットの意味です。


フラッシュ書込み
EmBitzのメニューのTools - STM32 ST-LINK Utilityでフラッシュ書込みが出来るようになります。

(2015/8/14)
---

2014年10月23日木曜日

mbedオフライン環境にCoIDEを使う



Nucleo F401REのmbedのオフライン環境にMDK-Liteを使っていたのだが、
32Kバイトを超えるコードはリンク出来ないのでサイズ制限のないCooCox CoIDEを試してみました。

CoIDEのインストールと設定


CooCoxのサイトからCoIDEをダウンロードしてインストールする。
http://www.coocox.org/CooCox_CoIDE.htm
http://www.coocox.org/Tools/coIDE-1.7.7.exe 422MB(442,827,819バイト)

CoIDEを起動して、Toolchain Path を設定する。


本来はgccを新規にインストールするのだが、LPCXpresso付属のgccを使う。


プログラムのエクスポート


mbedオンラインコンパイラのexportの変更によりmbedライブラリが付くようになりましたのでmbed-srcへの変更は必要なくなりました。
mbedオンラインコンパイラからexportする前にmbedライブラリを mbed-src に切替える。
(mbedライブラリを削除して mbed-src をインポートする)
http://developer.mbed.org/users/mbed_official/code/mbed-src/


プログラムをToolchain CooCox CoIDE形式でエクスポートする。


exportしたファイル Nucleo_blink_led_coide_nucleo_f401re.zip を展開する。

CoIDE でプロジェクトファイル Nucleo_blink_led.coproj を開く。(Open Project…)

リビルドする。(Rebuild)

実行コードをNucleo-F401REに書き込み、実行する。(Download Code To Flash)

現在の問題点

wait()関数が速くなってLチカが10倍くらい速く動く。
しかし、printf()を実行した後なら正しい時間間隔になる。原因は未調査です。

(2014/10/23)
(2014/11/1)修正 mbed-srcへの変更、現在の問題点を削除。
---

2014年6月12日木曜日

Nucleo F401RE用のUSBホストライブラリの試作



Nucleo F401REはmbedのUSBホストでサポートされていないので簡易版を試作してみました。

ホストチャネルドライバ(stm32f4xx_hal_hcd.c)を改造してKL46Z-USBHostのハードウェア依存部分への
インターフェースを互換にしたので、USBDeviceのようにターゲットを切替えるだけでNucleo F401REと
FRDM-KL46Zは同じライブラリを使えるようにしました。
ですのでKL46Zで使うだけなら以前に作成したKL46Z-USBHostと完全互換です。

KL46Zの場合は1つのエンドポイントパイプを全てのエンドポイントが共有して送受信していましたが、
F401REでは8個のエンドポイントパイプ(ホストチャネル)を持っているので、
コントロール転送、バルク転送、インタラプト転送、アイソクロナス転送で分けて使っています。

たぶん、KL46Zのように共有できると思うのですが、ホストチャネルHALTの仕組みを完全に理解していないのと、
デバッグで各チャネルのレジスタの振る舞いがみたいので、暫時分けています。
今のところアイソクロナス転送は1つだけに限定しています。

ホストチャネルドライバは汎用USBホストに使うよりは、
あらかじめ接続されるUSBデバイスが解っているUSBホストの作成には相性がよさそうです。

現在の重大な不具合はUSBメモリへの書き込みが出来ない。
BOT(バルクオンリー転送)での書き込みに失敗します。
送信FIFOの容量が足りないのか、連続トークンOUTがいけないのか今後調べてみたいです。


使用例をmbedサイトに置きました。KL46Z用のサンプルプログラムでライブラリを入れ替えただけです。
他にもGPSレシーバー(バルク転送IN)、マウス(インタラプト転送IN)は動きました。

Webカメラの使用例(アイソクロナス転送IN)
F401RE-USBHostC270_example

BTstackでの使用例、Bluetoothマウスからの受信のみ。(インタラプト転送IN、バルク転送IN,OUT)
F401RE-BTstack_example

参考:
stm32f4xx_hal_hcd.c
stm32f4xx_ll_usb.c
RM0368 Reference manual STM32F401xB/C and STM32F401xD/E advanced ARM-based 32-bit MCUs
UM1720 User manual STM32Cube™ USB host library

(2014/6/12)

USBメモリへの書き込み不具合を解消しました。
F401RE-USBHost

(2014/6/13追加)
---