2019年01月18日
2018年12月27日
2018年12月14日
2018年12月04日
QEMU の Windows 版のビルド方法は、このブログでも何度も取り上げていますが、QEMU が要求する GLib ライブラリのバージョンが上がり続けているなどの理由により、正常動作する QEMU をビルドできる環境を構築し、QEMU のバージョンアップに追従し続けることが、現状かなり難しくなっています。(少なくとも現在の MSYS2 の GCC 8.2.0 環境でビルドした QEMU は正常動作しません。)
そこで本記事では、QEMU のメンテナの一人であり、長年 Windows 版を開発、バイナリの配布をし続けている Stefan Weil さんがメンテナンスしているビルド環境をお借りして、Ubuntu 18.04 上で Windows 64-bit 版 QEMU をクロスビルドする方法を解説します。
続きを読む
そこで本記事では、QEMU のメンテナの一人であり、長年 Windows 版を開発、バイナリの配布をし続けている Stefan Weil さんがメンテナンスしているビルド環境をお借りして、Ubuntu 18.04 上で Windows 64-bit 版 QEMU をクロスビルドする方法を解説します。
続きを読む
2018年11月08日
2018年11月07日
LLVM/Clang/compiler-rt は 3 つがセットになって初めて動作します。LLVM/Clang はマルチアーキテクチャ(例:ARM/AArch64/X86)、マルチターゲット(例:arm-eabi、arm-linux-gnueabi、arm-linux-gnueabihf、aarch64-elf、aarch64-linux-gnu)のコード生成が可能なのですが、ライブラリの compiler-rt だけは、3 つを 1 度にビルドしようとした場合に、1 ターゲットぶんしかビルドできないという問題があります。
そこでこの記事では、先に Ubuntu Linux 上で AArch64 ターゲットのクロス LLVM/Clang コンパイラをビルドした後、それを使用して AArch64 Linux ターゲットの compiler-rt をビルドする手順を説明します。他のターゲットも同様の手順で可能と思われます。
続きを読む
そこでこの記事では、先に Ubuntu Linux 上で AArch64 ターゲットのクロス LLVM/Clang コンパイラをビルドした後、それを使用して AArch64 Linux ターゲットの compiler-rt をビルドする手順を説明します。他のターゲットも同様の手順で可能と思われます。
続きを読む
2018年09月20日
タイトルが本記事の内容のほぼ全てです。自分で libgcc をビルドするという奇特(誤用)な人以外には関係無い話ですが(※)、まあこんなこともあるんだなと。
おそらく Linux (aarch64-linux-gnu) ターゲット等でも共通だと思うのですが、現象を確認したのはベアメタル (aarch64-elf) ターゲットで、GCC 5.1/6.3 です。7.2 では発生しませんでした。(4 系でも発生すると思いますが、そもそも AArch64 のサポートが 4.8 からなので、枯れてるとは言い難い 4 系の使用自体が現在では非推奨だと思います。)
続きを読む
おそらく Linux (aarch64-linux-gnu) ターゲット等でも共通だと思うのですが、現象を確認したのはベアメタル (aarch64-elf) ターゲットで、GCC 5.1/6.3 です。7.2 では発生しませんでした。(4 系でも発生すると思いますが、そもそも AArch64 のサポートが 4.8 からなので、枯れてるとは言い難い 4 系の使用自体が現在では非推奨だと思います。)
続きを読む
2018年09月12日
ARM の AAPCS の仕様では、enum のサイズは可変長と固定長の 2 パターン許されています。
異なるバイナリをリンクすると当然、正常動作は期待できないため、これは重要な違いとなります。
続きを読む
異なるバイナリをリンクすると当然、正常動作は期待できないため、これは重要な違いとなります。
続きを読む
2018年02月15日
Depending on the PC environment, "Application hang while the debugger startup",
"LoadError" or "Rebase Error" may occur. To avoid this problem, add "-rebase ADDRESS"
to the start option of PARTNER in the following steps.
- Start PARTNER-Jet2 Configuration (JetSet)
- Select a target project and move to "Startup options" tab.
- Add "-rebase" option to the text box on the bottom right in the Startup Options tab.
[Example] -B01000000,32 -rebase 0x40000000The recommended value of the address to be specified for "-rebase" option is different depending on the Windows version and type of the PARTNER Application (32-bit or 64-bit). The following table shows recommended values in the different environments.
PARTNER | Win7 | Win8/Win10 |
---|---|---|
32-bit version | 0x40000000 | 0x40000000 |
64-bit version | 0x07000000000 | 0x70000000000 |
2018年02月15日
使用するPCの環境によっては、『PARTNERの起動の途中でロック』したり 『LoadError』 や 『Rebase Error』 が発生する場合があります。
この現象を回避するためには、次の手順でPARTNERの起動オプションに "-rebase アドレス" を追加します。
- PARTNER-Jet2 環境設定を起動します。
- プロジェクトを選択して、[起動オプション設定]タブを開きます。
- [起動オプション設定]タブ内の右下のテキストボックスに -rebase オプションを追加します。
[例] -B01000000,32 -rebase 0x40000000-rebase に指定するアドレスの推奨値はPARTNERの32bit版/64bit版のEXE種別とWindowsのバージョンにより以下の様になります。
PARTNER | Win7 | Win8/Win10 |
---|---|---|
32bit版EXE | 0x40000000 | 0x40000000 |
64bit版EXE | 0x07000000000 | 0x70000000000 |
2018年01月30日
glibc のテストスイートを確認していた所、string/test-string.h にて以下のようなシンボルが使われていたのですが、このシンボルの出所が全くわからなくてしばらく悩んだので、その正体をメモしておきます。
extern impl_t __start_impls[], __stop_impls[];続きを読む
2017年12月18日
QEMU の Windows 版は、標準(エラー)出力が exe のあるフォルダ内の stdout.txt/stderr.txt というファイルに出力されてしまうので、コマンドラインから使う際には不便だと長年思っていましたが、これは SDL ライブラリのバージョン 1.2 の仕様だったようです。最近の QEMU はバージョン 2.0 に対応しているので、コンソールに出力されます。MSYS2 上でビルドする際などに、SDL 1.2 と 2.0 が両方インストールされていると 1.2 が優先されてしまう場合があるので、configure 時に --with-sdlabi=2.0 を指定しておくと確実です。
2017年12月11日
Windows 10 Fall Creators Update から WSL (Windows Subsystem for Linux) が使用できるようになり、Windows で Ubuntu 等の Linux バイナリが実行できるようになり、非常に便利です。
諸事情により、MSYS2 上から WSL 内の実行ファイルを実行したい場合に、MSYS2 はコマンドライン文字列中のファイルパスを勝手に変換してしまうため、正しく wsl コマンド経由で WSL 内部のファイルにアクセスすることができなくて悩んだので、その解決策のメモです。
続きを読む
諸事情により、MSYS2 上から WSL 内の実行ファイルを実行したい場合に、MSYS2 はコマンドライン文字列中のファイルパスを勝手に変換してしまうため、正しく wsl コマンド経由で WSL 内部のファイルにアクセスすることができなくて悩んだので、その解決策のメモです。
続きを読む
2017年03月01日
SOLID紹介記事の第二回目として、今回はSOLIDの特徴である「開発環境と実行環境一体化のメリット」と一体化により実現できた「アドレスサニタイザ」について、その機能や仕組みの解説も交えて紹介いたします。
開発環境と実行環境一体化のメリットとは?
iPhoneアプリは”Mac PCと統合開発環境であるXcode”が、Windowsアプリは”Windows PCとVisual Studio” さえあれば、ソフトのコーディング、コンパイルからデバッグまで一連の作業が行える、シンプルで応用的な開発環境になっていると思います。
一方で組込ソフト開発現場では、統合開発環境、コンパイラ、OS,デバッガといったツール類は、各々高機能化が進んでいるものの、その豊富な(複雑な!)機能を使いこなすためには単にツールを揃えただけでは不十分です。むしろ高機能になりすぎて、ツールの組み合わせに制約が生じてしまう等、シンプル化とは反対方向に進んでいるのかもしれません。
「組込開発向けでもシンプルで気の利いた開発環境が作れないか?」続きを読む
開発環境と実行環境一体化のメリットとは?
iPhoneアプリは”Mac PCと統合開発環境であるXcode”が、Windowsアプリは”Windows PCとVisual Studio” さえあれば、ソフトのコーディング、コンパイルからデバッグまで一連の作業が行える、シンプルで応用的な開発環境になっていると思います。
一方で組込ソフト開発現場では、統合開発環境、コンパイラ、OS,デバッガといったツール類は、各々高機能化が進んでいるものの、その豊富な(複雑な!)機能を使いこなすためには単にツールを揃えただけでは不十分です。むしろ高機能になりすぎて、ツールの組み合わせに制約が生じてしまう等、シンプル化とは反対方向に進んでいるのかもしれません。
「組込開発向けでもシンプルで気の利いた開発環境が作れないか?」続きを読む
2017年02月15日
昨年に発表したソフトウェア開発プラットフォーム”SOLID”、2017年前半に提供予定で開発が進んでいます。最初に提供するものは、出来るだけ多くの皆さまに"SOLID"を体験して頂けるよう、ボードとRTOS/BSP、そして開発環境をセットにし、低価格パッケージとして用意を進めています。提供が近づいてきた"SOLID"、この KMC Staff Blogを通じて、これから順に紹介していきたいと思います。
ということで、今回はまずSOLIDというプラットフォーム全体を眺めてみることにしましょう。
SOLIDとは、
コンパイラ、デバッガを含んだIDEと、ARMで動作するRTOSベースの実行環境がセットになった新しい開発プラットフォームです。
続きを読む
SOLIDとは、
コンパイラ、デバッガを含んだIDEと、ARMで動作するRTOSベースの実行環境がセットになった新しい開発プラットフォームです。
続きを読む