/home/tnishinaga/TechMEMO

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

Raspberry Pi 5のRP1に搭載されているPIOは今のところ簡単には使えないという話

私が海外でPi5発売されてから楽しみにしていたことの一つは「RP1に搭載されているPIOが使えるか」です。 画像は https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf のFigure2,pp.6 より引用(一部加筆) 海外でのPi5発売とほぼ同時期に公開された…

baremetal Rustでcritical-sectionを使うメモ

趣味でRustを使ってarm64向けのBaremetal開発を行っています。 今日はその環境でdefmtを使おうとして躓いたのでメモを残しておきます。 critical-section defmt_rttはcritical-sectionというcrateに依存しています。 critical-sectionはRustでatomicな処理を…

iperf3の実装を読んでRustで簡易版を実装してみた

iperfを使うことはあっても中の通信がどうなっているのか知らなかったので、調べてみました。 自作のコードで簡単なスループット計測が行えることをゴールとします。 環境 今回の調査はm1 mac book上でiperfを実行し、その通信内容をwiresharkで見ながら行い…

ディスク復号キーに使うPCR Bankはどれを選べばよいかの調査メモ

PCにTPMがついている場合、TPM内の値を復号キーとして用いてストレージの暗号化解除を行えます。 私の家では以下の記事を参考に、clevisを用いてUbuntuを入れたサーバー機すべてのストレージをdm-cryptで暗号化し、起動時はTPMを使って自動的に暗号化解除す…

CONFIG_ADDRESSの出どころをしらべてみた

最近はx86のお勉強をしようと考えて、uchanさんの「ゼロからのOS自作入門(通称みかんOS本)」を読んでいます。 私はx86のことをほとんど知らないので、armとの違いを感じられて読んでいて楽しいです。 さて、先日6章3節「PCIデバイスの探索」を読み進めてい…

VyOS 1.4で特定デバイスだけPPPoEでアクセスできるようにする

背景 技術的な興味からIPoE + ds-liteの接続を普段づかいように残しつつ、特定機器だけPPPoE接続にする方法を調査して設定してみました。 その方法を備忘録として残しておきます。 環境 マシン Shuttle DS68U CPU: Intel(R) Celeron(R) CPU 3855U @ 1.60GHz …

VyOS 1.4にAdGuardHomeを入れる

セキュリティ強化とトラッキング対策を目的としてVyOSにAdGuardHomeを入れてみたので、備忘録を残しておきます。 環境 マシン Shuttle DS68U CPU: Intel(R) Celeron(R) CPU 3855U @ 1.60GHz Memory: 8GB Storage: 120GB VyOS 1.4-rolling-202212310809 やる…

起動しているLinuxマシンに適応されているDevice Tree Source(dts)を取得する方法メモ

Linux kernelが起動時に読み込んで使っているdevice treeをdts形式で確認する方法を毎回忘れるので備忘録として残します。 device treeを使っているアーキテクチャならどこでも使える方法のはず。 1. device-tree-compiler を入れる device treeはdtbの状態…

安価なロジックアナライザとsigrokでJTAGを見る

現在、フルスクラッチでJTAGをしゃべるプログラムを開発しています。 このプログラムのデバッグ用にJTAG信号を解析できるロジックアナライザを探したところ、うまく使えるものが見つかったので、備忘録として残しておきます。 sigrok JTAG信号を解析できる信…

VSCode remote SSH extension でつないだRaspberry Pi上でrust-analyzerを動かす方法メモ

計算リソースやデバイス接続の関係から、最近は開発を手元のMacで行うのでなく、リモートサーバーにVSCodeのRemote ssh extension機能を使って接続して行っています。 今回はリモートサーバーにRaspberry Piを利用した際にrust-analyzerが動かず困ったので、…

iPad pro 2018 11inch WiFi modelを購入しました

2019年3月末に2018年モデルのiPad Pro 11inchとその周辺機器を購入しました。 それから約1ヶ月ほど使ってみて、買った周辺機器やアプリなどが色々あるので、感想を書いていこうと思います。 忙しい人向け お金の余裕があればiPadはCellerモデルをおすすめ 保…

Rockstor をインストール時に暗号化してリモートから鍵入力できるようにする話

NAS用LinuxディストリビューションのRockstorを使ってお家のNASを作り直したので、そのときにやったことを備忘録として書き残しておきます。 再構築の目的 私は以前からRockstorを入れたNASサーバーを運用していたのですが、以下の点が気になっていたのでOS…

Chisel + PYNQでLチカ(お正月FPGAあそび)

お正月なので普段やらないことをやろうと思い、買ってから2年ほど放置してしまっていたPYNQ-Z1を使ってFPGAを触ってみました。 「RISC-Vで遊びたい」という気持ちと「FPGAをさわってみたい」という気持ちがあったので、「PYNQでRISC-Vを動かしてみる」ことを…

UEFIの呼び出し規則について

UEFIの呼び出し規則について調べたので忘れないようにメモしておきます。 呼び出し規則とバイナリフォーマット UEFIのアプリケーションは以下の点が一般的なLinuxのアプリケーションと異なるため、Linux環境上でUEFIアプリをビルドするには解決の必要があり…

Bus Blaster v3を買いました

かっちった BusBlaster3届いた pic.twitter.com/xhP1mYTfYl— tn (@tnishinaga) June 2, 2018 購入まで 先週Japan Technical Jamboree(Twitterでのハッシュタグは #celfjp )という、組み込みLinuxに関係する企業の方や趣味の方が集まる勉強会で、個人としてSy…

Windows10とArch Linuxをファイルシステムを暗号化しながら入れた話 その1

あらすじ 新マシンとしてThinkPad X230の中古品と480GBのSSDを買ったので、セットアップを行いました。その時行ったことを備忘録として書いておこうと思います。 ハードの性能はこんな感じです。 name spec Hardware ThinkPad x230 CPU Intel(R) Core(TM) i5…

QEMUのARM Virtマシンのペリフェラルメモリマップについてのメモ

QEMUのARM Virtマシンのペリフェラルメモリマップは何処を見ればいいんだっけ......とよく忘れるので、パスと見るべきところをメモします。 マシンを定義しているファイルはこれ。 qemu/virt.c at master · qemu/qemu · GitHub メモリマップは125行目辺り Me…

UEFIのHTTP BOOTを試してみる

UEFI 2.5からネットワークブートの方法として"HTTP BOOT"が増えました。 今回はこのHTTP BOOTは従来の方式に比べ何が嬉しいのか、この機能を使ってUEFIのアプリを起動するにはどのようにすればよいかを書いていこうと思います。 忙しい人のまとめ ネットワー…

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内の…