uchan note

プログラミングや電子工作の話題を書きます

UEFI Memory Map メモ

UEFI で得られる Memory Map の実例。 機種:qemu-system-x86_64 Index Type PhysicalStart VirtualStart NumberOfPages Attribute 0 3 EfiBootServicesCode 00000000 00000000 1 F 1 7 EfiConventionalMemory 00001000 00000000 9F F 2 7 EfiConventionalMe…

x86 OS自作ゼミの進め方

セキュリティ・キャンプ2017のx86 OS自作ゼミの進め方、最大限の成果を出す方法について思うところを書きます。 3日間は短い! x86 OS自作ゼミは3日間しかありません(それでもセキュリティ・キャンプの中では最長なのですが)。OS自作という壮大なテーマに…

seccamp2017

x86 OS自作ゼミ 基本情報 x86 OS自作ゼミの基本的な情報は以下の通りです。 タイトル:x86 OS自作ゼミ トラック:言語やOSを自作しよう 時間帯:3日間連続 必要機材:PCのみ 事前学習:あり(詳しくは後述) x86 OS自作ゼミ 概要 講師がサポートしつつ、世界…

【技術書典2】Linuxカーネルモジュール自作入門を出します(ダウンロード頒布有)

皆さんは 技術書典2 というイベントをご存知でしょうか。2017年4月9日に秋葉原で開催される、技術書オンリーの同人誌即売会です。 この記事では、技術書典2のために書いた 「Linuxカーネルモジュール自作入門」 の目次をご紹介します。最後にダウンロード販…

Ubuntu 16.04 で XKB を使ってキーマップをカスタマイズする

いつも分からなくなるのでメモ 概要 こんなことがやりたくなったら、キーマップをカスタマイズすることになる。 JIS 配列キーボードを使っているが、US 配列として使いたい Caps Lock を Control に割り当てたい やり方は幾つかあるようだ。XKB を使う方法、…

自作OS Advent Calendar 2016 目次

これは 自作 OS Advent Calendar 2016 の 25 日目の記事です。 1 日目から 24 日目までの記事をまとめた目次になっています。 それぞれの記事のURLの後に書いてある一言紹介は、uchanによるものです。 記事の著者さんに確認を取っておらず、もしかしたら誤っ…

はりぼてOSでELFなアプリを起動する

これは 自作 OS Advent Calendar 2016 の 18 日目の記事です。 概要 『30 日でできる!OS 自作入門』 の「はりぼて OS」が対応している実行可能形式は HRB 形式です。 HRB という名の通り「はりぼて OS」独自の形式で、.text、.data、.bss セクションに相当…

Windows で GCC 6.2.0 をビルドするメモ

これは 自作 OS Advent Calendar 2016 の 8 日目の記事です。 概要 現時点で最新バージョンの GCC 6.2.0 を Windows 上でビルドするメモです。 このメモでは、i386-elf をターゲットにした GCC を作ります。 コンパイラ本体のみが対象で、標準ライブラリ等は…

レベル変換の仕組み(オームの法則からMOS-FETを使ったレベル変換回路まで)

レベル変換 レベル変換とは、電圧の異なる信号線をつなぐ際に電圧を変換することです。 例えば Raspberry Pi という小さな Linux ボードコンピュータの電源電圧は 3.3V です。 そのため GPIO の入出力電圧も 3.3V となっており、電子工作でよくある 5V 駆動…

osdev-jp という自作 OS のコミュニティを作りました

これは 自作 OS Advent Calendar 2016 の初日の記事です。 自作 OS Advent Calendar といいつつ、初日は技術的なことは書かずにコミュニティの紹介をします。期待してくださった方にはすみません(^^;) 自作 OS コミュニティの昔と今 私が自作 OS というもの…

nfcpy で複数の System Code を持つ NFC タグを扱う方法

Linux (Ubuntu 16.04) で nfcpy を使ってみました。落とし穴が多い気がしたので、ここにまとめます。 特に、複数の system code を持つような NFC タグの扱いが複雑ですので、詳しく説明します。 概要 Linux で NFC タグを読み書きするには nfcpy という Pyt…

Python で Markdown 文書を HTML へ変換する

python-markdown2, py-gfm, pygments というライブラリを使って Markdown 文書を HTML へ変換するメモです。 GitHub Flavored Markdown (GFM) の特徴である Fenced Code Block にも対応しています。 インストール $ pip3 install --user python-markdown2 py…

フリースタンディングな GCC 5.3 をビルド on Ubuntu 15.10

