Suche senden
Hochladen
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
•
1 gefällt mir
•
7,889 views
T
Takuya Azumi
Folgen
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
Weniger lesen
Mehr lesen
Software
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 39
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
Takuya Azumi
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
Takuya Azumi
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Takuya Azumi
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
Takuya Azumi
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
Takuya Azumi
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
Hiroshi Oyama
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
Takuya Azumi
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
Empfohlen
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
Takuya Azumi
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
Takuya Azumi
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Takuya Azumi
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
Takuya Azumi
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
Takuya Azumi
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
Hiroshi Oyama
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
Takuya Azumi
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
Tetsuya Hasegawa
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
Tetsuya Hasegawa
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Kiyoshi Ogawa
Oracle Database In Lock
Oracle Database In Lock
Ryota Watabe
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
Starc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
SAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
tripodworks
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
Kenji Kazumura
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
Tetsuya Hasegawa
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
20130329 rtm3
20130329 rtm3
openrtm
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
Tetsuya Hasegawa
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
Ll xcode
Ll xcode
Net Kanayan
Weitere ähnliche Inhalte
Was ist angesagt?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
Tetsuya Hasegawa
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
Tetsuya Hasegawa
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Kiyoshi Ogawa
Oracle Database In Lock
Oracle Database In Lock
Ryota Watabe
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
Starc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
SAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
tripodworks
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
Kenji Kazumura
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
Tetsuya Hasegawa
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
20130329 rtm3
20130329 rtm3
openrtm
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
Tetsuya Hasegawa
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
Was ist angesagt?
(20)
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Ll tiger clojure
Ll tiger clojure
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Oracle Database In Lock
Oracle Database In Lock
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Starc verilog hdl2013d
Starc verilog hdl2013d
SAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
20130329 rtm3
20130329 rtm3
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
Ähnlich wie カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
Ll xcode
Ll xcode
Net Kanayan
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
Shintaro Hosoai
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Apache Torqueについて
Apache Torqueについて
tako pons
Sencha ug3 siesta_share
Sencha ug3 siesta_share
久司 中村
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
Kazuki Minamitani
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
次朗 永島
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
Tetsuya Morimoto
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
Trait in scala
Trait in scala
Yuta Shimakawa
What is template
What is template
Akira Takahashi
Jetpack Composeのパフォーマンスの基本
Jetpack Composeのパフォーマンスの基本
Damper Matsu
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
Shu Sugimoto
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
MoteMote Compiler Plugin
MoteMote Compiler Plugin
yoshiaki iwanaga
Ähnlich wie カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
(20)
PostgreSQL 12の話
PostgreSQL 12の話
Ll xcode
Ll xcode
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Apache Torqueについて
Apache Torqueについて
Sencha ug3 siesta_share
Sencha ug3 siesta_share
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
Trait in scala
Trait in scala
What is template
What is template
Jetpack Composeのパフォーマンスの基本
Jetpack Composeのパフォーマンスの基本
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
MoteMote Compiler Plugin
MoteMote Compiler Plugin
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
1.
TOPPERSプロジェクト認定 12012/06/02 2.2 カーネルオブジェクト 安積卓也(⽴命館⼤学) 最終更新⽇
: 2012/ 5/18
2.
TOPPERSプロジェクト認定 22012/06/02 概要 • カーネルオブジェクトのコンポーネント化 –
例:タスクの利⽤ • 複合コンポーネント – 周期タスク • 例:周期タスクを利⽤したカウントアッププログラム – 初期化ルーチン • require カーネルセルタイプ
3.
TOPPERSプロジェクト認定 32012/06/02 カーネルオブジェクトのコンポーネント化 • カーネルオブジェクト •
例:タスクの利⽤
4.
TOPPERSプロジェクト認定 42012/06/02 カーネルオブジェクトのコンポーネント化 • カーネルオブジェクト⼀覧 アクティブなセルタイプ –
タスク – 初期化処理ルーチン – 終了処理ルーチン – 割込みサービスルーチン – 周期ハンドラ – アラームハンドラ その他のセルタイプ – セマフォ – イベントフラグ – データキュー – 優先度データキュー – 固定⻑メモリプール – 割込み要求ライン – カーネル
5.
TOPPERSプロジェクト認定 52012/06/02 カーネルオブジェクトのコンポーネント化 • カーネルオブジェクト –
タスク – セマフォ – データキュー • 利点 – 静的APIを⾃動⽣成 – ソフトウェアの部品化を 促進 テンプレート コード TECS CDL(コンポーネント記述言語) シグニチャ記述 (インタフェースの定義) セルタイプ記述 (コンポーネントの定義) 組上げ記述 (コンポーネントの 構成の定義) TECS ジェネレータ ヘッダ インタフェース コード Cコンパイラ セルタイプコード (コンポーネントの ソースコード) リンカ アプリケーション 開発者 コンポーネント 開発者 アプリケーションモジュ ール コンポーネント図 製品 エンドユーザー コンポーネント 仕様開発者 仕 様 の 規定 設計 設計 利用 カーネル設定 ファイル コンフィギュレータ カーネル設定 コード
6.
TOPPERSプロジェクト認定 62012/06/02 カーネルオブジェクトのコンポーネント化 • カーネルオブジェクト –
タスク – セマフォ – データキュー • 利点 – 静的APIを⾃動⽣成 – ソフトウェアの部品化を 促進 テンプレート コード TECS CDL(コンポーネント記述言語) シグニチャ記述 (インタフェースの定義) セルタイプ記述 (コンポーネントの定義) 組上げ記述 (コンポーネントの 構成の定義) TECS ジェネレータ ヘッダ インタフェース コード Cコンパイラ セルタイプコード (コンポーネントの ソースコード) リンカ アプリケーション 開発者 コンポーネント 開発者 アプリケーションモジュ ール コンポーネント図 製品 エンドユーザー コンポーネント 仕様開発者 仕 様 の 規定 設計 設計 利用 カーネル設定 ファイル コンフィギュレータ カーネル設定 コードタスク CRE_TSK(TSKID_tTask_LogTask_Task, { TA_ACT, &tTask_CB_tab[0], tTask_start_task, 3, 131072, NULL }); 周期ハンドラ CRE_CYC( CYCHDLRID_tCyclicHandler_CyclicHandler, { TA_NULL, &tCyclicHandler_CB_tab[0], tCyclicHandler_start, 2000, 0 } ); セマフォ CRE_SEM(SEMID_tSemaphore_SerialPort1_ReceiveSemaphore, { TA_NULL, 0, 1 });
7.
TOPPERSプロジェクト認定 72012/06/02 タスクのシグニチャ記述(⼀部抜粋) /* タスク本体を呼び出すためのシグニチャ*/ signature
sTaskBody { void main(void); }; /* タスク例外処理ルーチン本体を呼び出すシグニチャ*/ signature sTaskExceptionBody { void main([in] TEXPTN pattern); }; /* タスクを操作するためのシグニチャ(タスクコンテキスト⽤)*/ signature sTask { ER activate(void); ER_UINT cancelActivate(void); ER terminate(void); ... }; /* タスクを操作するためのシグニチャ(⾮タスクコンテキスト⽤) */ signature siTask { ER activate(void); ER wakeup(void); ... }; asp+tecs/include/kernel.cdl
8.
TOPPERSプロジェクト認定 82012/06/02 タスクのセルタイプ定義(前半) [active] celltype tTask
{ [inline] entry sTask eTask; /* タスク操作(タスクコンテキスト⽤)*/ [inline] entry siTask eiTask; /* タスク操作(⾮タスクコンテキスト⽤)*/ call sTaskBody cBody; /* タスク本体 */ [optional] call sTaskExceptionBody cExceptionBody; /* タスク例外処理ルーチン本体 */ attr{ }; factory { }; FACTORY { }; }; [inline]で指定された受け⼝はinline関数として実装する ⽣成されるテンプレートコードもinline関数が⽣成される [optional]で指定された呼び⼝は未結合を許す セルタイプコード(C⾔語の実装コード)では、 呼び出す前に結合されているかの確認をする必要がある asp+tecs/include/kernel.cdl
9.
TOPPERSプロジェクト認定 92012/06/02 [optional]の例 void tTask_start_exception(TEXPTN
texptn, intptr_t exinf) { CELLCB *p_cellcb = (CELLCB *) exinf; if(is_cExceptionBody_joined()){ cExceptionBody_main(texptn); } } asp+tecs/tecs_kernel/tTask.c [active] celltype tTask { ... [optional] call sTaskExceptionBody cExceptionBody; /* タスク例外処理ルーチン本体 */ ... }; asp+tecs/include/kernel.cdl 結合されているかどうか?
10.
TOPPERSプロジェクト認定 102012/06/02 タスクのセルタイプ定義(後半) celltype tTask
{ ... attr{ ID id = C_EXP("TSKID_$id$"); [omit] ATR taskAttribute = C_EXP("TA_NULL"); [omit] ATR exceptionAttribute = C_EXP("TA_NULL"); [omit] PRI priority; [omit] SIZE stackSize; }; factory { write("tecsgen.cfg", "CRE_TSK(%s, { %s, $cbp$, tTask_start_task, %s, %s, NULL });", id, taskAttribute, priority, stackSize); }; FACTORY { write("tecsgen.cfg", "#include ¥"$ct$_tecsgen.h¥""); }; }; 各セルごとに出力 セルタイプで一度だけ出力 C_EXP(“”);はC⾔語での表現 コンポーネント記述で意味解釈をしないことを⽰す asp+tecs/include/kernel.cdl
11.
TOPPERSプロジェクト認定 112012/06/02 celltype tTask
{ ... factory { write("tecsgen.cfg", "CRE_TSK(%s, { %s, $cbp$, tTask_start_task, %s, %s, NULL });", id, taskAttribute, priority, stackSize); }; FACTORY { write("tecsgen.cfg", "#include ¥"$ct$_tecsgen.h¥""); }; }; ファクトリ • セル(コンポーネント)⽣成時に静的APIなどを 開発者が意図的に出⼒するために使⽤する 出力したいファイル名 出力内容 printf形式で出力 asp+tecs/include/kernel.cdl
12.
TOPPERSプロジェクト認定 122012/06/02 ファクトリでの名前置換 ID id
= C_EXP(“TSKID_$id$”); write("tecsgen.cfg","CRE_TSK(%s, { %s, $cbp$, tTask_start_task, %s, %s, NULL });", id, taskAttribute, priority, stackSize); $id$ … セルタイプ名とセル名を '_' で連結したものに置換 $cell$ … セル名に置換 $cb$ … セルの CB の C ⾔語名に置換 $cbp$ … セルのCB へのポインタ(CB が⽣成されない場合はNULL に置換) $cb_proto$ … セルの CB の C ⾔語名(プロトタイプ宣⾔⽤)に置換 $ct$ … セルタイプ名に置換 $idx$ … セルの CB の IDX (idx_is_id の場合は整数、そうでない場合は CB へのポインタ)に置換 $ID$ … セルの ID(idx_is_id の場合 IDX に⼀致)に置換 $$ … $ に置換 CRE_TSK(TSKID_tTask_MainTask, { TA_ACT, &tTask_CB_tab[1], tTask_start_task, MAIN_PRIORITY, STACK_SIZE, NULL }); 例えば、セルタイプ名tTask、セル名MainTaskの場合 セル名セルタイプ名 tecsgen.cfg
13.
TOPPERSプロジェクト認定 132012/06/02 tecsgen.cfg i INCLUDE("target_timer.cfg"); INCLUDE("syssvc/banner.cfg"); #include "tSample1.h" #ifdef
CPUEXC1 DEF_EXC(CPUEXC1, { TA_NULL, cpuexc_handler }); #endif /* CPUEXC1 */ tSample1.cfg INCLUDE("tecsgen.cfg"); #include "cb_type_only.h" #include "tTask_tecsgen.h" CRE_TSK(TSKID_tTask_LogTask_Task, { TA_ACT, &tTask_CB_tab[0], tTask_start_task, 3, 131072, NULL }); DEF_TEX(TSKID_tTask_LogTask_Task, { TA_NULL, tTask_start_exception }); ... #include "tInitializeRoutine_tecsgen.h" ATT_INI({ TA_NULL, NULL, tInitializeRoutine_start }); #include "tTerminateRoutine_tecsgen.h" ATT_TER({ TA_NULL, NULL, tTerminateRoutine_start }); #include "tISR_tecsgen.h" ATT_ISR({ TA_NULL, NULL, 2, tISR_start, 1 }); CFG_INT( 2,{ TA_NULL, -2}); #include "tCyclicHandler_tecsgen.h" CRE_CYC( CYCHDLRID_tCyclicHandler_CyclicHandler, { TA_NULL, &tCyclicHandler_CB_tab[0], tCyclicHandler_start, 2000, 0 } ); #include "tAlarmHandler_tecsgen.h" CRE_ALM(ALMHDLRID_tAlarmHandler_AlarmHandler, { TA_NULL, &tAlarmHandler_CB_tab[0], tAlarmHandler_start}); CRE_SEM(SEMID_tSemaphore_SerialPort1_ReceiveSemaphore, {TA_NULL, 0, 1}); CRE_SEM(SEMID_tSemaphore_SerialPort1_SendSemaphore, { TA_NULL, 1, 1 }); #include "syssvc/tLogTask.h" ATT_TER({ TA_NULL, 0, tLogTask_terminate });
14.
TOPPERSプロジェクト認定 142012/06/02 タスクセルの使い⽅ • タスクのインスタンスの記述 ①タスク処理本体と結合 ②タスクの属性の設定:カーネル起動時のタスクの状態 •
TA_ACT:実⾏可能状態 • TA_NULL(デフォルト):休⽌状態 ③タスクの優先度:1が最⾼優先度 ④スタックサイズ:バイト cell tTask MainTask { /* 呼び⼝の結合 */ cBody = Sample1.eMainTask; //① /* 属性の設定 */ taskAttribute = C_EXP(“TA_ACT”); //② priority = MAIN_PRIORITY;//③ stackSize = STACK_SIZE; //④ }; 記述の順番は 結合と属性の設定 どちらが先でもよい
15.
TOPPERSプロジェクト認定 152012/06/02 カーネルオブジェクトのコンポーネント化 • カーネルオブジェクト •
例:タスクの利⽤
16.
TOPPERSプロジェクト認定 162012/06/02 例:タスクセルの利⽤ • タスクセルの利⽤⽅法を理解する –
組上げ記述 • Displayセルを利⽤する • tSample.cdlにタスクを⽣成するコンポーネント記述 する tHelloTaskBody HelloTaskBody tTask StartTask tDisplay Display
17.
TOPPERSプロジェクト認定 172012/06/02 タスクコンポーネントの使い⽅(組み上げ) /* * タスク */ cell
tHelloTaskBody HelloTaskBody{ cDisplay = Display.eDisplay; // ディスプレイの呼び⼝ }; cell tTask StarterTask{ taskAttribute = C_EXP("TA_ACT"); priority = 5; stackSize = 1024; cBody = HelloTaskBody.eBody; }; tHelloTaskBody HelloTaskBody tTask StartTask tDisplay Display /* * ディスプレイ */ cell tDisplay Display{ width = 100; depth = 8; cellWidth = 6; charWidth = (100 / 6); charDepth = (8); }; asp+tecs/tecs_lib/mindstorms_nxt/ tNXTMiddle_inst.cdl asp+tecs/nxt_sample/sample_hello/tSample.cdl
18.
TOPPERSプロジェクト認定 182012/06/02 TECSジェネレータの設定 • tecsgen(TECSジェネレータ)へのシンボリックリ ンクを張る –
tecs_package/asp+tecs/に移動 し、../bin/tecsgen.exeへのシンボリックリンク tecsgen.exeを作成 $ cd tecs_package/asp+tecs/ $ ln -s ../bin/tecsgen.exe tecsgen.exe
19.
TOPPERSプロジェクト認定 192012/06/02 コンパイラの設定 • 環境に依存する定義は、 target/mindstorms_nxt_gcc/Makefile.targetに記 述されおり、各⾃の環境に応じて変更する必要があ る 1.
クロスツールチェーンのパス • 使⽤するクロスツールチェーン(GNU ARM)のパスを, GCC_TARGETに定義する. • デフォルト: GCC_TARGET = /usr/local/GNUARM/bin/arm-elf 2. ダウンロードツールのパス • NexTTool.exeのパスを,NEXTTOOLに定義する. • デフォルト: NEXTTOOL = /usr/local/nexttool/NexTTool.exe
20.
TOPPERSプロジェクト認定 202012/06/02 ビルド⼿順 1. プロジェクトディレクトリに移動 2.
TECSジェネレータの実⾏ – コンポーネントの⽣成と結合に関するファイル、 およびコンポーネントに関する定義ファイルが gen/以下に⽣成される。 3. 依存関係 4. コンパイル&リンク • asp.rxeとrxe.shが⽣成される $ cd /nxt_sample/sample_hello/ $ make tecs TECSジェネレータの実⾏ $ make depend 依存関係の更新 $ make コンパイル&リンク
21.
TOPPERSプロジェクト認定 212012/06/02 ジェネレータが⾃動⽣成するファイル • Makefile.depend •
Makefile.tecsgen • Makefile.templ • global_tecsgen.h • sDisplay_tecsgen.h • tDisplayBody_factory.h • tDisplayBody_templ.c • tDisplayBody_tecsgen.c • tDisplayBody_tecsgen.h • tHelloTaskBody_factory.h • tHelloTaskBody_templ.c • tHelloTaskBody_tecsgen.c • tHelloTaskBody_tecsgen.h • tmp_C_src.c 依存関係 ⾃動⽣成した ファイル⽤の Makefile セルタイプ毎に ⾃動⽣成されるファイル テンプレート セルの結合コード ファクトリ⽤ヘッダ Makefileの テンプレート 型の定義など 各シグニチャ の定義 中間ファイル TECSジェネレータが使⽤
22.
TOPPERSプロジェクト認定 222012/06/02 Makefile.tecsgen • TECSジェネレータがコンパ イルに必要な情報を⾃動的 に⽣成する ・・・ CELLTYPE_COBJS
= ¥ tTask.o ¥ tISR.o ¥ tLCD.o ¥ tDisplayBody.o ¥ tBluetoothBody.o ¥ tCheckNXTButtonBody.o ¥ tInitializeTaskNXTBody.o ¥ .... ・・・ # # TECSが⽣成する定義のインクルード # -include gen/Makefile.tecsgen .... asp+tecs/nxt_sample/sample_hello/Makefile
23.
TOPPERSプロジェクト認定 232012/06/02 複合コンポーネント • 周期タスク •
例:周期タスクセルの利⽤ • 初期化ルーチン
24.
TOPPERSプロジェクト認定 242012/06/02 周期タスク void handler(void) { iact_tsk(タスクID); } void
task(intptr_t exinf) { タスク処理 } CRE_CYC(CALCID_CYCHDR, { TA_NULL, 0, vCalcIdHandler, 10, 0 }); CRE_TSK(TASK1, { TA_NULL, 0, task, MID_PRIORITY, STACK_SIZE, NULL }); • ITRONでは、周期タスクを提供していない • 周期タスクは、周期ハンドラがタスクを周期的に起 動することで実現している
25.
TOPPERSプロジェクト認定 252012/06/02 周期タスク:複合セルタイプ(複合コンポーネント) • 複数のセルを⼀つのセルと して扱う技術 •
利⽤者は周期タスクセルを ⽣成するだけでよい 周期ハンドラの 処理本体 (タスク起動) 周期ハンドラ タスク 周期タスク(tCyclicTask)
26.
TOPPERSプロジェクト認定 262012/06/02 複合コンポーネント • 周期タスク •
例:周期タスクセルの利⽤ • 初期化ルーチン
27.
TOPPERSプロジェクト認定 272012/06/02 例:周期タスクセルの利⽤ • 周期タスクセルの利⽤⽅法を理解する –
組上げ記述 • Displayセルを利⽤する • Displayに数字をカウントアップする tCounterTaskBody CounterTaskBody tCyclicTask CounterTask tDisplay Display
28.
TOPPERSプロジェクト認定 282012/06/02 周期タスクセルの使い⽅(組み上げ) /* cell tCounterTaskBody
CounterTaskBody{ cDisplay = Display.eDisplay; // ディスプレイの呼び⼝ }; cell tCyclicTask CounterTask{ cyclicAttribute = C_EXP("TA_STA"); cyclicTime = 1000; cyclicPhase = 1; priority = 5; stackSize = 1024; cBody = CounterTaskBody.eBody; }; /* * ディスプレイ */ cell tDisplay Display{ width = 100; depth = 8; cellWidth = 6; charWidth = (100 / 6); charDepth = (8); }; asp+tecs/tecs_lib/mindstorms_nxt/ tNXTMiddle_inst.cdl asp+tecs/nxt_sample/sample_counter/tSample.cdl tCounterTaskBody CounterTaskBody tCyclicTask CounterTask tDisplay Display
29.
TOPPERSプロジェクト認定 292012/06/02 周期タスクセルの使い⽅ • 周期タスクのインスタンス化の記述 ①周期タスクの属性の設定:カーネル起動時の周期タスクの状態 •
TA_STA:起動 • TA_NULL(デフォルト):休⽌状態 ②起動周期(ミリ秒) ③起動位相 ④タスクの優先度 ⑤スタックサイズ ⑥タスク処理本体と結合 cell tCyclicTask CounterTask{ cyclicAttribute = C_EXP(“TA_STA”);① cyclicTime = 1000;② cyclicPhase = 1;③ priority = 5;④ stackSize = 1024;⑤ cBody = CounterTaskBody.eBody;⑥ };
30.
TOPPERSプロジェクト認定 302012/06/02 複合コンポーネント • 周期タスク •
例:周期タスクセルの利⽤ • 初期化ルーチン
31.
TOPPERSプロジェクト認定 312012/06/02 TECSにおける初期化 1. 初期化ルーチンとセルを1対1に対応させる •
カーネルオブジェクトの初期化ルーチンを利⽤ • 例:ディスプレイ
32.
TOPPERSプロジェクト認定 322012/06/02 TOPPERS/ASP+TECSの初期化順序 1. メモリ領域などの初期化 –
BSS領域の初期化 – DATA領域の初期化 2. セル管理ブロックの初期化 3. ターゲット依存部の初期化 4. 各モジュールの初期 • タスクなどのカーネルオブジェクト の初期化 5. 初期化ルーチンの実⾏ 6. カーネル動作の開始 /* * カーネルの起動 */ void sta_ker(void) { /* ターゲット依存の初期化 */ target_initialize(); /* * 各モジュールの初期化 */ initialize_tmevt(); initialize_object(); /* 初期化ルーチンの実⾏ */ call_inirtn(); /* カーネル動作の開始*/ kerflg = true; LOG_KER_ENTER(); start_dispatch(); assert(0); } asp+tecs/kernel/startup.c
33.
TOPPERSプロジェクト認定 332012/06/02 初期化処理ルーチン:カーネルオブジェクト /* 初期化処理ルーチン本体を呼び出すためのシグニチャ
*/ signature sInitializeRoutineBody { void main(void); }; /* 初期化処理ルーチン */ [active] celltype tInitializeRoutine { call sInitializeRoutineBody cInitializeRoutine; attr { [omit] ATR attribute = C_EXP("TA_NULL"); }; factory { write("tecsgen.cfg", "ATT_INI({ %s, $cbp$, tInitializeRoutine_start });", attribute); }; }; asp+tecs/include/kernel.cdl
34.
TOPPERSプロジェクト認定 342012/06/02 ⽣成される初期化ルーチンの静的API ATT_INI({ TA_NULL,
&tInitializeRoutine_CB_tab[0], tInitializeRoutine_start }); write("tecsgen.cfg", "ATT_INI({ %s, $cbp$, tInitializeRoutine_start });", attribute); asp+tecs/include/kernel.cdl
35.
TOPPERSプロジェクト認定 352012/06/02 初期化の例 • ディスプレイの例 –
Displayをインスタンス 化すれば、初期化ルーチ ンも⾃動的に⽣成される 2010/06/20 TOPPERSプロジェクト認定 35 tDisplay Display DisplayBody tInitializeRoutine InitializeDisplay SPI LCD
36.
TOPPERSプロジェクト認定 362012/06/02 require カーネルセルタイプ
37.
TOPPERSプロジェクト認定 372012/06/02 require • require –
RTOSのAPIなど共通して使われる機能について、 結合を明⽰することなく使⽤できる仕組み – require の指定先は、シングルトンのセルタイプ の受け⼝
38.
TOPPERSプロジェクト認定 382012/06/02 例:require [singleton] celltype tKernel{ [inline]
entry sKernel eKernel; [inline] entry siKernel eiKernel; }; celltype tStarterTaskBody{ require tKernel.eKernel; /*以下省略*/ }; } void eBody_main() { /*処理省略*/ delay(100); /*処理省略*/ exitTask(); } signature sKernel{ ER sleep(void); ER sleepTimeout([in] TMO timeout); ER delay([in] RELTIM delayTime); ER exitTask(void); ER getTaskId([out]ID *p_taskId); /*以下省略*/ }; asp+tecs/include/kernel.cdl asp+tecs/include/kernel.cdl asp+tecs/nxt_sample/sample_seminar/ tStartTaskBody.c asp+tecs/nxt_sample/sample_seminar/tSample.cdl
39.
TOPPERSプロジェクト認定 392012/06/02 著者リスト • カーネルオブジェクトのコンポーネント化編 •
安積 卓也(⽴命館⼤学) • 例:タスクセルの利⽤ • 安積 卓也 (⽴命館⼤学) • ⽯川 拓也 (名古屋⼤学) • ⼭⼝ 英之 (名古屋⼤学) • 複合コンポーネント, 初期化ルーチン, require • 安積 卓也(⽴命館⼤学) • 例:周期タスクセルの利⽤ • 安積 卓也(⽴命館⼤学) • ⽯川 拓也 (名古屋⼤学)
Jetzt herunterladen