TOPPERS活用アイデア・アプリケーション開発

Similar documents
<4D F736F F F696E74202D20834A815B836C838B835C815B835882CC95E082AB95FB F4B2E B8CDD8AB B83685D>

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

スライド 1

1 Atollic TrueSTUDIO( GR-PEACH TOPPERS/ASP ASP GR-PEACH mbed ( git

TOPPERS活用アイデア・アプリケーション開発

TOPPERS活用アイデア・アプリケーション開発

Microsoft Word - toppers-contest-2014_NTB.doc

OS

スライド 1

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

PowerPoint Presentation

ルネサス半導体セミナースケジュール

TOPPERS活用アイデア・アプリケーション開発

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

科学技術振興調整費 中間成果報告書 若手任期付研究員支援 組込みアーキテクチャ協調型実時間 OS 研究期間 : 平成 13 年度 ~ 平成 15 年 6 月 北陸先端科学技術大学院大学田中清史

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門がじぇるね IoT 部門作品のタイトル : TOPPERS_ASP3 カーネルと astah*-uml による状態マシン図でのソフト設計と動作検証の試み作成者 : 塩出武 ( しおでたけ

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

スライド 1

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

スライド 1

PowerPoint プレゼンテーション

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

Microsoft PowerPoint - kougi7.ppt

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

IntroductionForGR-PEACH.pptx

Microsoft PowerPoint - OS02.pptx

RTOSSkillupSeminar pptx

04-process_thread_2.ppt

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

更新履歴 No 更新箇所版数日付 1 第一版作成 /12/28 2 一部画像差し替え 誤字修正 /02/09 2

部内向けスキルアップ研修 「組込みOS自作入門」

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

(Microsoft PowerPoint - \221g\202\335\215\236\202\335\203\\\203t\203g\203E\203F\203A\215H\212w No02\201i\224z\225z\227p\201j.pptx)

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

ex05_2012.pptx

Microsoft PowerPoint - No3.ppt

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

Microsoft PowerPoint - OS03.pptx

Microsoft PowerPoint - OS02.ppt

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

CompuSec SW 強制削除手順

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

マルチタスクプログラミング.pptx

スライド 1

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

Nios II - Vectored Interrupt Controller の実装

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

Microsoft PowerPoint - OS02.pptx

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

リリースノート バージョン / /8/04 公開 wivia は 株式会社内 洋 の 本における登録商標です その他の製品名 システム名などは 一般に各社の登録商標または商標です 概要 wivia ファームウェア および Windows/Mac

RX開発環境移行ガイド V850からRXへの移行(コンパイラ編)(CA850/CX→CC-RX)

動機 もう6学期だし真面目に勉強しようと思った 真面目に授業聞いてみたけどよくわからなかった Amazonみてたら OS自作 という文字列を発見 話し聞いてもよくわからないしもはや自分で作っちゃえばいいんじゃない 駒場祭付近暇だしそこで 一気に作っちゃおう

1 現コンフィギュレータの問題点 1.1 独自言語 TOPPERS カーネル開発者 ( 特に TOPPERS カーネルのポーティングを行う者 ) は 現コンフィギュレータが提供する tf を使用する必要がある しかし tf は TOPPERS の独自言語であり 初めて TOPPERS カーネルを開発

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

Operating System プロセスのスケジューリング

目次 1. SATO CF408T プリンタドライバのインストール 1.e 飛伝 Ⅱ 環境設定画面 からのプリンタドライバのダウンロード 3 2. インストール 4 2. 用紙設定 圧着サーマル送り状 12 らく楽複写送り状 印刷設定 印刷設定 ネットワークプリンタ対応 (

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

スライド 1

2 Soliton SmartOn Solo Ver (USB2-NFC NFC-ST NFC-RW 対応 ) ここでは Soliton SmartOn Solo Ver のリリース概要について説明します 機能の詳細およびインストール方法については 体験版に含まれてい

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Lui無償アップグレードパック4適用の手引き《LaVie Light Luiモデル用》

Slide

Microsoft Word - プログラムをRAM.doc

MMUなしプロセッサ用Linuxの共有ライブラリ機構

SILAND.JP テンプレート集

OS

V-Client for Mac ユーザーズガイド

LAN ケーブル接続について

ジョブ管理ソフトウェア LoadStar Scheduler ご紹介資料 ~ システム運用品質の向上とコスト削減を実現 ~

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

Windows Server 2003 Service Pack 適用手順書

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

LabVIEW RTのインストールと設定

Windows2000/XPインストール手順

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

2015_collabo_04

クライアント証明書導入マニュアル

『テクノス』V2プログラムインストール説明書

プログラミング実習I

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

の検証作業を 2006 年までに完了した. 検証作業を実行できたことにより, この検証要求には現実的な手法が伴っており, 単なる理想論ではないことを確認することができたが, 要求の意図や手法について検証作業者に正しく理解させるため, 実際には, 細かな打合せや解説書が必要であった 年以降

AUTOSAR OS仕様とTOPPERS/ATK2の使い方

Transcription:

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : シュリンク版 TOPPERS/SSP と それを利用した タミヤラジコン改造 RaspberryPi スマホリモコンカー 作成者 : アライブビジョンソフトウェア株式会社髙橋和浩 対象者 : 使用する開発成果物 : TOPPERS/SSP 目的 狙い 1. アドオン方式のリアルタイムカーネルシュリンク版 SSP の特徴は OS 無環境において システムの構成を大きく変更せずにリアルタイムカーネルを搭載できることをひとつの目的としています 想定の主なターゲットユーザーは 内作の RTOS を利用しているユーザーまたは OS 無ですでに組込みシステムを開発しているユーザーです シュリンク版の搭載は 組込みでの HelloWorld とも言われる LED をタイマ割り込みで点滅するプログラムまでできた前提の環境にアドオンできるものです シュリンク版 SSP をさまざまなシステムに活用しているものアプリケーションとして応募しました 2. リアルタイムカーネルの移植の手間の軽減 BSP( ボードサポートパッケージ ) つまりボードへの移植されているか否かがリアルタイム OS の導入の判断材料になる場合があります シュリンク版は移植確認作業を軽減することができます シュリンク版 SSP は割り込み管理 ドライバ ブート部を本体とは切り離したものとしているため正規版よりもより少ない変更で移植が可能になります 例えば RaspberryPi にもこのシュリンク版で移植しています 1

また 待ちのない最少セットカーネルの守備範囲を超えて 1) 待ち状態の追加 2)C 言語記述ディスパッチャを搭載 / 実現し 通常の待ちのあるリアルタイムカーネル機能とディスパッチャを C 言語で記述することでさらに移植性が向上しています 例えば RaspberryPi にもこのシュリンク版で移植しています アイデア / アプリケーションの概要シュリンク版 SSP は 以下のアプリケーションおよび機能を実現しました 1)C 言語記述ディスパッチャ ITRON のシステムコールで言う ret_int を C で実装 2014 年のアイデアコンテストのアイデア部門での入賞作かと思いますが これを実現しました 機種依存性を低くしたため 比較的容易に機種別の移植が可能になると考えます 2) 待ち状態の追加構成管理で 待ちのあるもの無いものいずれも公開しています 待ち状態は setjmp/longjmp をコンテキストの保存と復元を基本に さらに割り込みからのディスパッチ時の保存 / 復元をほぼ C 言語だけで実装しました 詳細を後述します 3) サンプルアプリケーション RaspberryPi への移植 B,B+,2 いずれもただしシングルコアアプリケーション例タミヤラジコン改造スマホリモコンカー ( オープンソースカンファレンス関西 2015 TOPPERS ブースにてデモ ) 2

