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ベースの実行環境がセットになった新しい開発プラットフォームです。
続きを読む
2017年02月01日
手元にあった弊社製の古い評価ボード KZM-ARM11-01(※1) で、musl libc のテストスイートを、開発中のバージョンの exeGCC(※2) でコンパイルして動かしてみた所、最適化オプション Os だと一部テストが FAIL するが、O2 だと PASS するという現象が発生しました。それだけだとよく聞くような話ですが、分割コンパイルしていて、別ファイルのコードを変更すると、アセンブラソースもオブジェクトファイルも全く同じなのにリンクすると期待通り動かなくなるなど、奇妙な挙動にだいぶ悩まされました。
続きを読む
続きを読む
2016年11月21日
お久しぶりです。だいぶ間が空いてしまいました。その間、全身性エリテマトーデス(SLE)という、免疫が狂って自分自身を攻撃してしまう原因不明の難病を発病し、半年ほど休職していたりと色々ありましたが、なんとか職場復帰することができました。またよろしくお願いします。
そんなこんなで浦島太郎状態なのですが、QEMU のサイトを久しぶりに見てみた所、Docker という仮想化技術を使用して QEMU の Windows 用バイナリをビルドできるようになったそうなので、試してみました。
続きを読む
そんなこんなで浦島太郎状態なのですが、QEMU のサイトを久しぶりに見てみた所、Docker という仮想化技術を使用して QEMU の Windows 用バイナリをビルドできるようになったそうなので、試してみました。
続きを読む
2016年02月18日
MSYS2 を試してみた所、LLVM/Clang が比較的簡単にビルドできましたので紹介します。以前紹介した、VisualStudio でビルドする場合と比較すると、
続きを読む
- LLVM/Clang のビルドに必要な、GCC、CMake、Python、GNU Make などの各種 GNU ツールが、Linux の APT や Yum のようなパッケージマネージャ(MSYS2 は Arch Linux の pacman を採用)でインストールできるので、環境構築や管理が楽。
- VisualStudio は比較的大きく、有償(無料の Express エディションもありますが、常用には登録が必要)のソフトウェアなので、比較的コンパクトで自由なソフトウェアである MSYS2 の方が色々楽。
- GNU 環境のコマンドライン操作に慣れている人には、MSYS2 の方が楽。
続きを読む
2015年12月02日
Xilinx さんが公開している QEMUは Linux ホストのみサポートなのですが、一応ごにょごにょしてみたら Windows でも MinGW-w64 環境で動作させることができたので、メモを残しておきます。(ちゃんとした修正では無いことを、ご了承ください。)
続きを読む
続きを読む
2015年10月09日
GNU ld が ARM ターゲットのプログラムのリンク時に以下のような警告を出すケースに遭遇しました。(XXX.out は ELF ファイル名)
続きを読む
C:/PATH/TO/ld.exe: XXX.out: warning: sh_link not set for section `.ARM.exidx'普通は出ない珍しい警告で、日本語ではほとんど情報が無くて調査に苦労したので、メモしておきます。
続きを読む
2015年10月06日
Design Solution Forum 2015 で、LLVM と GCC の違いや、弊社の(現在開発中の)ARM64 用 PARTNER デバッガのアセンブラ/逆アセンブラ表示に LLVM を使用した事例などを紹介(35 分)してきました。
続きを読む
続きを読む
2015年07月23日
過去に何回か似たような記事を書いてますが、それのアップデートです。
内容的には、以下とほとんど同じ内容です。このツールの組み合わせでビルドが成功したというメモです。
LLVM 3.5(git リポジトリ)をMS VC++でビルド (2014/3/6)
(2015/9/4 追記: 下記手順で Express 2015 for Windows Desktop と LLVM 3.7.0 でもビルドと動作を確認しました。リンク先、中央の Community 2015 ではなく、下の方の Express for Windows Desktop からダウンロードしてください。)
続きを読む
内容的には、以下とほとんど同じ内容です。このツールの組み合わせでビルドが成功したというメモです。
LLVM 3.5(git リポジトリ)をMS VC++でビルド (2014/3/6)
(2015/9/4 追記: 下記手順で Express 2015 for Windows Desktop と LLVM 3.7.0 でもビルドと動作を確認しました。リンク先、中央の Community 2015 ではなく、下の方の Express for Windows Desktop からダウンロードしてください。)
続きを読む