Field Data Aquision Unit
Development
&counter([total|today|yesterday]); - 0 - 0 - 14
- WiViCom
- FdauHard
- ToppersDevel
- TinetDevel
- TinetDevelNserv
- FdauMes
- FdauMesSrc
- AkiMes
- AkiToppers
- ToppersLicense
- TOPPERS本家
- ITRON TCP/IPの仕様書
おしらせ†
- TOPPERSカーネルをアップデート1.4.1
- TINETをアップデート1.2.1
TOPPERSアプリケーションの作り方†
TOPPERSディレクトリ直下でconfigureする方法
nservを参考にする方法
本体はtinet/netapp/dbg_cons.c
- Interface誌2003年9月〜連載があった。
- ToppersDevel参照
FDAUアプリケーション†
ファイル一覧†
ファイル名 | 内容 |
adc.h | adc.cのヘッダ |
adc.c | ADC制御関数 |
eeprom.h | eeprom.cのヘッダ |
eeprom.c | EEPROM制御関数 |
fdau.cfg | fdau.cのコンフィギュレーション |
fdau.h | fdau.cのヘッダ |
fdau.c | FDAU全体の制御 |
fdau_cons.cfg | fdau_cons.cのコンフィギュレーション |
fdau_cons.h | fdau_cons.cのヘッダ |
fdau_cons.c | コマンドインタプリタ |
fdml.cfg | fdml.cのコンフィギュレーション |
fdml.h | fdml.cのヘッダ |
fdml.c | FDML変換、送信タスク |
route_cfg.c | ルーティング処理 |
rtc.h | rtc.cのヘッダ |
rtc.c | RTC制御関数 |
定数一覧†
定数名 | 値 | 内容 |
FDAU_PRIHIGH | 9 | FDAU優先度高 |
FDAU_PRIMID | 10 | FDAU優先度中 |
FDAU_PRILOW | 11 | FDAU優先度低 |
FDAU_STACKSIZE | 1024 | FDAUスタックサイズ |
FDAU_AVG_N | 3 | 平均回数 |
RAM_VER | 0x218000 | リングバッファバージョン |
RAM_DSIZE | 0x218001 | 要素のサイズ |
RAM_TOP | 0x218002 | リングバッファTOPポインタ |
RAM_BOTTOM | 0x218004 | リングバッファBOTTOMポインタ |
RAM_START | 0x218010 | リングバッファの先頭 |
RAM_END | 0x21fffff | リングバッファの最後 |
FDML_PRIMID | 5 | FDML優先度中 |
RTC_ADRS | 0x600000 | RTCのベースアドレス |
グローバル変数†
タスク分割†
タスク名 | 優先度 | ファイル | 起動条件 | 内容 |
fdau_rtc_task | 10 | fdau.c | 常時ループ | RTCを読んで、各タスクを起動する |
fdau_sampling_task | 11 | fdau.c | fdau_rtc_task | サンプリングタスク(移動平均SAMPLING_AVR_N回) |
fdau_logging_task | 11 | fdau.c | fdau_rtc_task | ログタスク(固定RAM領域のリングバッファ) |
fdau_send_task | 11 | fdau.c | fdau_rtc_task | FDML送信タスク |
fdml_client_task | 5 | fdml.c | fdau_sampling_task, fdau_send_task | FDMLクライアントタスク |
fdml_send_task | 5 | fdml.c | データキュー | FDAML変換、HTML化、TCPコネクト、TCP送信 |
fdml_recv_task | 5 | fdml.c | fdml_client_task | HTTPレスポンス処理 |
fdau_cons_task | 9 | fdau.c | シリアル入力 | FDAUタスク(メイン&コンソール) |
fdau_rtc_task†
- RTCを読んで、各タスクを起動する
- サンプリング周期になったらfdau_sampling_taskをwup_taskする。
- ロギング周期になったらfdau_logging_taskをwup_taskする。
- 送信周期になったらfdau_send_taskをwup_taskする。
fdau_sampling_task†
- サンプリングタスク(移動平均SAMPLING_AVR_N回)
- もし、送信イベント状態になっていたら、fdml_client_taskをwup_taskする。
fdau_logging_task†
- ログタスク(固定RAM領域のリングバッファ)
- 最終サンプリングデータをRAMリングバッファに格納する
fdau_send_task†
- FDML送信タスク
- fdml_client_taskをwup_task
fdml_client_task†
- FDMLクライアントタスク
- RAMリングバッファの内容をFDML化する
- fdml_recv_taskをwup_task
- fdml_send_taskをwup_task
fdml_send_task†
- FDAML変換、HTML化、TCPコネクト、TCP送信
fdml_recv_task†
fdau_cons_task†
タスク間通信と同期†
ID | 内容 | 取得 | 開放 |
SEM_RAM | リングバッファのセマフォ | アクセス前 | アクセス後 |
汎用関数†
A/D変換器制御(adc.h, adc.c) |
ER adc_init(void); | A/D変換器初期化 |
ER adc_get(UB ch, UH *dat); | A/D変換値を取得 |
EEPROM関数 (eeprom.h, eeprom.c) |
ER eeprom_init(void); | EEPROM I/Fの初期化 |
ER eeprom_gets(UINT adr, UB *dat, UINT len); | 文字列取得 |
ER eeprom_puts(UINT adr, UB *dat, UINT len); | 文字列書込み |
RTC制御 (rtc.h, rtc.c) |
ER rtc_init(void); | RTC I/F初期化 |
ER rtc_set(struct tm *p_tm); | RTCに時刻を設定 |
ER rtc_get(strust tm *p_tm); | RTCから時刻を取得 |
tinet/netapp |
UB *skip_blanks (UB *line); | |
int cons_getline (UB *line, int size); | |
char *get_int (int *val, UB *line); | |
char *get_xuint (unsigned int *val, UB *line); | |
void cons_putchar (ID portid, char ch); | |
int cons_putnumber(ID portid, ULONGEST val, int radix, const char *radchar, int width, BOOL minus, char padchar); | |
void cons_printf (ID portid, const char *fmt, ...); | |
int put_macaddr (ID portid, char *mac, int width); | |
int put_ipv4addr (ID portid, ULONGEST *addr, int width); | |
- RTC関数の引数はstruct tm型とした。p_tm->mdayは1月が0なので注意。
TOPPERSのポーティング†
- システム名fdau10として、config/h8/fdau10を作成
- config/h8/fdau10/release.ld
- RAM領域をCS1に変更
- RAM容量を128Kバイトに変更
- config/h8/fdau10/sys_support.S
- CS1をSRAM領域に変更
- LANC割込みハンドラをIRQ0に変更
- config/h8/fdau10/tinet_sys_config.h
- LANCのベースアドレスを0x400000に変更
- LANCの割り込みをIRQ0に変更
- config/h8/fdau10/Makefile.config
- ROM上で実行させるなら、DBGENVを全てコメントアウト
- H8 to LANC I/Fの変更
- tinet/netdev/if_ed/if_edreg.h
- Makefile内のDBGENV:=は全てコメントアウト
- sample1.cでの動作確認
JSP Kernel Release 1.4 (patchlevel = 0) for FDAU10 (Oct 12 2004, 12:14:16)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
System logging task is started on port 2.
Sample program starts (exinf = 0).
task1 is running (001). |
task1 is running (002). |
task1 is running (003). |
task1 is running (004). |
task1 is running (005). |
task1 is running (006). |
キーには反応なし・・・
フロー制御しなければOK。TOPPERSはフロー制御していない様子。
- nservで動作確認
JSP Kernel Release 1.4 (patchlevel = 0) for FDAU10 (Oct 12 2004, 12:17:26)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
System logging task is started on port 2.
[CONSOLE:7] started.
[WWW:08,05] started.
[WWW:09,06] started.
[UDP ECHO SRV (NBLK):10,2] started.
[UDP ECHO CLI:11,1] started.
[UDP DISCARD CLI:12,3] started.
[TCP ECHO CLI SND:13,1] started.
[TCP ECHO CLI (NBLK) RCV:14,1] started.
[TCP DISCARD CLI:15,2] started.
[TCP DISCARD SRV:16,4] started.
[TCP ECHO SRV (NBLK) RCV:17,3] started.
[TCP ECHO SRV (NBLK) SND:18,3] started.
[ETHER INPUT: 6] started on MAC Addr: 00:02:cb:01:74:db.
[ETHER OUTPUT:5] started.
TINET Release 1.2 for JSP Kernel Release 1.4 (Oct 12 2004, 08:10:07)
Copyright (C) 2001-2004 by Dep. of Computer Science and Engineering
Tomakomai National College of Technology, JAPAN
[NET/TIMER:2] started.
[TCP OUTPUT:3] started.
[UDP OUTPUT:4] started.
MACアドレスは読めてるけど、キー入力に応答なし
フロー制御しなければOK。TOPPERSはフロー制御していない様子。