詳細 1. シュリンク版 SSP の改造過程 TOPPERS/SSP からシュリンク版 SSP への改造過程として モジュール単位で採用モジュールを絞ることで実現しました ドライバ ブート部 割り込み管理を除くモジュールで構成します これに タイムイベントハンドラのモジュールはそのまま追加するだけで機能追加ができます シュリンク版モジュール選択表別紙 A 参照ください 2.C 言語記述ディスパッチャ TOPPERS/SSP の正規版のサービスコール ret_int はアセンブリ言語で記述されています タスク毎のコンテキストの保存ではなく割り込み処理でのレジスタの保存と復元の部分の復元にアセンブリ言語が不可欠だからだからです しかし よく考えてみたら回避可能です リアルタイムカーネルを利用しない場合についても全レジスタを保存しなければならないが 実際にユーザーにアセンブリ言語で記述を強制する部分はなく C 言語だけで割込みハンドラが記述できるものになっています ( ただし RX では一部例外があるので後述します [ 説明 1]) つまり #pragma や attribute ((interrupt)) などの命令でハンドラ関数はコンパイラが自動でレジスタをすべて保存 / 復元をしています そういうことなので カーネルの ret_int でもコンパイラの拡張命令を使って復元すればいいのです ですが コンパイラの拡張命令は CPU の種類によりさまざまです しかし カーネル内に記述したくありません 答えは簡単です ユーザーハンドラから カーネルの ret_int を呼び出し ret_int で直接ディスパッチせず 割込み関数に関数リターンすればいいのです ユーザーハンドラはカーネルの範疇外のもので ユーザーが CPU やコンパイラの種類に応じて全レジスタを保存 / 復元するのですから そこへ関数リターンすることで それを利用できます ただし 利用するのは RUN 中に割りこまれたタスクがプリエンプトされない場合か プリエンプト後 再度ディスパッチされる場合のみです SSP カーネルは極めてシンプルに以下のように実装することで C 言語記述を可能としました void handler(inthdr userhandler) volatile static intptr_t newtskipi; intnest++; i_unlock_cpu(); (*userhandler)(); i_lock_cpu(); // 割り込みネスト数インクリメント // 割り込み許可 // ユーザーハンドラ呼び出し // 割り込み不可 3

