やまちゃんのオーディオブログ

真空管アンプ、最近は資金調達のためのFX,MetaTrader4ネタもやっています。

STM32F4 wavファイル再生

STM32F4 COIDE2.0プロジェクトの移植、作成3 ソースデバッグprintfできました!

投稿日:2016年5月13日 更新日:

STM32F4discovery COIDE2.0

ソースデバッグprintfもどきができました。
CoIDE上で、表示したい情報を表示できます。
COIDEを使えばだれでもできます。
コムポートも、TERA TERMも不要です。
USBを介して、Semihostingなるものを使い、STM32と通信するからです。

設定方法
0 COiDEのプロジェクトを立ち上げておく。
1 VIEWタブ configurationコマンド→ Debuggerタブ
→Semihosting Enableのトグルをオン

2 VIEWタブ configurationコマンド→ LINKタブ
「Options:」の項目のところ、「Library:」の項目のタブを、「Semihosting」とする。
上記のうち、1、2両方が必要なのかは、よく分からない。

3 アイコンのうち、丸の中に3つの色つきの丸があるもの「Welcome」の
「Browse in Repository」を開く。

4 「coocox-master / Semihosting」を選択し、「+Add」ボタンを押すと、
プロジェクトに「Semihosting」というライブラリが追加される。
5 上記4で、仮にSTM32F407VG等のマイコン名称が羅列された場合、
STM32F407VGをクリックし、「Component」をクリックする。

6 上記4で、仮に「New Project」などの項目が羅列された場合、
「Component」をクリックする。

7 main関数のところ、
「SH_SendString(“Hello World”);」を入れる。

8 コンパイルアイコンを押す。
なお、semihosting.cでワーニングが出るかもしれない。
気になる方は直してください。

9 「Download Code to Flash」アイコン

10 虫アイコン(デバッグ)を押す。

11 「SH_SendString(“Hello World”);」の次の行にカーソルを置き、
Run to Line 「→|」アイコンを押す。

12 右下の「Semihosting」の部分に、Hello Worldが現れます!
Hello World
ただし、SH_SendStringの入力はConstです。
これを直すにはさらに検討が必要です。

Printfに埋め込むという方法があるようですが、
この場合、coocox-master / Retarget_printfを「Browse in Repository」の中から選択し、付け加えます。
この場合、objファイルの中のprintf.oというファイルとコンフリクトになり、エラーとなります。
printfをいじる場合には、printf.oの登録をCoIDEから抹消するしかないと思います。

<2016.5.22追加>
CoIDEを使ってSTM32F4 DiscoveryでTDD(Unity)をやってみた」というサイトが参考になりました。
私はUnityはしませんでしたが、ソースデバッグ中に、ボードから出力されたprintfをCoIDEに出力するには、このサイトが参考になります。
上記coocox-master / Retarget_printfを付け加えた場合、注意すべきは、
①printfを使用する「xx.c」ファイルでインクルードするのは、「stdio.h」であること、
②Retarget_printfのprintf.cにあるprintf関数は使わないこと、
したがって、printfを使用する当該「xx.c」では、printf.cをインクルードしない、
また、printf.hを作ってインクルードするなどもしない。
→おそらく、stdio.h内のprintfを実行すると、後述⑤の処理が呼び出される構図になるイメージ。
③Retarget_printfのprintf.cで、semihosting.hをインクルードすること
(「#include”semihosting.h”」とする。 )、
④上記のサイトでは、下の方にあるのですが、
「 struct _reent *_impure_ptr = &r;」をコメントアウトして、
「// struct _reent *_impure_ptr = &r;」ととします。
⑤printf.c内を、CoIDEでなく、別のエディタ(例えばprogrammer’spad)で編集して、
以下のように「SH_SendChar(c);」を付け加える。
「void PrintChar(char c)
{
/* Send a char like:
while(Transfer not completed);
Transmit a char;
*/
SH_SendChar(c);
}」
⑥上記1、2のコンフィグファイルの設定変更
1 VIEWタブ configurationコマンド→ Debuggerタブ
→Semihosting Enableのトグルをオン

2 VIEWタブ configurationコマンド→ LINKタブ
「Options:」の項目のところ、「Library:」の項目のタブを、「Semihosting」とする。

の以上です。

-STM32F4 wavファイル再生

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

STM32F4 COIDE2.0用playbackプロジェクトの移植、作成(パート2)

前申したプロジェクトの公開だけど、著作権侵害などが怖いので、とりあえず延期しました。 前回に引き続き、STM32のデバッグネタ。 前回の続きで、stm32のエラー修正ネタTIPS。 ちょっとだけエラー …

no image

STM32F4でwavファイル再生!COIDE2.0用playbackプロジェクトの移植、作成

STM32F4discoveryでwavファイルを再生できました!! マイコンが実用的に見えてきた初めての出来事で、私にとっては記念すべきことでした。 COIDEは、フリーで容量制限がない開発環境です …

no image

STM32F4 COIDE2.0プロジェクトの移植、作成4 ファイルの一覧表示、漢字表示1

ファイルの一覧表示、漢字表示1 ファイルの一覧表示をするには、stm32で提供されたものではなくて、 別途chaN氏のfatfsをダウンロードして、その中のscanfilesをコピーし、 scanfi …

[最近の記事]
2016年5月
1234567
891011121314
15161718192021
22232425262728
293031