/home/tnishinaga/TechMEMO

日々行ったこと、面白かったことを書き留めます。

of_property_match_stringを使ってみたメモ

あらすじ Google Summer of Code(GSoC)でやることの一つとして、STM32F7マイコンでUART(シリアル)を使うためのLinuxドライバを書いています。 STM32F7とSTM32F4のシリアルペリフェラルはほとんど同じ*1なので、STM32F4のものをベースにSTM32F7向けのコード…

Raspberry Pi 3を64-bitモードで扱うための現状について調べてみた

これまでのあらすじ 2016年の2月の終わり頃,Raspberry Pi 3(以下,RasPi3)が発売されました. 日本では技適のいろいろがありまして,その1ヶ月後の3月終わり頃から秋月やマルツなどで購入できるようになりました. RasPi3の特徴は,Raspberry Pi 2まで採…

Linux Kernelコードを.configの内容に応じてコードを切り替える方法メモ

一連のツイート @tnishinaga そのデバイスのことは分からないのですが、アップストリームに投げる前提ですか?手元で切り替えるだけだったたらconfigシンボルでifdefiしてしまえばいいと思います。https://t.co/FCpxTh1M9y— nekomatu@名古屋 (@nekomatu) Mar…

Failed to find path for dmidecode binaryと言ってlibvirtが起動しなくなった件

問題 いつの間にかlibvirtを使っていた仮想マシンが起動も設定もできなくなっていた. 以下のコマンドでlibvirtを再起動しても,長時間待たされた後にタイムアウトする. $ sudo systemctl restart libvirtd.service journalctlでログを見てみると,dmidecod…

ArchLinuxのアップデートで署名エラーが出た場合についてメモ

本日1週間ぶりくらいに pacman -Syu したところ,以下のエラーが出ました. error: confuse: signature from "Thorsten Töpper <atsutane@freethoughts.de>" is unknown trust 調べてみると以下の記事がヒット. [Solved] confuse 2.7-3 install error: mainatainer gpg key is unknown</atsutane@freethoughts.de>…

黒柴(KURO-SHEEVA)にdebian jessieを入れる

tnishinaga.hatenablog.com この記事の続きです. 前回はLinuxカーネルをビルドして動かしてみるところまでやりました. 今回はdebianのイメージを作って動かしてみたいと思います. debootstrapでdebian環境を作る debootstrapはdebianの基本システムを簡単…

黒柴(KURO-SHEEVA)用にLinux Kernel 4.3をビルドする

先日,セキュリティミニキャンプ沖縄2015にチューターとして参加させていただきました. そこでお手伝いしながら木藤さんの講義「組込みシステム解体新書(入門編)」を聞いていたところ,組み込み機器をいじりたい欲がむくむくと湧き出してきたので,以前とあ…

PyOCDを使ってmbedをデバッグする(2015年末ver)

この記事はmbed Advent Calendar 2015の9日目の記事です. お久しぶりです. 今回の紹介するPyOCDは,mbedのプログラミングやデバッグに使えるPythonのライブラリです. 昨年のmbedアドベントカレンダーではmbedをデバッグするために使用していました. tnis…

UEFIアプリでファイルを任意のメモリアドレスにロードする方法メモ

UEFIアプリケーションでファイルを任意のメモリアドレスにロードする方法についてのメモです. ブートローダーを作ったりするのに役立つと思います. 開発環境はEDK2(28f27af6f007c3794fcc9d098ef91713160f4e5b),OSはArch Linuxを使いました. これを行う…

emacs使い始めましたメモ1

リモート接続してCUI環境で作業することが多くなってきたので,CUIなテキストエディタも使えるように環境を整備し始めました. 基本的に政治と宗教の話はしないのですが,私はemacsを使うことにしました. emacsベテランの方はいろいろ教えていただけると嬉…

VyOSのISOイメージをビルドする

VyOSのISOイメージをビルドする方法のメモです. 最新バージョンのVyOSを用いる場合等は,自分でISOビルドしないと使えないはずです. 基本的な手順は以下のサイトを参照. Howto build an ISO image - VyOS vyos/build-isogithub.com ISOの作り方 1. ビルド…

EdgeRouterLiteでPPPoE IPv6接続ができない件(未解決)

以下の様な設定をEdgeRouterに行ったが,DHCPv6-pdが失敗してIPが降ってこない. set interfaces ethernet eth0 pppoe 1 user-id imhXXXXXXX@bnf6.iij.ad.jp set interfaces ethernet eth0 pppoe 1 password mypass set interfaces ethernet eth0 pppoe 1 mt…

EdgeRouterLiteを使ってiijmioひかりでインターネット接続する方法メモ

家のネット回線が光になりました. プロパイダは iijmioひかり です. キャッシュバック価格などを含めたひと月あたりの回線価格は他のプロパイダのほうが安いのですが,評判を見ると耐えられないほど速度が出ないとあったので,国内老舗ISPであるIIJなら信…

ARM_VMM: KernelVMキャンプの成果報告

3月27-29日にKernelVMキャンプに参加してきました. その成果報告をここに書きます. 知らない方のために説明すると,KernelVMキャンプは東京の山奥に籠もり昼夜問わず黙々とハックし続ける非常に厳しいキャンプで……えっ? 温泉? あいまいみー? 女装ヒルク…

Raspberry Pi2をJTAGデバッグできました

タイトルのとおりです. BareMetalなRaspberry Pi2にJTAGデバッガをつなげて,gdbでレジスタ読んだり実行止めたり出来ました. とりあえず,メモだけ残します. 参考にしたサイト http://www.raspberrypi.org/forums/viewtopic.php?f=72&t=100268 用意するも…