intnest--; // 割り込みネスト数デクリメント if (intnest == 0) // 多重割り込み中でない if (reqflg!=0) // スケジュール必要 reqflg = 0; run_task(search_schedtsk()); 上記 run_task() は割りこまれたタスクより優先順位の高いタスクがなくなるまでリターン しません run_task() から戻ってくると一旦ユーザーハンドラにリターンしたのち 割りこ まれたタスクの途中から処理を続行します ユーザーハンドラは以下のようになります (RX63N の場合 ) #pragma inline_asm reg_save static void reg_save( void ) pushm R6-R13 pushc fpsw ; FPU ステータスレジスタ退避 mvfacmi r5 shll #16, r5 ; ACC 最下位 16bit は 0 とする mvfachi r4 pushm r4-r5 ; アキュムレータ退避 #pragma inline_asm reg_load static void reg_load( void ) popm r4-r5 ; アキュムレータ復帰 mvtaclo r5 ; ACC 最下位 16bit は 0 で復帰 mvtachi r4 popc fpsw ; FPU ステータスレジスタ復帰 popm R6-R13 4

// CMTU0_CMT0 void Excep_CMTU0_CMT0(void) reg_save(); _kernel_handler(cmi0); reg_load(); ユーザーのハンドラーは Excep_CMTU0_CMT0() -> _kernel_handler() --> CMI0() を呼んでから ret_int() 処理になります [ 説明 1] 上記は GCC での対応の例で コンパイラが実際に一部のレジスタしか保存されないので 足らないものを保存しています ルネサス純正コンパイラ ( 最新版 ) ならインラインアセンブラ無でコンパイルオプションで対応可能です 3. 待ち状態の追加待ち状態の追加は 基本的なカーネルのコントロールブロック等を追加します 特に C 言語記述なので コンテキストの保存 / 復帰を基本的に setjmp/longjmp で実装することです setjmp/longjmp では通常コンテキストは正しく保存されます ただし例外があり 割り込みから復帰する場合は 保存復帰が不十分になります まず 保存復帰が十分なケースはタスク自らプリエンプトする場合です 例えば dly_tsk() や act_tsk() などです なぜ問題にならないかは コンパイラが分かっているからというと大雑把な説明ですが つまり 自ら切り替わる場合は C のステートメントでの切れ目になり コンパイラが例えば関数戻り値のレジスタの保存が不要なコード展開をコンパイラがするから関数戻り値のレジスタを保存しなくても問題になりません 一方割りこまれてプリエンプトされ 再びディスパッチする場合は 関数戻り値のレジスタさえ利用中の場合があり setjmp/longjmp では保存されません 実際のディスパッチャの処理は 以下のような longjmp() を使うものです void dispatch(intptr_t ipri) last_ipri = ipri; 5

