/home/tnishinaga/TechMEMO

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

UEFIで任意のProtocolを使ってプログラムを書くためにはどうすればいいのかメモ

ふと、UEFIアプリでシリアルを直接さわって通信がしたくなりました。 UEFI 2.0にはEFI SERIAL IO PROTOCOLというプロトコルがあり、これを用いればシリアル通信をハードウェアを直接触ること無く行えるようです。 早速、このプロトコルを使ってシリアル通信…

vagrant-azureとansibleを使ってRaspberry PiのLinux Kernelをビルドしてみた話

vagrant-azureを使ってAzureの上にVMを建てることを前回行いました。 vagrant-azureを使ってAzureに仮想マシンを建ててみたメモ - /home/tnishinaga/TechMEMO 今回はこれに加えてansibleを使ってRaspberry PiのLinux Kernelをビルドすることを行ってみたいと…

vagrant-azureを使ってAzureに仮想マシンを建ててみたメモ

自宅開発環境が貧弱で大変厳しいので、コーディング環境含めクラウド上で行えるようにできないかと色々試しています。 とりあえず最低限SSH使える環境がアレばスマフォでもコーディングとビルドが行える環境を作るのが目標です。 クラウドは使っている間だけ…

Arch Linuxのマシンにvagrant-azureプラグインを入れる話

vagrantを使ってAzureに仮想マシンを建てようとしたらそれ以前のところで躓いたので備忘録として残しておきます。 問題が起こった環境 Arch Linux(x86_64) $ yaourt vagrant 1 community/vagrant 1.9.5-1 [installed] Build and distribute virtualized deve…

gnu-efiを使ってAARCH64/ARM64のUEFIサンプルアプリを動かしてみる

UEFIアプリを作るためのツールキットとしてはEDK2とgnu-efiの2つが有名ですが、後者のgnu-efiについて書いているところが少なかった気がしたので、サンプルビルドの方法とQEMU上で実行する手順について書いておくことにしました。 対象はx86_64ではなく、AAR…

先日U-Bootに投稿したARMv7MのLinux起動時にデータキャッシュを無効にするパッチについての備忘録

先日、以下のパッチをU-Bootに投稿し、マージされました。 [U-Boot] [PATCH] armv7m: Disable D-cache when booting nommu(ARMv7M) Linux kernel 忘れないように、なぜこのパッチを投稿したかを残しておこうと思います。 前回のあらすじ ARM Cortex-M7マイコ…

ARM命令はなぜ先頭に0xEが並ぶのかについて調べてみた

目grep入門 +解説 from murachue www.slideshare.net こちらのスライドでご存知の方も多いと思いますが、ARMの実行バイナリをバイナリエディタのビットマップビューで見るとゴマ粒のようなものが縦に並んでいるのが見えます。 これはほとんどの命令の先頭4bi…

Arch LinuxのAndroid StudioでAndroidエミュレータが立ち上がらなかった件

数年ぶりに簡単なAndroidアプリを作ってみたくなったので、AndroidStudioをインストールしてとりあえずHelloWorldアプリを動かそうとしたのですが、AVDマネージャーからAndroidエミュレータの起動ボタンを押しても一向に端末の画面が出てきてくれる気配があ…

QEMUでARM64(AARCH644)のUEFIコンソールを実行する

UEFIといえばパソコンのBIOSに変わるファームウェアが真っ先に思い浮かびますが、最近ではHiKey boardなどARM64(AARCH64)の乗ったボードのファームウェアにもUEFIが使われ始めています。 UEFIを採用したボード上で動作するUEFIアプリケーションや、UEFIから…

2017年版おすすめ本のご紹介

蔵書の写真をTwitterにあげたところ思いの他反響があったので,おすすめの書籍を紹介したいと思います. これから紹介する本は,私が今まで一部でも良いので読んだ本の内,所有しているもの,または記憶に残っているものになります. UNIX, Linux系学習用 は…

QEMUでCortex-M3/M4マイコンボードをエミュレーションしてLチカする話

GNU ARM Eclipse QEMUを用いるとCortex-Mマイコンのプログラムをエミュレータを使ってパソコンの上で行うことができました。

proc-v7m.Sに定義されているnop_cache_fnsはどこにあるのか

ARM Cortex-M7マイコンでキャッシュを使えるようにするためにいろいろ頑張っています。 現在のLinux Kernelでは、アーキテクチャとしてARMv7Mが選択されると同時にCPU_CACHE_NOPが選択*1され、キャッシュを制御するコードとしてarch/arm/mm/cache-nop.S内の…

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で管理していた気…