ARMアセンブラの16bit即値代入でコンパイルエラーが出た件

ARM

以下の様な16bit即値をレジスタr0に代入するコードをコンパイルしたところ,エラーとなったので,解決策をメモする. ターゲットはRaspberry Pi 2.コンパイラはgcc 4.7.2 mov r0, #0xffff ARMの公式ドキュメントを読んでみると ARMv6T2 以上のアーキテクチ…

ARM_VMM: Cortex-A7でMMUを有効化する方法メモ

ARMの仮想化支援機能を使ってみたかったので, 現在しゅううさん(@syuu1228)と一緒に教育用自作VMMを作成中です. もちろん,BareMetalで. 対象ボードは,とりあえずCortex-A7を積んだRaspberry Pi 2を予定中. (ARM64なボードが届いたらそちらに移るかも…

go言語コンパイラをソースからビルドする

go言語コンパイラのビルド方法が,半年前に触ったときと違ったので,現在の方法をメモっておく. 環境 Fedora 21 x86_64 Golang 1.4.2 ( c62b003eba484d54c2707b379d29240e5367e98f ) インストール方法 ソースのクローン 半年前はmercurialで管理していた気…

Raspberry Pi 2さわってみた

Raspberry Pi 2が届いたので、とりあえず使用感・性能・消費電流について簡単にチェックしてみました。 使用感 かなり快適です。感動しました。 Raspberry Pi 1はCUIですら反応が遅く、デスクトップを起動すると遅すぎてとても使えないレベルでした。 しかし…

WindowsでARMCCを用いてmbedライブラリをビルドする

LPC812をmbedライブラリを用いて開発したかったので、mbedライブラリのビルド方法を調べました。 事前準備 Python2.xのインストールとパスの設定 Keil MDK-ARM v5のインストール インストール方法 基本は高橋さんの記事のとおりですが、少々変更点があります…

mbed LPC1768でWatchDogTimerを扱う

mbed LPC1768でWDTを使う方法を調べたので、備忘録として記す。 リファレンス LPC176x/5x User manual WDTとは Watch Dog Timer、直訳で番犬タイマー。 マイコンの暴走や無限ループに陥った際、強制的にリセットをかける機構。 WDTはカウントダウンタイマー…

Macでmbedをデバッグする方法についてのまとめ

mbed Advent Calendar 2014の11日目です。 まえおき mbedとの関わり 現在私はmbedのプログラムを アセンブリ言語でコードをゴリゴリ実装して、バグを作っては治すを繰り返す日々をおくっています。 デバッガは必須 アセンブリ言語はCに比べて低級な言語なの…

MacにPyOCDをインストールする方法について

先日mbed用のコンパイル環境を作る方法を解説した際、PyOCDのインストール方法については省略した。 mbedのオフラインコンパイル環境を作った - Toshifumi Nishinagaの技術めも その理由はPyOCDがLinuxとWindowsにしか対応しておらず、Linux上でのインストー…

mbedのC++コードからCやアセンブラの関数を呼び出す

GCCを用いてC++のファイルからCやアセンブラで定義した関数が呼び出せない問題に引っかかったので、解決方法を記す。 解決方法 ヘッダなどでの関数定義に、以下のように "C" を入れるだけ。 extern "C" void hoge(void); これだけでCやアセンブラの関数を呼…

Mac上にAVRマイコンの開発&書き込み環境を作った

AVR

AVRマイコンとはお手軽マイコン開発ツール群Arduinoに使われているマイコンである。 今回はATMEGA2560を用いる必要があったので、マイコン基板にはArduino MEGA2560を用いた。 書き込み器はAVRISP mk2を購入した。 開発環境の構築 基本的には、橋本商会さん…

mbedのオフラインコンパイル環境を作った

mbedとは、お手軽マイコン開発ツール群であるArduinoのARM版のようなものである。 オンラインのIDEを用い、mbedライブラリとユーザーの公開しているライブラリを用いてお手軽に開発を行うことができる。 しかし、デバッグはオンラインでは行えない。 デバッ…

Macでcrosstool-ng使ってARMの開発環境をつくろうと奮闘したが力尽きた話

背景 タイトルそのままなので省略。 なお、crosstool-ngのインストールにはhomebrewを用いた。 $ brew install crosstool-ng crosstoo-ng version $ brew info crosstool-ng crosstool-ng: stable 1.19.0 http://crosstool-ng.org /usr/local/Cellar/crossto…

MacBookPro(early2011)のHDDをSSDにした

自宅でメインに使っているMBPの動作が遅すぎて遅すぎて仕事にならないのでこれを機に買い換えたかったのですが、 まるまる買い換えるほどお金の余裕がないので、HDDをSSDに換えることで高速化を図ることにしました。 今回購入したSSDは以下。 SanDisk SSD Ul…

TFTPサーバーから相対パスでファイル取得できない問題について

著書「BareMetalで遊ぶ Raspberry Pi」追記のため、U-Bootを使ってプログラムをネットワークブートさせながら開発しようとしたのですが、RasPiがプログラムを拾ってこれずにこけてしまいました。 試しにログを吐かせてみると、こんなエラーが出ていました。 …

Linuxでcoredumpを吐く

C言語でメモリ関連のバグを作ったときは普通coredumpを読んで調べて行くみたいだけれど、私の環境ではなぜかcoredumpが出ませんでした。 調べて見ると、最近のLinuxではulimitで設定しないとcoredumpを吐いてくれないらしい。 デバッグ/コアダンプ - S.T.K W…