1

ソフトウェア開発プラットフォーム

SOLID
京都マイクロコンピュータ 2017年 提供予定新製品

2

SOLID

かしこく開発・スマートにデバッグプログラムの問題を自動検出, RTOS とコンパイラを一体化した革新的開発プラットフォーム

3

SOLIDが目指すもの 「ツール屋」であるKMCが、デバッガやコンパイラを提供してきた経験をもとに、開発者に”楽しく”, ”快適に”開発に取り組めるソフトウェア開発プラットフォームを提供する
 開発者が本来のクリエイティブな業務に最大のパフォーマンスを発揮して「かしこく開発」し、また、不具合のモグラ叩きに翻弄されずに「スマートにデバッグ」する環境を提供する
 組み込み機器の開発手順をシンプルに変える

4

SOLIDの構成
 SOLIDは組み込み用「リアルタイムOS」と「開発ツール」を一体化したソフトウエア開発プラットフォーム
 リアルタイムOSには、TCP/IPなども付属する
 開発ツールには、IDEやコンパイラ・デバッガが含まれる

 SOLIDは、RTOS含んだSOLID-OSと、統合開発環境SOLID-IDEから構成される

5

SOLIDの構成

SOLIDソフトウェア開発プラットフォーム
SOLID-IDE

SOLID-OS・IDE(Visual Studioベース）
・Clangコンパイラ・デバッガ、OSモニタ

・RTOS（TOPPERS/ASP3)
・開発支援機構（ローダー等）
・ミドルウェア（TCP/IP他）

Windows PC

連携

ARM Device

6

SOLIDの構成
SOLID-OS SOLID-OSとして、名古屋大学を中心としたTOPPERSプロジェクトで開発されたオープンソースカーネルであるTOPPERS/ASP3を採用します。
 組み込み機器として実績のあるμITRON 4.0仕様準拠
 ASP3のティックレス仕様により実行効率・電力効率が良い割込み制御が可能
 SOLID-OSとして
 カーネル本体、プロセッサ依存部、BSPを提供
 TCP/IP, Fileシステム、スクリプトエンジン等のミドルウエアも提供
 ロイヤリティフリー

7

かしこく開発SOLID-IDE
 開発準備から性能評価までの作業をシンプルに変えるため、SOLID-IDEはユーザーインタフェースに定評のあるVisual Studioをベースに独自開発しました。
 コンパイルからデバッグまで、全てWindows上で作業できるので、「ビルド→転送→実行→デバッグ」、の手順がシンプル
 Intellisense 機能（エディタでのコード補完）をはじめ、Visual Studio の多くの特徴的な機能が使える
 Visual Studio Shellをベースに独自に開発したIDEは、ロイヤリティフリー
 Clangコンパイラで検出したエラーを、IDE上で分かりやすく表示
 静的解析、動的解析ともに、問題箇所をIDE上に表示

8

かしかく開発Clangコンパイラ
 SOLIDプラットフォームでは、静的解析ツール、動的解析ツール機能を豊富に備えたLLVM/Clangコンパイラを採用します。
 LLVM/Clangは次世代のコンパイラとして、利用されはじめている MacOS/iOS開発環境の標準コンパイラ、ARM Compiler 6、FreeBSDの標準コンパイラなど、多くの分野で標準的に利用されている

 Clangコンパイラは、オプションや言語仕様拡張など、GCCコンパイラとの互換性が高い
 ビルド時に静的解析ツールとしてClangを使用することにより、「未初期化変数の利用」「メモリリーク（解放もれ）パスの検出」などが検出可能
 実行時に「アドレスサニタイザ」などデバッガと連動した動的解析が可能9

かしこく開発Clangコンパイラ 静的解析

10

かしこく開発シンプルベアメタルローダー
 RTOSやベアメタル環境では、複数拠点などでの分割開発時に、個別に分割したプログ
ラム単位でのローディングや実行が煩雑になっている
 新規にMMU対応のシンプルベアメタルローダーを開発
 MMUは仮想アドレスを使うが、シンプルに使えるよう単一空間のみ

 複数に分割されたプログラムでも、それぞれ個別に開発・ローディング可能 分割ローディング時のアドレス解決機構を搭載
 メモリの利用効率が低下しないよう、MMUを使ってアドレス割り付け MMUのプロテクションを有効にし、デバッグ効率も向上
 IDEと連携したローディング アップデートなどの効率化11

スマートにデバッグ
SOLID-IDEとSOLID-OSの密結合
SOLID-IDE

エディタ

Cortex-A対応
MMUライブラリ

静的解析

Clangコンパイラ
デバッガ

IDEローダープロファイラデバッガ

アドレスサニタイザ

モジュール単位のダウンロード

動的性能解析

検出ランタイム

ベアメタルローダー

解析ランタイム
TCP/IPなど

SOLID-OS + ユーザーアプリケーション12

スマートにデバッグ
アドレスサニタイザ
組み込み初登場！アドレスサニタイザ
 アドレスサニタイザとは？
 LLVM/Clang コンパイラのテスト支援機能で、メモリ破壊やリークなどを実行時に検出
 iOSアプリケーション開発環境のXcodeで使えることで有名
https://developer.apple.com/xcode/jp/

 簡単に使える
 SOLID-IDEでビルド・実行モードを「アドレスサニタイザモード」に設定するだけ
 事前にバグがありそうな箇所などの検討必要なし
 実行するだけで、間違ったメモリアクセスを自動的に検出します

SOLID-OSとSOLID-IDEが連携するので、わかりやすく、簡単に使えます13

スマートにデバッグ
アドレスサニタイザ

デモンストレーション

14

スマートにデバッグ
アドレスサニタイザ
間違ったメモリアクセスされた箇所をハイライト

間違ったメモリアクセスを行ったプログ
ラム行をハイライト

メモリアクセス違反について、詳細情報を表示15

2017年リリース
対応プロセッサ ARM® Cortex®-A9 プロセッサに代表される、ARMv7アーキテクチュアのマイクロプロセッサを搭載したシステムを1st ターゲットとします。
 組み込み機器向けの汎用プロセッサおよびSoCにおける採用例が多い
 性能 vs 消費電力に最適化されたコア MMUによるメモリプロテクションや仮想アドレスの使用が可能
 標準となるハードウエア（評価ボード）用のBSPを提供

 ハードウエアがなくても、シミュレータですぐに動作確認が可能*今後 ARM Cortex-Mx プロセッサも対応計画中16

2017年リリース
対象分野
 SOLIDプラットフォームの開発ターゲット分野は、リアルタイム制御を要求される組み込み機器です。
 メカ制御、センサ入力処理や信号処理といった、リアルタイム性が必須の組み込み機器用途
 ARM Cortex-A9クラスのプロセッサ性能を要求される高速処理システムであって、Linuxを実装するためのメモリ資源確保が難しい場合

 対象分野 産業・家電機器
 アミューズメント機器
 デジタルイメージング機器など

17

2017年リリース

2017年度 1Q提供予定
http://www.kmckk.co.jp/SOLID/

18

ありがとうございました
Kyoto Microcomputer Co.,Ltd.
http://www.kmckk.co.jp
KMG Inc.
http://www.kmg-inc.jp