LoginSignup
7
2
この記事誰得? 私しか得しないニッチな技術で記事投稿!

kernel source: TOPPERS/SSP四段活用。落とし方、読み方、コンパイルの仕方、アプリの作り方。7つの壁

Last updated at Posted at 2018-01-22

オープンソースのソフトには、簡単にコンパイルできたり、簡単にバイナリが利用できたりするものが多くなってきた。TOPPERSのオープンソースは、ひょっとしたらその対極にあるかもしれない。TOPPERS/SSPのカーネルソースの勉強会を開催して、高橋さんから次々、便利な道具を提供していただいた。TOPPERS/SSPを正面から全部読んでいくか、使えるところを使いながら、勉強していくか、実は自由。
この文章は、TOPPERSプロジェクトの外から眺めて、使おうと思ったら、どういう壁にぶつかるかを記述しようとしています。

目次

落とし方
-正門
--上門
--左門
-裏門
-高橋門
-貴方の門
読み方
コンパイルの仕方
アプリの作り方

壁1 どこにあるかわからない。

今、自分が必要なソースコードまたはそのソースコードをコンパイルできる道具類を揃えるのに、どこをミラ大尉かわからないという壁が一番大きい。
あるセミナで調査したら、ソースコードをダウンロードした人の半分もコンパイルが成功していなかった。

落とし方(Download)

正門

http://toppers.jp
toppers.png

実は、正門にも、いっぱい門がある。

上門

上に文字列が横に並んだメニューがある。
これが上門。

 Topics
 About Project
 ASP Kernel
 Documents
 Download
 Community
 Report
 Contacts
 FAQ

利用者なら、あも、うもなく、Download。
でも、ASP Kernelを利用するなら ASP Kernelもある。
ま、順当にDownload
kernel.png

わ、いっぱいある。
TOPPERS/ASP3
TOPPERS/ASP
TOPPERS/JSP
TOPPERS/FMP
TOPPERS/FDMP
TOPPERS/HRP2
TOPPERS/EV3RT
TOPPERS/HRP
TOPPERS/SSP
TOPPERS/FI4
TOPPERS/ATK1
..
TOPPERS?ATK2
カーネルだけで12。
これから、自分の必要なカーネルがどれだかわからないかも。
おまけに、古いものと、新しいものが並列に並んでる。
これは、TOPPERSプロジェクトの人もわからないに違いない。<自分>

壁2 どのカーネルを利用したらいいのか分からない。

それぞれのカーネルには、歴史と伝統がある。自分が何をしたいかと、ソースが何を提供しているかは、お見合い。

大丈夫。今日はSSPしか目にない。
でも、簡易パッケージと個別パッケージと2つある。どちを使えばいいんじゃ。

  • 簡易パッケージ
  • 個別パッケージ

こういう時は、上から優先順位が高いと思えばよい。
もし、下に大事なものがあるとすれば、そんなサイトには石投げていいですから。

とにかく、簡易パッケージを開く。実は、個別パッケージでも同じ画面の位置が違うだけ。

ssp1.png

「え、SSPって、Smallest Set Profileの略なんだ。かっこいい。」と言おうと思ったら、書いてないじゃん。こりゃいかん。書き直しの案を作って送ろう。

ssp2.png

Package name, Processor name
CY8CKIT-050 PSoC 5LP Development Kit, Coretex M3
Renesas Startar Kit for R8C/23, M32C/87,同左
Interface FM3, Coretex M3
Design Wave CQ_STARM, STM32F
Interface RX62N, RX62N

え、STM32Fって、CORTEX M3じゃないの?

ターゲット非依存部を落としたら、そこにはarchとtargetという依存部らしきものもある。

壁3 CPU・コンパイラの対応

今、用意されているソースは、どのOS上の設計環境(compilar)の、どのCPUならコンパイルできるか、動くか。

down.png

ナンジャコリャ状態。

down2.png
それぞれのフォルダを開くと、
archの中は、arm, gccという言葉がある。CPUやCompilerに依存した部分。
targetの中には、cq_frk_fm3_gggとある。ボード(CPUを含む)とコンパイラに依存した部分。
なんで、この2つをまとめた対象(target依存)フォルダにしないのだろう。

作った人が整理しやすいのか、相互に関係がないのか。

ssp3.png

左門

会員向けページ 
プロジェクトについて
取り組み
開発成果物
教育コンテンツ
ドキュメント
ダウンロード
関連製品
利用事例
コミュニティ情報
-メーリングリスト
-ソフトウェア
-統合開発環境
-外部リンク
-Contributed Software
-Contributed Software(GitHub)
-AUTOSAR-Wiki
その他の情報