runtsk_ipri = ipri; longjmp(task_ctx[ipri],1); 割込み時の回避方法として 2 段 jump するものとしました つまり task_ctx[] にタスク別の戻り番地を含むコンテキストを保存しているロジックですが 割り込みから プリエンプトされる場合は ret_int 内の出口付近にそのタスクがその状態でそこに戻るように task_ctx[] を保存します そうすることで そのタスクが復帰する場合に一旦 ret_int の出口に復帰し ret_int からリターン ユーザーハンドラのレジスタ全復帰を経て元のタスクに戻る仕組みです 4. シュリンク版 SSP カーネルの他のターゲットへの移植方法機種依存マクロ ( 関数 ) 以下のものを用意 t_lock_cpu() t_unlock_cpu() ipl_maskclear() i_lock_cpu() と i_unlock_cpu() は t_ と同じで OK ipl_maskclear() は 割り込みマスクレベルを 0( ユーザーモード ) にするマクロです さらに t_sense_lock() sense_context() i_sence_lock() は t_ と同じで OK があれば サービスコール時のエラーチェック一部可能になります 最悪なくても可能です さらに待ち有カーネルの場合には set_task_stack() 引数をスタックポインタに設定するマクロが必要になります 5. ソースコード カーネルのみ https://github.com/alvstakahashi/shrink-ssp-kernel-only master ブランチが待ち無 / WAIT-SSP ブランチが待ち有 RaspberryPi 版 https://github.com/alvstakahashi/rpi-shrink-ssp-full GR-SAKURA 版 HEW シミュレータ版 https://github.com/alvstakahashi/rx62n-wait-ssp-hewsim ターゲットは GR-SAKURA にしていますが HEW のシミュレータで 実機無で動作確認できます 6

6.RaspberryPi への移植サンプル タミヤラジコン改造スマホリモコンカー RaspberryPi のシュリンク版 SSP の移植のサンプルプログラムとしてタミヤのラジコンカーを改造して スマホリモコンで動作させるサンプルアプリケーションプログラムを作りました オープンソースカンファレンス関西 2015 の TOPPERS ブースでデモしたものです 内容的には RC サーボを PWM 制御をするものですが ステアリングサーボはマイコンのタイマーハードウェアで対応 リアモーターは周期ハンドラによるソフトウェア制御で実現しています ソースコード https://osdn.jp/downloads/users/8/8655/ssp_4tamiya-005.zip 参考動画 https://www.youtube.com/watch?v=3ebip50r60y 7

付録 A 黄色のモジュールが シュリンク版として残したモジュール ファイル 場所 モジュール 呼び出し 説明 start.src arch _start _sta_ker _software_init_hook _hardware_init_hook kernel_istkpt target_support.src target _hardware_init_hook _software_init_hook startup.c kernel sta_ker target_initialize(); 削除 kernel_cfg.c にて "_kernel_istkpt" の値を決定す initialize_object(); kernel_cfg.c call_inirtn(); kernel_cfg.c 削除 start_dispatch(); ext_ker 未実装 exit_kernel 未実装 target_config.c target target_initialize prc_initialize(); ターゲット固有のSIOドライバ target_exit rx600_uart_init その後 SIOの初期化 target_fput_log ファイル 場所 モジュール 呼び出し 説明 prc_config.c arch prc_initialize intnest = 1U; のみ prc_terminate 割り込みベクター xlog_sys x_config_int default_int_handler default_exc_handler rx600_usrt.c target SIOドライバ target_serial.c target SIOドライバ target_timer.c target タイマードライバ banner.c syssvc バナー serial.c syssvc SIOドライバ banner.tf syssvc kerbel_cfg.c _kernel_initialize_object _kernel_initialize_task(); _kernel_initialize_interrupt(); _kernel_initialize_exception(); ここでバナーの固定テーブルのテンプレートがあるので削除した 割り込みベクタの初期化削除例外ベクタの初期化削除 8

黄色のモジュールが シュリンク版として残したモジュール ファイル 場所 モジュール 呼び出し 説明 task.c kernel initialize_task タスク情報の初期化 get_ipri_self get_ipri bitmap_search primap_empty primap_serach primap_test primap_set primap_clear swerach_schedtsk test_dormanr make_active run_tsk dispatcher ファイル 場所 モジュール 呼び出し 説明 prc_support.src arch kernel_start_dispatch 起動時のディスパッチャ kernel_call_exit_kernel カーネル出口処理未実装 ret_int 割り込みからのディスパッチャ入口 ret_int_r_rte: 割り込みで割り込みがひとつネストを戻して戻る _kernel_interrupt: 割り込みハンドラ _kernel_exception CPU 例外削除 interrupt.c kernel initialize_interrupt 割り込み情報のテーブル初期化をしているこの辺は手動にするので 削除する方向 dis_int ユーザー API ena_int ユーザー API exception.c kernel initialize_exception CPU 例外のベクタ等の設定 9