• R/O
  • HTTP
  • SSH
  • HTTPS

uzume_bfin: Commit

UzumeフレームワークのBlackfin実装


Commit MetaInfo

Revision5008769de6f250a7db77b4e5dd6be23f5d9f2a27 (tree)
Time2013-02-09 20:18:39
Authorsuikan <suikan@user...>
Commitersuikan

Log Message

ACB-BF592, SGTL5000によるブレッドボード用BSPを追加。動作確認済み

Change Summary

Incremental Difference

--- /dev/null
+++ b/uzumeapp/kernel/config/blackfin/bsp_bb_bf592_sgtl5000_nts/Makefile.config
@@ -0,0 +1,29 @@
1+#
2+# Makefile のターゲットシステム依存部(bsp_bluetank用)
3+#
4+
5+#
6+# コンパイルオプション
7+#
8+INCLUDES := $(INCLUDES) -I$(SRCDIR)/config/$(CPU)/$(SYS) \
9+ -I$(SRCDIR)/config/$(CPU)/_common_bf592 \
10+ -I$(SRCDIR)/pdic/simple_sio \
11+ -I$(SRCDIR)/uzume \
12+ -I$(SRCDIR)/uzume/ntshell
13+COPTS := $(COPTS)
14+LDFLAGS := $(LDFLAGS)
15+
16+#
17+# カーネルに関する定義
18+#
19+KERNEL_DIR := $(KERNEL_DIR) :$(SRCDIR)/config/$(CPU)/$(SYS) :$(SRCDIR)/config/$(CPU)/_common_bf592 :$(SRCDIR)/pdic/simple_sio :$(SRCDIR)/uzume :$(SRCDIR)/uzume/ntshell
20+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
21+KERNEL_COBJS := $(KERNEL_COBJS) chip_config.o uart.o chip_debugboot.o chip_dump.o
22+KERNEL_COBJS := $(KERNEL_COBJS) i2s_subsystem.o i2c_subsystem.o uzume_callback.o sgtl5000.o bsp_bb_bf592_sgtl5000_nts.o
23+KERNEL_COBJS := $(KERNEL_COBJS) ntlibc.o ntopt.o ntshell.o ntshell_task.o text_editor.o text_history.o vtrecv.o vtsend.o xprintf.o
24+
25+#
26+# リンカスクリプトの定義
27+#
28+LDSCRIPT = $(CPU)/_common_bf592/bf592elf.ld
29+
--- /dev/null
+++ b/uzumeapp/kernel/config/blackfin/bsp_bb_bf592_sgtl5000_nts/readme.txt
@@ -0,0 +1,13 @@
1+ACB-BF592, SGTL5000 ブレッドボード用Board Support Package ( BF592 )。
2+
3+
4+Makefile.configは、インクルード・パスおよびソースファイルへのパスとしてblackfin/_common_bf592を
5+指定している。
6+
7+- Makefile.config : gnu環境のためのシステム依存部定義ファイル
8+- readme.txt : このファイル
9+- sys_config.h : システム依存部のうち、アプリケーションから見えない宣言
10+- sys_defs.h : システム依存部のうち、アプリケーションから見える宣言
11+
12+2013/Feb/10
13+ 初版
--- /dev/null
+++ b/uzumeapp/kernel/config/blackfin/bsp_bb_bf592_sgtl5000_nts/sys_config.h
@@ -0,0 +1,208 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ *
9+ * TOPPERS/JSP for Blackfin
10+ *
11+ * Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12+ * Copyright (C) 2004 by Ujinosuke
13+ *
14+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15+ * によって公表されている GNU General Public License の Version 2 に記
16+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18+ * 利用と呼ぶ)することを無償で許諾する.
19+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21+ * スコード中に含まれていること.
22+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25+ * の無保証規定を掲載すること.
26+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28+ * と.
29+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32+ * 報告すること.
33+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35+ *
36+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40+ *
41+ *
42+ */
43+
44+
45+#ifndef _SYS_CONFIG_H_
46+#define _SYS_CONFIG_H_
47+
48+/*
49+ * カーネルの内部識別名のリネーム
50+ */
51+#include <sys_rename.h>
52+
53+/* blackfin/_common_bf533から読み込む */
54+#include <chip_config.h>
55+
56+/*
57+ * ターゲットシステム依存モジュール(BSP-BLUETANK用)
58+ *
59+ * このインクルードファイルは,t_config.h のみからインクルードされる.
60+ * 他のファイルから直接インクルードしてはならない.
61+*/
62+
63+/*
64+ * どのようなクロック入力にも対応できるよう、以下でCSEL, SSEL, MSELの値
65+ * とクロック入力周波数(Hz)を指定する。PLLのプログラムはsys_config.cの
66+ * sys_initialize()関数で行われる。
67+ *
68+ * CSELVALは1,2,4,8の中から選ぶ。CLKINの単位はHz
69+ */
70+
71+#define CSELVAL 1
72+#define SSELVAL 4
73+#define MSELVAL 16
74+#define CLKIN 25000000
75+
76+/*
77+ * Uzumeコンフィギュレーションマクロ群
78+ *
79+ * Uzumeの各機能モジュールはハードウェアに応じた自由度を持っている。それらの設定をデフォルト以外で
80+ * 使う場合には引数となるマクロをシステム依存部のsys_config.hで宣言する。
81+ *
82+ * UZUME_INT_BITS はaudio_callback()の引数として渡されるオーディオ・サンプルの整数値の何ビット取るか
83+ * 指定する。デフォルトは0である。符号部を除く整数部を7ビット取りたければ、7を指定する。
84+ *
85+ * UZUME_BLOCKSIZE は一回のDMA転送で転送するデータのサンプル数である。ステレオデータなので、実際に転送する
86+ * データ数は UZUME_BLOCKSIZEで指定した量の倍のデータである。48kHzサンプルの場合に48を指定すると、1m秒に
87+ * 一回割り込みがかかる。
88+ *
89+ * UZUME_UZUME_SGTL5000_I2C_ADRS はSGTL5000 コーデックの I2Cデバイスアドレスである。7bitアドレスを右詰めで表現する
90+ * デフォルトは0x0A
91+ *
92+ * UZUME_AD7999_I2C_ADRS はAD7999 ADCの I2Cデバイスアドレスである。7bitアドレスを右詰めで表現する。
93+ * デフォルトは 0x28
94+ *
95+ * その他、I2Cペリフェラルのポート番号を指定するマクロもあるが、2012年時点で0以外には対応していないので
96+ * ここでは説明しない。
97+ */
98+
99+//#define UZUME_BLOCKSIZE 64
100+//#define UZUME_INT_BITS 0
101+//#define UZUME_SGTL5000_I2C_ADRS 0x0A
102+
103+// #define MAIN_TASK_PRIORITY 7
104+// #define LOGTASK_PRIORITY 5
105+// #define CODEC_TASK_PRIORITY 4
106+
107+// #define MAIN_TASK_STACK_SIZE 1024
108+// #define LOGTASK_STACK_SIZE 1024
109+// #define CODEC_TASK_STACK_SIZE 1024
110+
111+/*
112+ * システムタイマーの選択
113+ * USE_TIC_COREをdefineすると、COREタイマーが使用される
114+ * コメントアウトすると、GP_TIMER_2を使用する
115+ *
116+ * COREタイマーはwakeup信号を生成しないため、ディスパッチャ
117+ * はidle命令を使ってCOREタイマーイベントを待つことができない。
118+ * そのため、USE_TIC_COREを使うとディスパッチャはidle命令を
119+ * 使わずに割り込み発生をポーリングで待つ。これは消費電力の
120+ * 点で不利である。
121+ *
122+ * システムタイマーにコアタイマーを使うことは、推奨しない。
123+ * この機能は、移植時の利便性のために残しており、実アプリケーションで
124+ * つかうことは想定していない。
125+ *
126+ */
127+//#define USE_TIC_CORE
128+
129+/*
130+ * ハードウェア・エラー割り込みの許可
131+ * QUICK_HW_ERRORをdefineすると、ハードウェア・エラー・イベント
132+ * が即座に受理される。defineしない場合には、割り込み待ち状態で
133+ * ハードウェア・エラー・割り込みが発生した場合、次の割り込みまで
134+ * 待たされることになる。
135+ *
136+ */
137+//#define QUICK_HW_ERROR
138+
139+
140+/*
141+ * 実行時初期化関数の使用
142+ *
143+ * マクロ USE_RUNTIME_INIT を定義すると、start.asmのなかで _mi_initialize
144+ * を呼び出す。この関数はノーブートモードで起動するときにのみ必要になるので
145+ * 通常は USE_RUNTIME_INITを使う必要はない。
146+ * 詳細はADIのEE239に詳しい。http://tinyurl.com/2hpbk (tinyURL)
147+ *
148+*/
149+//#define USE_RUNTIME_INIT
150+
151+/*
152+ * カーネル管理外割り込みの宣言
153+ *
154+ * マクロUNMANAGED_INTはカーネル管理外割り込みを宣言する。この
155+ * マクロは16ビットのビットマップになっており、以下にあるパターン
156+ * のうちひとつを使う。なお、どのようなパターンを選んでもNMIは管理外
157+ * 割込みとして扱われる。
158+ * UNMANAGED_INTを宣言しない場合、NMIだけが管理外割込みとして扱われる。
159+ *
160+*/
161+//#define UNMANAGED_INT 0x0020 // IVHWがカーネル管理外.
162+//#define UNMANAGED_INT 0x0060 // IVTMRとIVHWがカーネル管理外.
163+//#define UNMANAGED_INT 0x00E0 // IVG7, IVTMRとIVHWがカーネル管理外.
164+//#define UNMANAGED_INT 0x01E0 // IVG8 ... IVG7, IVTMRとIVHWがカーネル管理外.
165+//#define UNMANAGED_INT 0x03E0 // IVG9 ... IVG7, IVTMRとIVHWがカーネル管理外.
166+//#define UNMANAGED_INT 0x07E0 // IVG10 ... IVG7, IVTMRとIVHWがカーネル管理外.
167+//#define UNMANAGED_INT 0x0FE0 // IVG11 ... IVG7, IVTMRとIVHWがカーネル管理外.
168+//#define UNMANAGED_INT 0x1FE0 // IVG12 ... IVG7, IVTMRとIVHWがカーネル管理外.
169+//#define UNMANAGED_INT 0x3FE0 // IVG13 ... IVG7, IVTMRとIVHWがカーネル管理外.
170+
171+/*
172+ * C++関連資源を用意する
173+ *
174+ * マクロINIT_C_PLUS_PLUSを定義すると、C++言語用のテーブルを
175+ * 初期化コードを実行する。また、C++言語用のテーブルを宣言する
176+ *
177+*/
178+// #define INIT_C_PLUS_PLUS
179+
180+/*
181+ * 起動メッセージのターゲットシステム名
182+ */
183+#define TARGET_NAME "BSP-BB-BF592-SGTL5000-NTS"
184+
185+
186+/*
187+ * シリアルポート数の定義
188+ * TNUM_SIOP_XXXは、UARTの種別ごとに宣言する。
189+ * TNUM_SIOP_UARTはBF592内蔵UARTのうち、PDICが使用するもの。
190+ * BF592はUARTをひとつしかもっていないので、1か0を宣言する。
191+ * TNUM_PORTは、TNUM_SIOP_XXXのうち、GDICが使用するものの総和。
192+ * uart.cで使う。
193+ */
194+#define TNUM_PORT 1 /* GDICがサポートするシリアルポートの数 */
195+#define TNUM_SIOP_UART 1 /* PIDCがサポートするシリアルポートの数 */
196+
197+/*
198+ * シリアルポート番号に関する定義
199+ * ログタスクがシリアルポートを使わない場合は無視していい。
200+ */
201+#define LOGTASK_PORTID 1 /* システムログに用いるシリアルポート番号。UART0はシリアルポート1である */
202+
203+/* UART0のボーレート. */
204+#define UART0_BAUD_RATE 57600 /* 57600 bps*/
205+
206+
207+
208+#endif /* _SYS_CONFIG_H_ */
--- /dev/null
+++ b/uzumeapp/kernel/config/blackfin/bsp_bb_bf592_sgtl5000_nts/sys_defs.h
@@ -0,0 +1,80 @@
1+/*
2+ * TOPPERS/JSP Kernel
3+ * Toyohashi Open Platform for Embedded Real-Time Systems/
4+ * Just Standard Profile Kernel
5+ *
6+ * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7+ * Toyohashi Univ. of Technology, JAPAN
8+ *
9+ * TOPPERS/JSP for Blackfin
10+ *
11+ * Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12+ * Copyright (C) 2004 by Ujinosuke
13+ *
14+ * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15+ * によって公表されている GNU General Public License の Version 2 に記
16+ * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17+ * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18+ * 利用と呼ぶ)することを無償で許諾する.
19+ * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20+ * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21+ * スコード中に含まれていること.
22+ * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23+ * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24+ * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25+ * の無保証規定を掲載すること.
26+ * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27+ * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28+ * と.
29+ * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30+ * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31+ * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32+ * 報告すること.
33+ * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34+ * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35+ *
36+ * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37+ * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38+ * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39+ * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40+ *
41+ *
42+ */
43+
44+
45+/*
46+ * ターゲットシステムに依存する定義(BSP-BLUETANK用)
47+ *
48+ * このインクルードファイルは,kernel.h と sil.h でインクルードされる.
49+ * 他のファイルから直接インクルードすることはない.このファイルをイン
50+ * クルードする前に,t_stddef.h と itron.h がインクルードされるので,
51+ * それらに依存してもよい.
52+ */
53+
54+#ifndef _SYS_DEFS_H_
55+#define _SYS_DEFS_H_
56+
57+/* blackfin/_common_bf592から読む */
58+#include <chip_defs.h>
59+
60+ /* システム略称  jsp/doc/config.txtの 2.(8)を参照 */
61+#define BSP_BB_BF592_SGTL5000_NTS
62+
63+/*
64+ * 破壊性読み出しレジスタの判別式
65+ * 与えられたアドレス iop が破壊性読み出しレジスタの
66+ * 場合には真を返す。
67+ *
68+ * ADSP-BF592の内蔵ペリフェラルについて考慮する必要はない
69+ * 宣言しない場合は、デフォルトで外部ペリフェラルはすべて
70+ * 破壊性読み出しとして扱われる
71+ *
72+ * ADSP-BF592は外部ペリフェラルを持つことができないので、
73+ * 無視していい
74+ *
75+ */
76+// #define DESTRUCTIVE_READ( iop ) (iop<(VP)0xF0000000)
77+
78+
79+
80+#endif /* _SYS_DEFS_H_ */
--- /dev/null
+++ b/uzumeapp/kernel/uzume/bsp_bb_bf592_sgtl5000_nts.c
@@ -0,0 +1,50 @@
1+/**
2+ * @file bsp_bluetank.c
3+ * @author takemasa
4+ * @brief ACB-BF592, SGTL-5000ブレッドボード用のリソース
5+ * @details
6+ * ここにはBSP専用のリソースを置く。実際にはボードの初期化子を置く。
7+ */
8+#include <s_services.h>
9+#include <t_services.h>
10+#include <cdefBF592-A.h>
11+#include <bsp_bb_bf592_sgtl5000_nts.h>
12+#include <rotenc.h>
13+
14+void board_initialize(VP_INT exinf)
15+{
16+ // ADSP-BF592 PORTG設定
17+ // DR0PRI, RSCK0, RFS0, TD0PRI, TSCK0, TSF0をMUXで0 ( Primary func )にする
18+ *pPORTG_MUX &= ~0x00ee;
19+
20+ // ADSP-BF592 PORTG設定
21+ // DR0PRI, RSCK0, RFS0, TD0PRI, TSCK0, TSF0をFERでイネーブルにする
22+ *pPORTG_FER = 0x00ee;
23+}
24+
25+/**
26+ * \brief ボリューム値の取得
27+ * \param ch 0から始まるチャンネル指定番号。
28+ * ^return 取得したチャンネルの値
29+ * \details
30+ */
31+
32+fract32 get_volume(unsigned int ch)
33+{
34+ if ( ch >= UZUME_NUM_VOLUME)
35+ return 0;
36+
37+ return 0x7FFFFFFF;
38+}
39+
40+/**
41+ * \brief ボリューム値の設定
42+ * \param ch 0から始まるチャンネル指定番号。AD7999は3まで
43+ * \param value 32bit符号付き固定小数点数のボリューム設定値
44+ * \details
45+ * ボリュームに初期値を与える。
46+ */
47+
48+void set_volume(unsigned int ch, fract32 value)
49+{
50+}
--- /dev/null
+++ b/uzumeapp/kernel/uzume/bsp_bb_bf592_sgtl5000_nts.cfg
@@ -0,0 +1,10 @@
1+#include "i2c0_m.cfg"
2+#include "i2s.cfg"
3+
4+INCLUDE("\"bsp_bb_bf592_sgtl5000_nts.h\"");
5+
6+ATT_INI({
7+ TA_NULL, /* 高級言語でインターフェースする */
8+ 0, /* イニシャライザに渡すパラメタ。0はTWI0 */
9+ board_initialize /* イニシャライザ本体 */
10+ });
--- /dev/null
+++ b/uzumeapp/kernel/uzume/bsp_bb_bf592_sgtl5000_nts.h
@@ -0,0 +1,54 @@
1+/**
2+ * @file bsp_bluetank.h
3+ * @author takemasa
4+ * @brief ACB-BF592, SGTL-5000ブレッドボード用のリソース
5+ * @details
6+ * ここにはBSP専用のリソースを置く。実際にはボードの初期化子を置く。
7+ */
8+
9+/**
10+ * @mainpage
11+ * ACB-BF592, SGTL-5000ブレッドボード用のBSP (Board Support Package)
12+ *
13+ * Uzumeを使う上のBSPは以下の構成になっている
14+ * @li uzume/bsp_bb_bf592_sgtl5000_nts.cfg アプリケーションから読み込むべき
15+ * 静的コンフィギュレーション・ファイル
16+ * @li config/blackfin/bsp_bb_bf592_sgtl5000_nts BSPのシステム依存部
17+ * @li uzume_callback.c ユーザー用オーディオコールバックと初期化部の実装
18+ * @li uzume_app.c ユーザーアプリケーションが使うタスク。
19+ * @li uzume_app.cfg アプリケーション
20+ *
21+ * BSPを使う場合には、次のようにする
22+ * @li システム依存部から適切なBSPを選ぶ。
23+ * インクルードする
24+ * @li configure_projectを実行する。この時にすでに選んだBSP名を引数として与える
25+ *
26+ * これでプロジェクトがmake可能になる。
27+ *
28+ * 信号処理のアルゴリズムは uzume_callback.c のなかの process_audio() に記述する。
29+ * また、信号処理の前に初期以下が必要であれば init_audio() に初期化コードを記述する。
30+ */
31+#ifndef BSP_BB_BF592_SGTL5000_NTS_H
32+#define BSP_BB_BF592_SGTL5000_NTS_H
33+
34+/**
35+ * \breif ボリューム入力のチャンネル数
36+ * \details
37+ * BSPが持つボリュームのチャンネル数。ここでいうボリュームはポテンショメータに限らない。
38+ * ロータリーエンコーダーなども含む。また、システムが複数種のボリューム(例えばADCと
39+ * ロータリーエンコーダー)を持つ場合には、それらのチャンネル数の総和である。
40+ */
41+
42+#define UZUME_NUM_VOLUME 4
43+
44+/**
45+ * \brief ボード・イニシャライザ
46+ * \param exinf 0を渡す。関数からは無視される。
47+ * \details
48+ * BSP用のイニシャライザである。アプリケーションに依存せず、uzumeが
49+ * 必要とする初期化処理をおここで行う。具体的にはI2S用のピンの割付を行う
50+ */
51+void board_initialize(VP_INT exinf);
52+
53+#endif /* BSP_BLUETANK_H */
54+
Show on old repository browser