上門は「Download」で。左門は「ダウンロード」。英語でも、日本語でもわかるので、こりゃ、いいや。
どちらから行っても同じ。

裏門

左門のコミュニティ情報の下に、「-Contributed Software」「-Contributed Software(GitHub)」とあるのが裏門。Contributed Software, Contributed Software(GitHub)とあるのが裏門

コミュニティ情報
-メーリングリスト
-ソフトウェア
-統合開発環境
-外部リンク
-Contributed Software
-Contributed Software(GitHub)
-AUTOSAR-Wiki

Contributed Software
http://dev.toppers.jp/trac_user/contrib
「​asp_wo_cfg | 高田広章(名古屋大学 大学院情報科学研究科) | TOPPERS/ASPカーネルを,コンフィギュレータなしで使えるように改造したもの 」
は、TOPPERS開発アプリケーションコンテストで入賞された中村晋一郎さんのご講演で、野良OS利用者としては、コンフィギュレータなしのOSを使いたいとお話になられたのに対して、作成されたもの。

SSP関連だと
「 ​ssp_armv6_m_gcc | Naoki Saito(NMIRI) | TOPPERS/SSPカーネル ARMv6-Mプロセッサ向け個別パッケージ 」
「​ssp_arm_gcc | Naoki Saito(NMIRI) | TOPPERS/SSPカーネル ARMプロセッサ(SkyEyeターゲット)向け個別パッケージ(experimental) 」
「 ​ssp_qb_r5f100le_cs | Naoki Saito(NMIRI) | TOPPERS/SSPカーネルQB-R5F100LE-TBボード(RL78/G13)向け簡易パッケージ」
「​rubycfg_ssp | Naoki Saito(NMIRI) | TOPPERS/SSPカーネルでRuby版コンフィギュレータを使用するためのファイル | SSP1.3.0対象 」

Contributed Software(GitHub)
https://github.com/TOPPERS-ContributedSoftware
には、SP3 Kernel without TECSと、CFG C++ がある。
作成者は、名古屋大学の松原豊さん。

高橋門

上記はTOPPERSのサイトにリンクがあるもの。
高橋さんもContribution softwareに
「CROSS TOOL VMWAREイメージ | 髙橋和浩(個人会員) | ARM GCC CROSS コンパイラ VMwarePlayer6.x イメージ」を挙げられている。
http://dev.toppers.jp/trac_user/contrib/browser/CROS-TOOL-VMWARE

TOPPERS/SSPのシュリンク版などを作って頂いている。
ルネサスの開発環境でのシミュレータの動作させ方の資料も作って頂いた。

貴方の門

自分が使う可能性のあるものだけ、自分のサイトに自分専用の門を作るといいかも。
qiitaでも良い。

読み方

docの下のuser.txtをまず開こう。

user.txt

利用者には、次の4種類が想定できる。

  1. SSPを特定のCPUに移植をする人
  2. SSPで用意されているCPUを別のコンパイラで利用する人
  3. SSPで用意されているCPUを別のボードで利用する人
  4. SSPを用意されているCPU、コンパイラ、ボード上で利用する人

内容が分離されていない。次のコンパイルの仕方に4の人だけ向けに整理

##ソースコードを読む
ソースコードを読む場合に、タスク中心で読むか、デバイス中心で読むかで順番が異なる。
###タスク
kernelフォルダのtask.c, task_manage.cを読もう。
###デバイス
デバイス中心と言っても、timer中心、割り込み中心、シリアル中心などいくつもの視点がある。

timer

extensionフォルダのtime_event.c, time_manage.cから読む

割り込み

kernelフォルダのinterrupt.cから
####シリアル
syssvcフォルダのserial.cから

デバイスに関するフォルダがあちこちに分かれている感がある。タスク中心でフォルダを決めているのだろうか。

#コンパイルの仕方

##コンフィギュレータ
コンフィギュレータは、バイナリファイルも用意されている。
コンフィギュレータのコンパイルに時間はかけたくない。

## 壁4 コンフィギュレータがコンパイルできない

壁5 コンフィギュレーションのスクリプトが書けない

##コンパイラ
gccを基本とし、CPUによってはそれ以外のコンパイラにも対応している。

gcc

壁6 クロスコンパイラがコンパイルできない

## 壁7 クロスコンパイラでコンパイルエラーが出る

参考文献・URL

TOPPERS まとめ
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

μITRON4.0仕様
http://www.ertl.jp/ITRON/SPEC/mitron4-j.html

<この項は書きかけです。順次追記します。>

文書履歴(document history)

ver. 0.10 初稿 20180524
ver. 0.11 名古屋のIoTは名古屋のOSで 追記 20180731

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2