2019年12月16日月曜日

Xcode 11: mac port の gcc で wchar.h が No such file 落ち

Xcode のバージョンがあがって、ディレクトリが変わったことに起因するらしい。

https://trac.macports.org/ticket/59113

1) make 時に変数をわたすか、
2) .zshrc で環境変数に値をセットする。

MACOSX_DEPLOYMENT_TARGET=


export SDKROOT MACOSX_DEPLOYMENT_TARGET

3) ディレクトリの旧パスにリンクを張ってごまかすという手もあるという。

2019年5月19日日曜日

Windows 10/Eclipse で Msys2/Mingw64 の GDB が動かないとき

mingw-w64-x86_64-gdb  をインストールしたが
Error in final launch sequence 
Failed to execute MI command: -exec-run
でとまるとき。

Eclipse の実行に管理者権限が必要。アイコン右クリック、あるいはプロパティで管理者実行権限を付与。

あらゆるトラップに引っかかってみせる優れたチュートリアル:
https://blogs.osdn.jp/2018/02/05/gdb.html

2018年9月9日日曜日

gdb を High Sierra 10.13.x で動作させるには

brew で gdb 8.1.x をインストールして certificate や code sign ,~/.gdbinit 作成の手順を踏んでもエラー
"During startup program terminated with signal ?, Unknown signal."
で動作しない.
結局,gdb を 8.0.x にダウンデート?する必要がある.
https://stackoverflow.com/questions/49001329/gdb-doesnt-work-on-macos-high-sierra-10-13-3

2017年2月18日土曜日

Dynamic Parallelism を使うコンパイルとリンク

NVIDIA CUDA 8.0, Visual Studio 2015 環境での CUDA Dynamic Parallelism を使用する cu プログラムのコンパイルとリンクで cdp プログラミングを使ったコードをコンパイルする場合、Solution のプロパティにて

CUDA C/C++ > Common の Generate Relocatable Device Code : Yes (-rcd=true)

Linker > Input の Additional Dependencies のライブラリリストに、
cudadevrt.lib
が必要だ。

2015年11月18日水曜日

Mac OS X El Capitan で gdb を使う Setting up gdb on Mac OS X El Capitan

OS のアップデート後に動作しなくなった GNU gdb (mac ports) を再び使えるようにする.
コード署名,/System ディレクトリの plist ファイルの書き換えなど,個別の作業はていねいに解説されたウェブページがあるので,キーワードで検索し参考にする. Stack Overflow に taskgated.plist の編集のため SIP 機能を解除する手順について言及する投稿がでた.

症状:
Yosemite で使っていたバイナリーのままで ggdb コマンドを実行すると,起動するが,run コマンドは taskgated, codesign についてのエラーを出して機能しない.
Unable to find Mach task port for process-id 673: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))

環境,目標:
Mac OS X 10.11.1
X code 7.1.1, Command Line Tools (Mac OS X 10.11) for Xcode 7.1
Apple LLVM (/usr/bin/gcc) 7.0.0
GNU gdb (/opt/local/bin/ggdb) 7.7.1

1. (念のため)mac ports のバイナリを,10.11 (El Capitan) 対応のものにアップグレードする.
Update gdb binary for Mac OS X 10.11.

(0) (OS のアップグレードでなくなった) x-code のコマンドラインツールをインストールする.先に Xcode は 7.1.x にアップデートしておく.
(1) https://www.macports.org/install.php からダウンロードして mac ports をインストール.
(2) port selfupdate, port upgrade outdated を実行(sudo).

2. gdb のコマンドバイナリにコード署名する.
Code sign gdb binary.

GNAT User's Guide, gcc.gnu.org
(1) 証明書を作成する.open -a "Keychain Access.app"
(2) コード署名する.sudo codesign -f -s gdb-cert /opt/local/bin/gdb
(3) taskgated の起動オプションが変更済みの場合,taskgated を再起動する.OS を再起動するか,launchctl load /System/Library/LaunchDaemons/com.apple.taskgated.plist を実行.

3. OS の taskgated の起動オプションに -p オプションを追加する.
Temporarily disable SCR function on file systems and add -p command line option to the taskgated start-up script.

