【TOPPERS】ITRON総合スレ3【NORTi】【HOS】
仕様的には、CRE_TSKとかの静的APIによる記述を受け取って、
ソースコードを出力するものがコンフィグレータ、だったかな? え、何それ。
つまり、ITRONのAPIベースのアプリを書いて、
そのジェネレータを通すとあっという間にコンパイルできるってこと?
μITRON4.0標準ガイドブックのpp.267〜274に具体例での説明がある。 >μITRON4.0標準ガイドブック
持ってない。
T-Kernel標準ハンドブックなら持ってるけど、ASPのページなんかないお。 一例では、
CRE_TSK(ID_TSK_A, {...});
のように静的にタスクを定義すると、コンフィギュレータが、
kernel_id.h として
#define ID_TSK_A 1
のように、静的に定義されたタスクIDを対応させてくれる、とか。 JSPのコンフィギュレータもC++で書かれている訳だが…
#Boostは使ってないが.
>>343
>じゃ、氏んでもHEWじゃコンパイルできないね。
っていうか,コンフィギュレータはホストで動くのでHEWでビルドする必要なないな.
>>347
μITRON4.0仕様書の2.1.10に書いてあるよ
ASPはT-Kernelとは関係ない. どっちにしても, 新規プラットフォームとかサポートしてない環境とか
あって役に立たないので, 結局 yacc/bison + flex あたりで自前のもの
を作って運用する羽目になるんだけどな >コンフィギュレータ
VCでコンパイルしたASPのコンフィギュレータ需要ある? うだうだ聞くまえに公開汁!
このガラパゴ野郎! >354
mingwでコンパイルしたやつ配布されているぞ そんなこと書くからガラパゴスになっちゃうんだろ。
PC/Winなんて草木どころかゴミのように同じVBアプリがあっても生暖かい目で見て貰えるのにwww asp/cfg/configure って使えねぇ
Makefile 直接いじったほうが早いじゃん ASP の kernel_cfg.c の uint32_t _kernel_ipm_mask_tbl がおかしい…
Priority 0 と -1 の値が 0x00000 0 と間にスペースが入ってる…
うちだけこうなるの? 入れるなといわれても…
公式リリースされたのを make depend しただけで入れられるんだけど… sample.cfgにそんな記述(priorityに0と-1)あったっけ sample.cfg にはない
make depend 時に生成される kernel_cfg.c で配列 _kernel_ipm_mask_tbl に
Pririty 0 から -n (TMIN_INTPRI だと思う) を用意される… SH4だと
const uint32_t _kernel_int_iipm_tbl[TNUM_INT] = {
UINT32_C(0x400000f1), /* 0x000 */
UINT32_C(0x400000f1), /* 0x020 */
UINT32_C(0x400000f1), /* 0x040 */
・・・
ってなるな
アーキテクチャはARMか? ARM です。
target は at91skyeye_gcc と btc090_gcc (下のようになる) の両方試しました…
const uint32_t _kernel_ipm_mask_tbl[8]={
UINT32_C(0x000000 0),/* Priority 0 */
UINT32_C(0x000000 0),/* Priority -1 */
UINT32_C(0x00000002),/* Priority -2 */
UINT32_C(0x00000002),/* Priority -3 */
UINT32_C(0x00000002),/* Priority -4 */
UINT32_C(0x00000002),/* Priority -5 */
UINT32_C(0x00001002),/* Priority -6 */
UINT32_C(0x00001002),/* Priority -7 */
}; バグっぽいね
仕様確認&バグ報告として
TOPPERS MLに投げれば? TraceLogVisualizerだけ使ってみたい。
似たようなフリーのツールってありますか? たぶんない
早く公開してほしい
PALMiCE3やAdcviceLUNAなら
トレース出来るみたいだけどね >>366
簡易パッケージのasp_at91skyeye_gcc-20081104.tar.gzで試してみたらこうなったぞ.
const uint32_t _kernel_ipm_mask_tbl[8]={
UINT32_C(0x00000000),/* Priority 0 */
UINT32_C(0x00000000),/* Priority -1 */
UINT32_C(0x00000004),/* Priority -2 */
UINT32_C(0x00000004),/* Priority -3 */
UINT32_C(0x00000004),/* Priority -4 */
UINT32_C(0x00000004),/* Priority -5 */
UINT32_C(0x00000024),/* Priority -6 */
UINT32_C(0x00000024),/* Priority -7 */
};
cfg.exeはバイナリ配布と簡易パッケージからビルドしたもの両方でためしたが,同じ結果だ.
どのバージョンのソースコードを使ったの? >>370
うちはこれ
asp-1.4.0.tar.gz
asp_arch_arm_gcc-1.4.0.tar.gz
cfg-1.5.0.tar.gz ( ・∀・)< くだ質でごめん
ASPやJSPはシステムログ出力のシリアルポートが1ポートしかないとき、TNUM_SIOPと
TNUM_PORTはともに1でいいの?
上の考えであっている場合、バーナー表示まではポーリング出力でそのご割り込みに
よる出力に切り替えになるの? >>373
ありがとう(・∀・)
ところでSPIでLCDやSDCardの制御などしたい場合など、どのディレクトリ(のファイル)に
直接レジスタ叩くコードやLCDならLCDの制御をまとめたコードとか書けばいいのかな?
何かよいサンプルなりサイトがあったら教えてください。
いつも移植してsampleが動くとこまでやって悩んでるんでw >>375
汎用に使えるドライバならはpdic.pdicからのインターフェースはtargetに書くかな.
>>376
そんな感じでちょっと頑張ってみる(・∀・) 頑張ってみたけどちょっと壁にぶち当たってしまった(・∀・)
CQ 付録基板の LPC2388 で ASP + FatFS をと思って作業してるけど、
メインタスクが動きだしたところで Unregistered Exception occurs. が発生しまくり。
どうやら MCI 制御で発生してるらしいのはわかるんだけど、これの原因はどうやって
探せばいいんだろ?
また>>375でも書いたけどよいサンプルとかないですか?
ハード屋なもんで ASP カーネル付属ドキュメントとカーネルソースだけじゃ FatFS に限
らずいろいろと追加する方法というか流儀がよくわからないので…(;∀;) CQ出版の「μITRON準拠TOPPERSの実践活用」とかはどうかな
http://www.cqpub.co.jp/hanbai/books/49/49991.htm
いろいろ移植事例も載ってるし >>379
それは JSP 本だよね、ASP でも同じ感じなのかな?(・∀・)
移植事例は JSP 本体がメインだったような…
ASP 本体は一応移植できてて FatFs などのミドルウェアとそのドライバの組み込み
ではまってるんです。
とりあえず本屋にいってみるね。 みんなデバックはどうやってるの? (・∀・)
いまだに>>378の状態から進展なしです… やっぱり ICE ですか(・∀・)
なんとか LED チカチカだけでデバックできたけど、そろそろ ICE とか便利な
環境を用意しないとだめですね Unregistered Exception occurs.って何かの割り込みが定義されてないからじゃ。
LOG_INH_ENTERとかdefineしてLOGとってみたら ありがとう(・∀・)
今度はまった時は LOG_INH_ENTER やってみる ヘルプなんですけれど
itron に pthread_join() の相当品って無いんですかねぇ。
pthread_join() のように、親タスクが、子タスクが終了するまで待つのは、
子タスクから sig_sem か何かを親におくってもらうようにするしか無いんですかねー?
( ・∀・)< くだ質でごめん
データ転送処理などで割り込みビットをずっとポーリングするようなプログラム
をポーリングを止めて他の処理ができるようにうまく書き直すにはどうすればい
いの?
セマフォを使用して
1.最初に CRE_SEM でセマフォオブジェクトの生成
2.割り込みハンドラで isig_sem でセマフォ資源解放
3.ポーリング部分を wai_sem でセマフォ資源獲得に変更
って感じに考えたんだけど…
1 と 2 の間と 3 の後に(ポーリングしていたタスク以外?が)セマフォ資源を獲
得しておかないといけないかなと思うんだけど、これをどうすればいいのかわか
ってないです
>>389
ありがとう(・∀・)
試しに簡単に直せる部分だけセマフォ使うようにしてみて無事に動いたよ タスクのスタックサイズてどうやって決めればいいの? 各関数で使用するスタックを計算して決めればいい
toppersなら各タスクのスタックポインタの取得が出来るから
最初はある程度大きくスタックを取っておいて
一番スタックを消費する関数を行った後
スタック領域の終端から先頭にかけて
0でない領域までのサイズを測れば
おおよその空きスタック量が分かる
SH環境ならHEW(SHC)にcall waker(スタック測定ツール)があるので
これを使うのもあり >一番スタックを消費する関数を行った後
は
一番スタックを消費する関数まで行った後
だった。
各関数のスタック使用量を手で計算するのが確実かな・・
計算ミスしないことが条件だけど
あと各サービスコールの使用スタック量については各OSのサポートに聞くしかないんじゃないかな TINET や FatFs, 公式のって JSP 用って感じだけど ASP でそのまま使える
形のものを配布する予定はないのかな?(・∀・) >>393
関数の使用量は普通に自動変数の総和でいいのかな。 >>395
スタックに貯められるのは
・関数の引数
・関数内の自動変数
・呼び出した関数の呼び出し元のポインタ等
(CPUの全レジスタも?)
かな?
あんまり詳しいわけじゃないので間違ってたらスマソ >>396
> ・呼び出した関数の呼び出し元のポインタ等
> (CPUの全レジスタも?)
その辺はコンパイラのABI見ないと何とも言えない
割り込み発生時のスタックサイズも基本的に変わらん
OSのマニュアル、コンフィギュレーション見れ
大体は割り込み発生時に、
割り込みが発生した瞬間のCPUの全レジスタを退避させ
割り込み用スタック領域をスタックポインタに割り当てる。
この時退避したものを格納する領域は割り込み用スタック領域ではなく専用の領域を使用する(?)
CPUによっては割り込み時にCPUの全レジスタを
CPUが自動で退避させるものもあったような気がする ミスポだっけな?
デバッグオプションを付けると
タスク生成時にスタック領域を
タスク番号でmemsetする
ある程度動かした後、スタックメモリを見れば
だいたいどのぐらい使ってるかわかった
厳密な計算は不向きだけど
しくみがシンプルでわかりやすかった
タスク毎のスタックと
カーネル(割り込みも含む)のスタックがあり、
割り込み時やカーネル呼び出し時には、カーネルスタックに
切り替えます。
切り替える前にタスクのスタックにレジスタを退避します。
これをタスクコンテキストと呼んでいるようです。
ちなみにのこのタスクコンテキストのロード、ストアを
1命令で行う命令がM16C系にはあったりします。
>あと各サービスコールの使用スタック量については各OSのサポート
>に聞くしかないんじゃないかな
ルネサス純正だったら、#pragama でサービスコールの定義してある
ヘッダファイルがあって、その宣言にそのサービスコールの使用スタック量が
記述してある。call wakerは、サービスコールから先の部分はこれを参照して
スタック量を算出している。
>>366
Boostのバージョンが新しいと,空白が入るみたいだよ.
Boostのバグなのか,cfgのバグなのかはわからないや.
>>392
0埋めすると,0で代入された場合に読み違えるから0xdeadbeafとか0xcafebabeとか特徴的な値のほうがよいと思うよ.
あとね,gccならLinuxカーネル界隈で使っているcheckstack.pl が応用できるかもしれないよ.
関数単位の数値になるから,何らかの方法で実行パスを押さえておく必要があるかもね.
>>402
情報ありがとう(・∀・)
おいら 1.38 使ってるから多分あてはまってますね _, ,_
〃〃(`Д´ ∩ < みんなドコドコドコ
⊂ (
ヽ∩ つ ジタバタ >>394
http://science6.2ch.net/test/read.cgi/denki/1240838439/
で見つけたんだけど
にLPC2388用ASPのFatFSが置いている。
中身見てないけど参考になるんじゃね?
ttp://www.geocities.jp/karaage_umauma_food/index.html >>410
参考にならないです、それおいらだから(・∀・)テヘ >>394
TINETは1.5でASP対応版が出る予定だよ.(現在はβ版が早期リリース)
ttps://www.toppers.jp/members.html#early
FatFsは…TECSの進捗次第のような気がするよ. >>413
いつかわからないけど、ちょっとだけ期待してまってます(・∀・)フゥ
それにしても公式サイトのASP, Coretex-M3が1.4.0になってないのも不満です VMWare上で試しに動かしたいのにインテル版が無いのが残念なASP なけりゃ作れ、といいたい所だが、
そこまでモチベーションをあげるのは難しそう。
自分もJSP版exfatfsとか ipv6 dlnaサーバとか
作りたいな〜と思いつつ何もしてない
そういうのを仕事にして
給料もらえるとこってないですかね。 スイッチON! 起業!!!
:
た、隊長、スイッチ効いてないです.. タスクに制御がきません!! TECSってRubyとか用意しないといけないのか(・∀・)メンドクセ Androidや iPhoneに対抗するような開発環境パックは作んないの? T-Engineフォーラムという、指導者が同じで実質やってることが変わらない団体が
もうひとつあったわけで、2つあっても無駄ってことだろ。 で、ITRONとT-Engineと実質どっちが流行ってるよ? _, ,_
〃〃(`Д´ ∩ < みんなドコドコドコ
⊂ (
ヽ∩ つ ジタバタ _, ,_
〃〃(`Д´ ∩ < あそこってドコドコドコ
⊂ (
ヽ∩ つ ジタバタ ∧∧ ミ _ ドスッ
( ,,)┌─┴┴─┐
/ つ. 終 了 │
〜′ /´ └─┬┬─┘
∪ ∪ ││ _ε3
゛゛'゛'゛ レンホー:「T-Engineじゃないとダメなんですか?ITRONではダメなんですか?」 タスクの周期って早すぎても問題ないんですかね?
前の会社だとほとんどのタスクが5ms周期(dlt_tsk(1)で5ms遅延)だったんだけど。
だいたい1msとか5msとかなんですかね? >440
それはマイコンの性能によるでしょう。
早すぎは問題だし、長くしすぎると精度がでないね。(いらんかも知れないが)
遅いマイコンで1ms周期にしたりすると、周期の割込みにばかり時間が
とられて、パフォーマンスがガタ落ちになるんじゃないかな。
ARM Cortex-M3アーキテクチャ版はいつになったら1.4.0になるのかな T-Engineの上にQtとPOSIX載っちゃったね。
世の中のC/C++系アプリが、POSIX、Win32APIベースになっちゃったり、
それらに組み込み用IFが追加されたら、
ますますITRONが有って無きものになっちゃうんじゃね?
アプリからは見えないけど、ITRONのソースはきっちりリンクしてるんですよ、みたいな。。。