実機なしデバッグを極める!IARシミュレーターで組み込み開発を加速する方法 IAR 2025-09-01 10分間かかります 実機なしデバッグを極める!IARシミュレーターで組み込み開発を加速する方法" class="" loading="lazy" srcset="http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=960&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 960w, http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=1920&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 1920w, http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=2880&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 2880w, http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=3840&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 3840w, http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=4800&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 4800w, http://iar.zhutiblog.com/com/hs-fs/hubfs/WEB%202025/Images/Developers%20Debugging/screen%20showing%20a%20debug%20session%20c-spy.jpg?width=5760&name=screen%20showing%20a%20debug%20session%20c-spy.jpg 5760w" sizes="(max-width: 1920px) 100vw, 1920px"> 昨今の半導体不足や開発期間の短縮といった状況の変化により、組み込み開発において実機の手配が困難になるケースが増えています。このような背景から、ハードウェアに依存しないソフトウェアオリエンテッドな開発スタイルへの移行が注目されています。 本記事では、IARシステムズのウェビナー「実機なしでもデバッグテストを進める方法」の内容を基に、IAR Embedded Workbenchのシミュレーターを最大限に活用し、実機なしでも効率的に開発を進めるためのデバッグ・テスト手法について詳しく解説します。 組み込み開発におけるシミュレーターの重要性 これまでの組み込み開発では、開発者人数分の実機を用意し、外部委託先への手配やスケジュール調整など、ハードウェアに依存した開発スタイルが一般的でした。しかし、シミュレーターを導入することで、以下のようなメリットが得られます。 実機台数の削減: 必要な時のみ実機を使用し、最低限の台数で開発を進めることが可能になります。 開発初期段階からのテスト: 評価ボードが手元にない場合や、試作ボードにない機能を先行してテストできます。 自動化テストの構築: シミュレーターは自動テスト環境を構築しやすいため、テストの効率化と品質向上が図れます。 再現困難な条件のテスト: 実機では再現が難しい特定の条件も、シミュレーター上で容易に再現し、繰り返しテストを行えます。 IAR Embedded Workbench シミュレーターの豊富な機能 IAR Embedded Workbenchは、すべてのアーキテクチャ向け製品でシミュレーターを標準装備しています。プロジェクトオプションでデバッガーの設定を「シミュレーター」にするだけで、すぐにデバッグを開始できます。 シミュレーターでは、一般的なデバッグ機能(ブレークポイント設定、ステップ実行など)に加えて、以下の高度な機能が利用可能です。 高度なトレース機能 実機でのトレースは、高価なICEが必要であったり、通信インターフェースの帯域幅制限によるデータ欠損が発生したりする課題がありました。しかし、シミュレーターではデータの欠落が一切なく、完全なトレースデータを取得できます。 命令トレース: すべての命令を順に取得し、複雑な問題の原因特定に役立ちます。 関数トレース: 関数の入りと抜けのポイントのみを取得し、問題発生箇所の絞り込みに有効です。 タイムライン表示: リアルタイムにコールスタックを視覚的に表示し、関数の呼び出し状態を容易に把握できます。
関数プロファイラー 関数の使用状況の統計を取ることで、実行中に最も多くの時間を費やすボトルネック関数を特定し、コードの最適化に役立てることができます。 コールトレース: 命令のフルトレースを解析し、関数の呼び出しとリターンを判定します。コール回数や関数内部での実行時間、子関数を含めた実行時間などを詳細に分析でき、過度なコンテキストスイッチの特定に適しています。 フラットトレース: 関数の呼び出しやリターンに関係なく、トレースされた命令を対応する関数に割り当てて処理時間を計測します。プログラムカウンターが関数のスコープ内にあった時間をカウントし、ボトルネックとなっている関数を見つけるのに役立ちます。
コードカバレッジ シミュレーターでは、コードカバレッジの取得も可能です。これにより、すべてのコードがテストされたかどうかを確認したり、コードの複雑度を理解したりするのに役立ちます。 カバレッジは、カバレッジウィンドウ、逆アセンブラ画面、エディター画面で確認できます。 コマンドラインでの実行も可能で、自動テストと連携してカバレッジ結果を保存することもできます。 メモリ構成と検証 シミュレーターは、正しくターゲットシステムをシミュレートするためにメモリ構成に関する情報が必要となります。デフォルトのメモリ構成を使用するだけでなく、以下のような方法で独自の設定も可能です。 デバイス記述ファイル(.ddf)のカスタマイズ: デフォルトのDDFファイルをコピーし、メモリマップを独自にカスタマイズして使用します。 デバッグイメージからの情報利用: ビルド時に生成されるデバッグイメージに含まれるセグメント情報をもとにメモリを設定します。 手動設定: メモリ構成画面から新たなメモリゾーンを手動で定義できます。 また、アクセス違反のメモリアクセスチェック機能も備わっており、開発中の問題を早期に発見できます。 割り込みシミュレーション シミュレーターには、割り込みを発生させるための割り込みシミュレーターが搭載されています。デバイスがサポートする割り込みリストから割り込みを選択し、以下のように設定できます。 単一発生: 特定のタイミングで一度だけ割り込みを発生させます。 繰り返し発生: 指定した間隔で繰り返し割り込みを発生させます。 強制発生: 任意のタイミングで強制的に割り込みを発生させます。 シミュレーターを使いこなすC-SPYマクロ C-SPYマクロは、シミュレーターを最大限に活用するために非常に重要な機能です。簡単なスクリプトを作成することで、複雑なデバッグ機能を実現できます。
C-SPYマクロの主な機能
ファイル操作: ファイルの読み書きなどが可能です。 メモリのリード/ライト: メモリの内容を読み書きできます。 ブレークポイントの設定/解除: プログラムの実行中にブレークポイントを動的に操作できます。 Cスタイル記述: シンプルなCスタイルでスクリプトを記述できます。 自動実行・手動実行・ブレークポイント連携: 作成したマクロファイル(.mac)は、デバッガーに登録することで、様々なタイミングで実行可能です。C-SPYマクロの活用例
RAMメモリの初期化: 特定のテスト条件に合わせてRAMの内容を初期化するマクロを作成できます。 // sim_data_map.macの例// データファイルからRAMへデータをロードするマクロ
CollectData() {
__var _fileHandle;
__var byte, address;
address = 0x20000000;
_fileHandle = __openFile("input_data.txt", "r"); // データファイルを開く
while ( (byte = __readFileByte(_fileHandle)) != -1 ) // ファイルから1バイトずつ読み込む
{
__writeMemoryByte(byte, address, "Memory”); // RAMアドレスに値を書き込み
address++; http://アドレスをインクリメント
}
__closeFile(_fileHandle); // ファイルを閉じる
__message "Data loaded to RAM at 0x20000000 from input_data.txt\n";
}
変数の値のログ出力: 特定の変数の値をログファイルに出力するマクロを作成し、実行中のデータ変化を追跡できます。 // log_variable.macの例
__var _fileHandle;
// デバッグ開始時にログファイルを開く
__execUserSetup() {
_fileHandle = __openFile("variable_log.txt", "w");
__message "Variable log file opened.\n";
}
// 特定の変数値をログに書き込む
LogMyVariable(myVar) {
__fmessage _fileHandle, "MyVariable: ", myVar, "\n";
}
// デバッグ終了時にログファイルを閉じる
__execUserExit() {
__closeFile(_fileHandle);
__message "Variable log file closed.\n";
}
デバッグ設定の自動化: 割り込みシミュレーターの設定や各種ブレークポイントの設定などをマクロで自動化できます。 // setup_advanced.macの例
__execUserSetup()
{
// USART1受信割り込みを4000サイクル後に発生、その後1000サイクル毎に繰り返す
__orderInterrupt("USART1", 4000, 1000, 0, 1, 0, 100);
__message "USART1 setup for simulation.\n";
// UART1_DRレジスタへのリードアクセス時にマクロ関数を呼び出すイミディエイトブレークポイント
__setSimBreak("USART1_DR", "R", "Access()");
__message "Immediate breakpoint on UART1_DR read access set.";
// ソース中のUartReceiveHandlerラベルにコードブレークポイントを設定
__setCodeBreak("UartReceiveHandler", 0, “1”, “TRUE”, “”);
__message "Code breakpoint at UartReceiveHandler() function.";
}
// UART1_DRレジスタへのアクセス時に実行されるマクロ関数
Access() {
__var val;
// データファイルから値を読み込み、UART1_DRレジスタに代入する例
__readFile(_fileHandle, &val); // 実際のファイル読み込み
USART1_DR = val; // レジスタに値を代入
__message "Access() called. USART1_DR = 0x", val:%X, “\n”;
}
CPUレジスタのダンプ: 特定のタイミングでCPUレジスタの値をダンプし、デバッグ情報を取得できます。 // dump_registers.macの例
DumpCPURegisters() {
__message "--- CPU Registers Dump ---";
__message "R0: 0x", #R0:%x; http://CPUレジスタは名前の前に「#」をつけて参照可能
__message "R1: 0x", #R1:%x; http://「:%x」を付けて16進出力を指定
// 他のレジスタも同様に追加
__message "-------------------------";
}
シーケンシャルブレークポイント: ある条件が順番に成立した場合にブレークするような高度なブレークポイントを設定できます。例として、10秒と0.1秒の2つのタイマ割込みを持つシステムを考えます。低速のイベントが2回トリガされた後に高速のイベントがトリガされた場合にブレークをしたいとします。低速イベントにはブレークポイントが設定されており、このブレークポイントが呼び出されたのが2回目かをチェックするマクロを呼び出します。2回目の場合、マクロは高速イベントにもブレークポイントを設定します。 SetSequentialBreakpoint() {
if (SlowInterruptCount++ == 2)
{
brk = __setCodeBreak(“Fast_Interrupt_Handler”, 0, “1”, “TRUE”, “”);
}
}
周辺機器のシミュレート: イミディエイトブレークポイント(プログラムを一時停止してマクロを実行し、実行を継続するブレークポイント)を活用することで、特定のレジスタへのアクセスをトリガーにマクロ関数を実行し、ファイルからデータを読み込んでレジスタに代入する、といった周辺機器のシミュレーションが可能です。 効率的な開発のためのビルド構成の活用 IAR Embedded Workbenchのビルド構成機能は、一つのプロジェクトに対して複数のビルド構成を持つことを可能にします。これにより、目的(実機テスト用、シミュレーション用など)に応じて異なるプロジェクトオプションを設定し、柔軟な開発が実現できます。 ビルド構成の作成: ベースとなるビルド構成から簡単に新規作成でき、分岐後は互いの変更が反映されないため、管理が容易です。
シミュレーター専用コードの管理: シミュレーター用のビルド構成にスタブ関数などを追加し、実機テスト用のビルド構成ではそれらを無効化(ビルドから除外)するといった使い分けが可能です。
リダイレクト機能: シミュレーターでのみコールしたいスタブ関数などをリンカーのリダイレクト機能で指定できます。これにより、実コードではGPIOなどにアクセスする部分を、シミュレーターではスタブ関数に置き換えてシミュレーションを行うことが可能です。
まとめ IAR Embedded Workbenchのシミュレーターは、単なるデバッグツールに留まらず、開発の初期段階からテストを効率的に進めるための強力な味方となります。特に、半導体不足や開発期間短縮が求められる現代の組み込み開発において、その重要性はますます高まっています。 本記事でご紹介したシミュレーターの豊富な機能とシスパイマクロ、ビルド構成の活用方法をぜひ開発現場でご活用いただき、効率的で高品質な組み込み開発を実現してください。 ご不明な点やさらに詳しい情報が必要な場合は、お気軽にお問い合わせください。 コンテンツ 月刊ニュースレターを購読する Share post Facebook LinkedIn Twitter Email RSS IAR お気軽にお問い合わせください。
日本オフィスのメンバーが日本語でサポートいたします。 見積依頼 ソリューション プラットフォーム 組込みセキュリティ 機能安全 マイクロコントローラアーキテクチャ すべての製品 ソフトウェアを試す インダストリー 車載 医療 産業オートメーション 機械制御 家庭用電化製品 ナレッジセンター ブログ IARアカデミー サポート マイページ 購入方法 IARについて パートナー ニュースルーム キャリア お問い合わせ 月刊ニュースレターを購読する IAR Systems AB プライバシーポリシー クッキー 商標 特許 利用規約 行動規範 内部告発 脆弱性開示ポリシー YouTubehttps://github.com/iarsystems
智能索引记录
-
2026-03-02 22:15:42
综合导航
成功
标题:六零年代求生活作者往来熙熙最新章节_六零年代求生活作者往来熙熙全文免费阅读-笔趣阁
简介:六零年代求生活作者往来熙熙,六零年代求生活作者往来熙熙全文免费阅读。六零年代求生活作者往来熙熙是作家往来熙熙的最新都市小
-
2026-03-02 18:48:42
教育培训
成功
标题:高三英语A1秋季补习补课辅导班-上海新王牌培优
简介:新王牌培优是上海好的初高中辅导培训机构,创立于2005年,采用分层授课,小班化教学的辅导补课方式 ,是一家致力于初高中辅
-
2026-03-02 13:24:06
综合导航
成功
标题:诲敕的拼音_诲敕的意思_诲敕的繁体_词组网
简介:词组网诲敕频道,介绍诲敕,诲敕的拼音,诲敕是什么意思,诲敕的意思,诲敕的繁体,诲敕怎么读,诲敕的近义词,诲敕的反义词。
-
2026-03-02 22:23:20
综合导航
成功
标题:红色喜庆春节中国结PPT模板-果果圈模板
简介:红色喜庆春节中国结PPT模板
-
2026-03-02 17:03:55
游戏娱乐
成功
标题:极限飙车,极限飙车小游戏,4399小游戏 www.4399.com
简介:极限飙车在线玩,极限飙车下载, 极限飙车攻略秘籍.更多极限飙车游戏尽在4399小游戏,好玩记得告诉你的朋友哦!
-
2026-03-03 07:53:14
综合导航
成功
标题:Insights
简介:Voyez comment lâéquipe Actions en gestion quantitative de
-
2026-03-02 12:57:29
综合导航
成功
标题:Easy ways to track construction project progress?
简介:Track construction project progress effectively with traditi
-
2026-03-02 18:19:41
健康养生
成功
标题:世界睡眠日 业内共话高质量健康睡眠(长图)-新华网
简介:世界睡眠日 业内共话高质量健康睡眠(长图)-本活动由新华网房产、新华网家居特别策划。
-
2026-03-02 16:42:22
综合导航
成功
标题:Stephen Gosson (1554-1624). The Reader's Biographical Encyclopaedia. 1922
简介:Stephen Gosson (1554-1624). The Reader
-
2026-03-03 14:19:21
图片素材
成功
标题:长白山天池的作文300字 描写长白山天池的作文 关于长白山天池的作文-作文网
简介:作文网精选关于长白山天池的300字作文,包含长白山天池的作文素材,关于长白山天池的作文题目,以长白山天池为话题的300字
-
2026-03-03 09:12:28
教育培训
成功
标题:精选四年级启示作文集合八篇
简介:在学习、工作、生活中,许多人都有过写作文的经历,对作文都不陌生吧,借助作文人们可以实现文化交流的目的。作文的注意事项有许
-
2026-03-03 07:46:48
图片素材
成功
标题:城市的作文750字 描写城市的作文 关于城市的作文-作文网
简介:作文网精选关于城市的750字作文,包含城市的作文素材,关于城市的作文题目,以城市为话题的750字作文大全,作文网原创名师
-
2026-03-03 14:19:21
教育培训
成功
标题:五年级语文上册作文(通用30篇)
简介:在学习、工作或生活中,大家总少不了接触作文吧,作文是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。为
-
2026-03-02 16:59:09
游戏娱乐
成功
标题:挑战数独,挑战数独小游戏,4399小游戏 www.4399.com
简介:挑战数独在线玩,挑战数独下载, 挑战数独攻略秘籍.更多挑战数独游戏尽在4399小游戏,好玩记得告诉你的朋友哦!
-
2026-03-02 18:43:52
综合导航
成功
标题:CDC: Real Stories of the Opioid Epidemic - Case Study ICF Next
简介:Supporting the Centers for Disease Control and Prevention in
-
2026-03-02 13:15:47
健康养生
成功
标题:男士吃什么保健品补充营养最好?推荐这款纽崔莱多维片 - 谈天说地 - 34楼
简介:对男性来说,日常工作压力大、应酬多、作息不规律等问题,很容易导致营养摄入不均衡。想要高效补充营养,一款专为男性设计的保健
-
2026-03-02 12:35:10
综合导航
成功
标题:WTS Global Financial Services Newsletter #3/2024 is now available
简介:The Global Financial Services Newsletter #3/2024, news on ta
-
2026-03-03 09:20:08
教育培训
成功
标题:有你真的很幸福作文
简介:在平平淡淡的学习、工作、生活中,大家都经常看到作文的身影吧,借助作文人们可以实现文化交流的目的。你写作文时总是无从下笔?
-
2026-03-02 16:57:30
综合导航
成功
标题:Developer Story 01 Justin Drake of Ethereum Foundation Owen, Head of Web3 Product of OKX: The Influence of Ethereum 2 Bee Network
简介:ایتھریم دنیا کے سب سے بڑے اور ترجیحی پبلک بلاکچین نیٹ ورکس م
-
2026-03-03 00:35:13
综合导航
成功
标题:Herschel Supply Kaine Backpack - Woodland Camo/Black – CCS
简介:Backpack Style:School,Tech Pockets:Laptop Pocket (No Size Sp
-
2026-03-02 10:07:33
综合导航
成功
标题:NYC.com New York's Box Office - Broadway Tickets - Sports Tickets - Concert Tickets - Hotels - New York Restaurants - Authentic Site
简介:Save more now at NYC.com, New York
-
2026-03-02 10:28:45
游戏娱乐
成功
标题:好妖不挡道_好妖不挡道html5游戏_4399h5游戏-4399小游戏
简介:4399为您提供好妖不挡道在线玩,好妖不挡道下载,好妖不挡道攻略秘籍。更多好妖不挡道小游戏尽在4399小游戏,好玩记得告
-
2026-03-02 12:54:13
综合导航
成功
标题:Dow Jones – Trusted News & Data
简介:Dow Jones is the definitive source of premium business news,
-
2026-03-03 00:08:42
游戏娱乐
成功
标题:世界事件:阿斯加德-人类的乳汁_ 刺客信条英灵殿攻略_全支线任务全收集攻略_图文全攻略_3DM单机
简介:《刺客信条:英灵殿》图文全攻略,全支线任务全收集攻略(含“通关剧情流程”“全支线任务/全结局”“全收集攻略”)。《刺客信
-
2026-03-02 17:02:11
游戏娱乐
成功
标题:经营渡假旅馆,经营渡假旅馆小游戏,4399小游戏 www.4399.com
简介:经营渡假旅馆在线玩,经营渡假旅馆下载, 经营渡假旅馆攻略秘籍.更多经营渡假旅馆游戏尽在4399小游戏,好玩记得告诉你的朋
-
2026-03-02 13:06:21
视频影音
成功
标题:《FREQUENCY》2020电影在线观看完整版剧情 - xb1
简介:FREQUENCY(2020)电影免费在线观看完整版剧情介绍,FREQUENCY主要演员阵容、上映时间、最新预告片下载播
-
2026-03-02 16:37:50
健康养生
成功
标题:儿童吃什么钙片补钙效果好?推荐吃这款纽崔莱产品 - 谈天说地 - 34楼
简介:在孩子的成长过程中,钙是至关重要的营养素,直接关系到骨骼、牙齿的健康发育。许多家长都在为孩子挑选钙片而犯愁,到底哪一款产
-
2026-03-02 14:08:26
图片素材
成功
标题:元宵节的作文600字 描写元宵节的作文 关于元宵节的作文-作文网
简介:作文网精选关于元宵节的600字作文,包含元宵节的作文素材,关于元宵节的作文题目,以元宵节为话题的600字作文大全,作文网
-
2026-03-02 10:06:36
综合导航
成功
标题:清穿之德妃的宫斗路最新章节_第126节第1页_清穿之德妃的宫斗路免费阅读_恋上你看书网
简介:第126节第1页_清穿之德妃的宫斗路_大行星_恋上你看书网
-
2026-03-03 08:01:52
综合导航
成功
标题:二年级作文300字【优秀7篇】
简介:在平平淡淡的日常中,大家都不可避免地会接触到作文吧,作文根据体裁的不同可以分为记叙文、说明文、应用文、议论文。一篇什么样