/System/Library/LaunchDaemons/com.apple.taskgated.plist ファイルの起動オプション -s が書かれた行 (array タグ) を探し, -sp に変更する.
ただし 10.11 では /System が書き換え不可となっている(System Integrity Protection (rootless) 機能)ため,一時的にファイルシステムを書き換え可能にし,編集したのち,元に戻す.
(1) リカバリーモードで起動する.再起動し,アップルマークが表示されるまで command+R を入力する.
(2) ユーティリティーメニューでターミナル Terminal をを選び,csrutil disable コマンドを実行,通常モードで再起動.
(3) 起動パラメータファイルを編集する./usr/bin/emacs, /usr/bin/nano 等をが使える.
(4) リカバリーモードで起動する.csrutil enable コマンドを実行して元にもどし,通常モードで再起動する.

4. ggdb の root 実行権限をもつグループ(mac ports では procmod)に使用するユーザーを追加する.
Add the user to "procmod" group.

(1) 確認する.dscl . read /Groups/procmod
の GroupMembership の値を確認.
(2) ない場合,グループにユーザー ID を追加する.
sudo dscl . append /Groups/procmod GroupMembership %username%

2013年10月21日月曜日

SPI 液晶ディスプレイ

秋月電子通商で扱われるようになった SPI 接続のグラフィクスディスプレイ.コントローラチップ ST7565 の Arduino 用ドライバは,Adafruit が公開しているものがある.
初期化シーケンスが違うためかコントラスト設定がうまくいっていないようだが,なにか表示されるようにはなる.商品説明書のとおりに変更すると,コントラストもきれいになる.ディスプレイの上下やピクセル数をあわせる必要もありそうだ.

しかし,RAM の小さいマイコン,たとえば Arduino の ATMega328P の 2KB 程度,では実用にならないことに気がついた.ディスプレイコントローラ ST7565 へはデータまたはコマンドの書き込みのみなので,表示されているピクセルの状態を読み出せない.グラフィックディスプレイとしてピクセル単位でアクセスするには,描画する側にスクリーンバッファが必要になる.128x64 ビットで 1KBytes を消費してしまう.

SPI インターフェースで高速なので残念だが,RAM の多いチップ向き.
Strawberry Linux の 102x64 グラフィクス LCD も SPI バスで,商品ページにリンクされているデータシート?を見る限り,スレーブデータアウトの端子がないので,これもビットマップアイコン/キャラクタディスプレイということのようだ.

2013年6月9日日曜日

Strawberry Linux の lpclcd 用コードを Keil mdk で開発できるのか

lpclcd はM0でフラッシュのサイズは32kB、LPCXpresso や評価版でコンパイルできるが、C++ が使えない。デバッガも使えるほうがいいので、mdk で使いたい。

まず、JTAGピンをつけてULINK/MEやST-Link2をつないでみたが、プログラミングアルゴリズムとして NXP LPC11xx 32kb を選んだだけでは、アップロード後の verify で失敗する。
とりあえずあきらめ、USB ストレージとしての flash 書き込みを試みる。

まず、.axf (elf) から.bin に変換する。
Keil に fromelf というコマンドがついていて変換に使えるらしいが、パスが変わっていた。
ビルド時に変換もするよう、Project オプションの User コマンドに追加する。
C:\Keil\ARM\ARMCC\bin\fromelf.exe --bin "#L" -o "$Poutput.bin"
#L と $P は、パス変数のようだ。

これでできたファイルを USB ストレージにコピーしても書き込みまれておらず、動かない。実行可能にするには、チェックサムを付加する必要があるらしい。LPCXpresso のプロジェクトの makefile に書いてあるものを参考にすればいいと思うが、ARM が配布している CHECK8.EXE コマンドは 64bit Windows 7 では動かない。ので、PCXpresso に用意されている checksum コマンドを使う。

解説ページ

C:\nxp\LPCXpresso_5.2.4\lpcxpresso\bin\checksum -p LPC11U24_401 -d "$Poutput.bin"

とりあえず、LPCXpresso プロジェクトのコードを(コードプロテクション CRP のマクロはコメントアウトして)ビルドして、書き込んで動いたのでよしとしよう。