自作 OS 製作などでお世話になるフリースタンディングな GCC をビルドする手順のメモ。完全にきれいな環境でビルドしたわけではなく、依存関係をすべてメモに記載できていない。手順通りにビルドしてもツールが不足していたりしてエラーになることがあるが、…

deb パッケージングメモ - alien 編

Ubuntu で deb パッケージを作ろうとして調べ、実験したメモです。 なぜ自作ツールの deb パッケージを作るのか 開発したソフトウェアを Chef や Ansible などでデプロイするのに、apt-get install できると便利です。 deb にすることで、プログラム本体だけ…

楽しい仕様書と生産性に関する考察

結論:楽しい仕様書は将来にわたってチームの生産性を向上させる。 仕様書を書く効果 『Joel on Software』(オーム社 2005)でジョエルはこんなことを書いている。 「仕様書の最も重要な役割はプログラムをデザインすることだ。」 仕様書を書くには設計する…

Git で deb パッケージング

Git で管理しているソフトウェアを deb パッケージにしたいことがあります。 本記事は、1 つの Git リポジトリの中でソフトウェア本体と deb パッケージのメタデータを管理する方法を説明します。 2016/02/29追記:ここで紹介するブランチ構成には問題がある…

KiCad Pcbnew 各レイヤの役割

概要 KiCad のプリント基板エディタ Pcbnew の各レイヤの役割をメモします。 この記事は KiCad 4.0.1-stable を対象に記述しています。古いバージョンではレイヤ名が日本語になっていたりと違いがあるようです。バージョン 4.0.1 に対応した体系的な説明が見…

MOSFET を用いた双方向レベル変換回路の考察

前回の記事 で紹介したレベル変換回路(level shifter)の動作を説明し、MOSFET の機種選択の考慮点を考えます。結論は、MOSFET のゲートしきい値電圧が高い機種は使えないので注意しましょうということです。

DRV8830 と電源電圧が異なるマイコンを直につないで良い

English translation is below. 前回の記事 モータドライバ DRV8830 に関するメモ の続きです。 概要 本記事は DRV8830 という TI (Texas Instruments) 製のモータドライバと各種マイコンを I2C で接続する際の注意点をまとめたものです。結論は、DRV8830 と…

モータドライバ DRV8830 に関するメモ

DRV8830 は TI (Texas Instruments) 製のモータドライバです。秋月電子通商でも販売しています ので、それなりに有名だと思います。 DRV8830 は 2.75V から 6.8V までと幅広い電源電圧に対応しており、乾電池 2 本でも動くので電子工作には最適です。 マイコ…

ReText を Windows 10 にインストールする

本記事は reST(reStructuredText) をライブプレビューできるエディター ReText を Windows にインストールする方法 を参考に、著者が試した記録だ。 注意点 執筆時点の PyQt5 の最新版 PyQt5.5.1 は Python 3.4 向けにビルドされており、Python 3.5 系ではう…

Kafka のトピック・パーティションの決め方を考察する

Apache Kafka は分散キューまたは pub/sub メッセージ配信システムとして使われるミドルウェアである。Kafka は pub/sub システムで一般的にある「トピック」に加えて、各トピックを分散処理のために分割する「パーティション」という機能を持っている。この…

Arduino に iPod の出力を繋ぐためのプリアンプ回路を実験してみる

少し前に プリアンプ回路を設計した ので、それを実装して実験してみた。 そもそもやりたかったのは、Arduino でデジタルエフェクタを作ることである。 そのために、交流である音声信号を、 1.65V を中心にして、なるべく 0V から 3.3V まで大きく振れる信号…

Arduino に iPod の出力を繋ぐためのプリアンプ回路を設計してみる

注)Qiita で書いた記事 を引っ越してきました Arduino で iPod の出力を精度よくデジタル変換したいなと思って、プリアンプ回路を設計してみた。対象は Arduino Due だけど、他の Arduino でも同じように使える回路になっているはず。 Arduino Due は 3.3V …

タッチパッドに手のひらが触れてカーソルが動くのを防止する

タイピング中に手のひらがタッチパッドに触れて、マウスカーソルが動いてしまったりクリックしてしまうことがある。それを防ぐために、タッチパッドの両端を無効化する方法を説明する。Ubuntu 15.04 で動作確認しているが、その他の Linux でも同様の方法が…

【Ubuntu】ラップトップ PC の蓋を閉じてスリープさせる

LAVIE Direct HZ というラップトップ PC に Ubuntu 15.04 を入れて使っている。この PC は 13.3 型もの大きさがあるのに非常に軽く、筆者のお気に入りだ。ただ、残念なことに蓋を閉じてもスリープモードにならない問題があった。 ※2017 年 1 月 29 日追記:U…