Engineer's Notebook

コンピュータ関係のTipsやお役立ち情報などをエンジニアが綴ります

【ARM C Compiler】セミホスティングを無効化する方法

投稿日:2017-09-30 更新日:

ARM C Compiler(armcc/armclan)でビルドすると、デフォルトでセミホスティングを使おうとしてしまいます。

セミホスティングに対応していないシステムでARM C Compilerを使う場合には、これがトラブルの元になるんですよね。。。

そんなときは、セミホスティングを無効化してしまいましょう。
 

スポンサーリンク

セミホスティングとは?

セミホスティングについては、ARMのこちらに詳しく解説されています。
ARM Information Center : セミホスティング

 

スポンサーリンク

セミホスティングの無効化方法

セミホスティングを無効化する方法はこちらを見てください。
ARM Information Center : 非セミホスティング環境向けのアプリケーションの作成

とはいっても、具体的にどうすればいいかよくわかりませんよね。。。

 

具体的なコード

ということで、具体的なコードのご紹介です。

このコードをコンパイル、リンクすればOKです。

__use_no_semihostingが「セミホスティングは使わないよ」という指定です。ARM C Compiler 6.xとそれ以前で指定方法がちょっと違うので#ifで場合分けしています。

そのあとに続くのが、セミホスティングに関係する関数の独自実装です。ARM C Compilerが持つライブラリ内にも同じ関数があるのですが、そちらはセミホスティング前提の処理になっているので、これをセミホスティングを使わない独自実装の関数に置き換えます。

上のコードでは、関数名に$SUB$$を付けてパッチを充てる方法で置き換えをしています。パッチに関してはこちらを読んでください。
ARM Information Center : $Super$$ と $Sub$$ を使用したシンボル定義へのパッチの適用について

また、上のコードでは何もしない空関数に置き換えていますが、例えばシリアルにメッセージを出力するとか、システムに応じて書き換えてください。

もし、リンク時に

のようなエラーメッセージが表示されたら、上記コードと同様にその関数を実装してください。

これでセミホスティングを無効化できます。

アドセンス 336x280

アドセンス 336x280

関連コンテンツ

いまあなたにおすすめ

技術者募集

-ソフトウェア開発
-,

Copyright© Engineer's Notebook , 2018 All Rights Reserved Powered by AFFINGER5.