サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
jr0bak.homelinux.net/~imai
次のページ 前のページ 目次へ 4. アラインメント まずは肩慣らし. アラインメントについては RISC アーキテクチャでは一般的な話で,ARM に限っ たことではありません. x86 以外の アーキテクチャでは,2バイト整数型や4バイト整数型の変数を 配置できるメモリアドレスに制限があります. 2バイト整数型は,偶数アドレスに 4バイト整数型は,4で割り切れるアドレスに 配置しなくてはいけません. 4.1 アラインメント条件を満たさないと アラインメント条件を満たさないメモリアクセスが発生した場合,ARM では例 外が発生します. が,ARM Linux 上ではこの例外をカーネルで捕捉し,「うまく処理する」よう になっています. ARM Linux では /proc/cpu/alignment で,この例外の捕捉状況を表 示したり,処理の変更を指示することができます. $ cat /p
Linux RAID の実験環境 † 何か最近,Linux のソフトウェア RAID のクラッシュについてよく耳にする. クラッシュした RAID からデータをサルベージしようとすると,そのしくみや動作を理解していなくてはならない. というわけで,そこらへんについてちょろちょろ書いていこうと思う. ↑ 実験環境を作る † もちろん現実のハードディスクを必要な分だけ用意できれば最高なのだけど,そんな金も暇も無い,というときのための実験方法を. 要点を書くと sparse file を使う loopback device を使う この2点である. これで理解できる人は,この後の説明は不要だろう. ↑ sparse file とは † sparse file とは ファイルシステム上は一定の領域(例えば 1GB)を占めているように見え 読み出すと sparse している部分(void とも呼ばれ
gcc-4.x での SIMD 命令サポート † 「gcc 4 では MMX, 3DNow!, SSE などの SIMD 命令がサポートされた」「-msse オプションを付けてコンパイルすると SSE 命令が有効になる」なんて話を聞いたことがある人も多いと思います. が,これだけではマトモに SIMD 命令を生成してくれません. というわけで,そこらへんの話を調べた範囲で書いてみようと思います. ↑ おおまかな枠組み † SIMD のレジスタにあった型の変数を定義して ビルトイン関数で演算を記述 -mXXX オプションを付けてコンパイル -mmmx, -m3dnow, -msse, -msse2 など 枠組みとしては汎用 x86 だけでなく,MIPS や XScale の wireless MMX もこの方法でサポートしてるそうです ま,こんなところです. ↑
ÀèÆü¡¤¥Ë¥³Æ°¤Ë¤³¤ó¤ÊÆ°²è¤òÅê¹Æ¤·¤Æ¤ß¤¿¤ó¤À¤±¤É¡¤¡Öʸ»ú¤¬Æɤߤˤ¯¤¤¡×¤È¤¤¤¦°Õ¸«¤¬Â¿¤«¤Ã¤¿¤Î¤Ç¡¤¥Æ¥¥¹¥È¤Ëµ¯¤³¤·¤Æ¤ß¤Þ¤·¤¿¡¥ ¥¿¡¼¥²¥Ã¥È¥×¥í¥°¥é¥àÆâ¤Ë¥¹¥¿¥Ö¤È¸Æ¤Ð¤ì¤ë gdb ¤Î¼êÀè¤òÁȤ߹þ¤ß¡¤Ê̤Υޥ·¥ó¤Ç gdb ¤òµ¯Æ°¤·¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦ÊýË¡¤Ï¡¤¥ï¥ó¥Á¥Ã¥×¥Þ¥¤¥³¥ó¤Î¥×¥í¥°¥é¥à³«È¯¤Ê¤ó¤«¤Ç»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡¥ ¤³¤Î¡Ö¥¿¡¼¥²¥Ã¥È¥×¥í¥°¥é¥à¡×¤¬ Linux ¥«¡¼¥Í¥ë¤Î¾ì¹ç¡¤¡Ö¥¹¥¿¥Ö¡×¤ËÁêÅö¤¹¤ë¤â¤Î¤¬ kgdb ¤Ç¤¹¡¥ kgdb ¤Ï x86 ¥¿¡¼
他の pukiwiki からの謎の referrer † 最近,アクセスログを見ていて気になるのが,他の pukiwiki サイトからの referrer である. これとは別に,かなり以前から referrer spam というのはあった. おそらくは「アクセス元」として referrer を表示するブログプログラムにリンクを表示させるためのアクセスで,referrer の示すページにはこのサイトへのリンクは無い. が,今度のはちょっと違う. 例えばこんな感じ. 124.xxx.xxx.xxx - - [03/Jun/2009:12:40:24 +0900] "GET /~imai/pukiwiki /pukiwiki.php?%A5%EA%A5%F3%A5%AF HTTP/1.1" 200 2717 "http://www.XXX.XX.jp/pukiwiki /index.php?c
ffmpeg での DVD のリッピング † と言っても市販コンテンツの DVD ではなく,自分で録画して焼いた DVD です. で,CSS も CPRM もかかっていないメディアについてです. この場合,ディスク単位で丸ごとコピーするのは簡単なのですが,「トラック単位」で MPEG ファイルとして取り出すツールがありそうでなさそうで. あ,そうそう,環境は Linux 上です. DVD が /media/cdrom/ に mount してあるとして cat /media/cdrom/VIDEO_TS/VTS_01_[1-9].VOB | ffmpeg -i - -target dvd -vcodec copy -acodec copy 01.mpg です. ファイル名は多少違うかもしれませんが,要は そのトラックの *.VOB ファイルを cat で結合して ffmpeg で *.mpg
次のページ 前のページ 目次へ 7. soft fp と hard fp ここで言う fp とは浮動小数点演算のことです. 7.1 一般的な問題 かつては x86 も,FPU (Floating Poing Unit; 浮動小数点演算ユニット)は 別付けのオプションでした. SoC ではその用途上,浮動小数点演算を駆使する機会はあまりありません. このため,現在でも浮動小数点演算ユニットを搭載していない石が多く存在し ます. が,「たまには」浮動小数点演算が必要となる機会もあります. この場合,浮動小数点演算を処理させるにはいくつかの方法があります. FPU エミュレーション 浮動小数点演算ユニットの無い CPU で浮動小数点演算命令を実行しようとす ると,未定義命令等の例外が発生します. この例外を捕捉し,例外ハンドラ中で浮動小数点演算命令をエミュレートし, 例外発生元に復帰します. こ
配布物 † http://jr0bak.homelinux.net/~imai/linux/HDL-GXR/install_kit/ debian etch をインストールしたディスクの tarball sda1.tar.gz sda2.tar.gz http://jr0bak.homelinux.net/~imai/linux/HDL-GXR/source/ 上記 tarball のソース debian debian パッケージのソース kernel linux カーネル busybox 手ビルドした busybox のソース ↑ 寄贈コード † http://jr0bak.homelinux.net/~imai/linux/HDL-GXR/contrib にあります. 今のところ Michael Reinsch 氏の書いた電源監視デーモンとそのハンドラがあります. 増えてきたらサブディ
MP3 のストリーミングサーバです. チャットでの会話が元で,「一瞬のひらめき」で実験してみたら動いてしまった,という方法です. 「他人の褌」度が非常に高いのがポイント. が,一度に1クライアントしか接続できないのが欠点. スクリプト この設定で,唯一,プログラムらしきもの. #!/bin/sh read a echo HTTP/1.1 200 OK echo Content-Type: audio/mpeg echo ( /usr/bin/sox -t ossdsp -r 12000 -c 1 -sw /dev/dsp -t raw -|\ /home/imai/bin/lame -x -r -m m -s 12 --abr 12 - - ) 2>/dev/null exit 0 inetd の設定 9999 stream tcp nowait root /usr/sbin/tcpd /
ffmpeg で動画の速度変換 † ニコニコ動画に試しに動画を上げてみようか,という気分になった. 昔撮影した,林道を走るビデオがあったので,こいつをネタにしようとする. が,走っているところを延々と見せられてもだれるだけである. それじゃ早回しにしてみよう,と思いつく. で,手元にあるビデオ編集ソフト(ULEAD VIDEOSTUDIO 6)でそういう変換をさせてみようとするが…そんな機能はないようである. ↑ というわけで,ffmpeg なんだけど † というわけで,ffmpeg でそういう機能が無いか,とオプションを探してみる. 一番近そうなのは -r fps Set frame rate (Hz value, fraction or abbreviation), (default = 25). というやつである. というわけで,やってみる. ffmpeg -r 48 -i imag
次のページ 前のページ 目次へ 6. char 型 さて,ここらから ARM toolchain 特有の話題に入ります. ARM gcc では,char 型で宣言した変数は unsinged char として扱われます. x86 などの他の gcc では signed char として扱われます. 普通はこちらの方ですね. char が符号あり・なし,ということ自体は C の規約では「実装依存」 であるため,C としては間違っていません. が,世の中のほとんどの C プログラムは char が符号つきであるという 前提で書かれていますし,読者の認識もそうだと思います. というわけで,既存の C のプログラムをコンパイルして使用しようとする場 合,これが問題となる場合があります. 6.1 例 以下のようなプログラムをコンパイルし,実行してみます. #include <stdio.h> mai
警告 これは何? インストール 使いかた asc2scan プログラム 警告 このドライバを組み込むことにより,セキュリティホールが生じる場合があります. セキュアな用途に用いるマシンにはインストールしないこと. これは何? デバイスファイルに出力されたスキャンコードをキーボードから入力されたように扱わせるドライバです. キーボードドライバまわりで小細工しているので,コンソールでも X でも動作します. 実用的な意味はほとんどないので,良い子は手を出さないように. なお,作者自身にも実用的な用途はわかっておりません. (追記) と思ったら,USB ジョイスティックに使えることがわかりました. このドライバを作ったときには作者自身も予想していなかった使い途だったりします :-) インストール pseudokbd.tar.gz を get. アーカイブを開く make する 必要に応じて ps
警告 改版履歴 これは何? 原理 入手 警告 このドライバを組み込むことにより,セキュリティホールが生じる場合があります. セキュアな用途に用いるマシンにはインストールしないこと. 改版履歴 2003/12/17 linux-2.4.23 カーネルに対応 2000/02/11 アプリケーションキー(?)でプログラムを起動するフィルタなど追加 2000/02/06 nicola キーボードのエミュレータを追加 2000/02/06 高速にキーボードをたたくと,読み込み側で eof を発生してしまう,というバグの「回避」. 2000/02/04 初版公開 これは何? Linux カーネルで,キーボードデバイスから送られてくるスキャンコードを 途中で横取り 偽造して横から注入 するためのドライバです. 変換処理部をユーザプロセスに追い出したため,ユーザプロセスを変更することにより多彩な機能に対応
Linux のお部屋 単に「インストールした,動かしてみた」というのは削除してみました. おしながき Linux で冊子の製作 web サーバログ解析 palm から H" 端末への予定表の転送 playmidi - MIDI プレーヤ HTML コンパイラ メーリングリストプログラム MP3 プレーヤ Linux 上で VideoCD を再生 EmiClock - 美少女コスプレ時計 安易形 MP3 ストリーミングサーバ 組み込み関連 Kernel Porters' Guide 拙作の文書. 出来としてはまだα版レベルかな. これからカーネル移植を始めよう,という人の場合「ないよりはまし」かもしれませぬ. Linux Embedded Beginners' Guide kernel porters' guide はちょっとハード,というあたりをターゲットに. まだ書きかけなんだけどね.
次のページ 前のページ 目次へ 8. EABI と legacy ABI 8.1 ABI とは ここでいう ABI (Application Binary Interface) とは,C コンパイラにおいて 構造体への要素の詰め込みかた 関数呼出し時に どのレジスタを関数の引数として利用し,どのレジスタに戻り値が入るか どのレジスタを呼出元でスタックに退避し,どのレジスタは呼び出し先 で破壊しても問題ないか そもそもどのレジスタをスタックポインタとして利用するか などを定義したものです. 8.2 ABI の種類 現在,ARM Linux 上で使われている ABI には以下の2つの種類があります. 従来から ARM gcc で使用されている ABI. gcc でのコンパイルオプションは -mabi=apcs-gnu です. ARM EABI ARM holdings が定義 http://w
次のページ 前のページ 目次へ 5. busybox さて,おつぎは busyboxというプログラムについて. 5.1 busybox とは init, sh, cat, ls, cp など,UNIX の基本コマンドを集めたプログラムです. GNU の fileutils などに比べオプションが一部省略されているコマンドもあります. が,最大の特長は「小さなフットプリント」です. 1 つの実行ファイルでサポートしている全てのコマンドに対応しています. 5.2 argv[0] による複数コマンドの同居 原理 busybox では,1 つの実行ファイルで複数のコマンドに対応しています. つまり,同一の実行ファイルイメージであっても,ファイル名を別の名前に替えただけで違ったコマンドとして動作するのです. どのようなしくみで動作してるのでしょう. (UNIX 上での) C の main 関数は i
Kunihiko IMAI <bak@d2.dion.ne.jp>2009 年 1 月 11 日 ARM gcc にまつわるいやらしい現象とその対策をまとめてみました. 1. はじめに 2. 責任の放棄 3. 想定している読者と環境 4. アラインメント 4.1 アラインメント条件を満たさないと 4.2 由緒正しい対策 4.3 バッドノウハウな対策 5. パディング 5.1 例 5.2 由緒正しい対策 5.3 バッドノウハウな対策 6. char 型 6.1 例 6.2 由緒正しい対策 6.3 バッドノウハウな対策 7. soft fp と hard fp 7.1 一般的な問題 7.2 ARM 固有の問題 8. EABI と legacy ABI 8.1 ABI とは 8.2 ABI の種類 8.3 違い 8.4 見分けかた 8.5 Debian での対応状況 8.6 影響と対策 8.7
CRT 装置の分解法 CRT の説明には「高圧危険.分解しないで下さい」とあります. ハッタリではありません.本当です. ということは,どこに高圧がかかっているのかわかってしまえば,安心して分解できます. そういうためのページ. 免責 この文書自体の信憑性・運用によるいかなる結果についても筆者は一切関知しません. つまり,「感電による心臓麻痺で昇天」することがあるかもしれないが,筆者は責任はとらない,ということ.取ってよ,といわれてもこまります. 原理 CRT では電子銃から発射された電子を電界で加速し,磁界で収束・偏向して蛍光面に当てています. この加速のための電界が高圧 (数万V)であるわけです. CRT といえども真空管の一種です. 3極管を思い出しましょう. ヒータで熱せられたカソードから熱電子が放出され,グリッドで制御,プレートには 高圧がかかっています. そう,危ないのはプレー
とあるマニュアルの PDF ファイルを読んでいたのだが,じっくり読む時はやはり紙のほうが読みやすいのである. というわけで,印刷して綴じてみました. 全部で 1300 ページあまり. 疲れた〜 まぁ,ここまで巨大なやつはともかくとして,「パンフレット」程度のものの製作,ということで. 準備 psutils パッケージをインストールしておきましょう. コマンドの説明 ここで使うコマンドの,ここで使うオプションについて. psnup 1 枚の紙に n ページ分を合わせるフィルタです. -P紙サイズ 紙の大きさを指定します. a3, a4, a5, b5, letter, legal, tabloid, statement, executive, folio, quarto, 10x14 が指定できます. -数字 1 枚の紙に何ページ分出力するかの指定 pstops ページの順番を並べ換えるフィ
Kunihiko IMAI <[email protected]>2005/11/23 版 組み込み Linux のボードで遊んでみたい人へ. 1. はじめに 2. 責任の放棄 3. "hello,world" 3.1 クロスコンパイル環境 3.2 スタティックリンクとシェアードライブラリ 3.3 実行 4. 初めに init ありき 4.1 Linux インストールフロッピー 4.2 initrd イメージの作成 4.3 実行 4.4 実際の組み込みボードでは 5. busybox 5.1 busybox とは 5.2 argv[0] による複数コマンドの同居 5.3 コンパイルとインストール 6. ユーザランドの構築 6.1 proc ファイルシステム 6.2 ルートパーティションを書き込み可能に 6.3 初期化作業の自動化 6.4 date コマンドとタイムゾーン 6.5 あとは…
Kunihiko IMAI <bak@d2.dion.ne.jp>2006/05/31 版 Linux カーネル移植を志す人のための文書になったらいいなぁ. 1. はじめに 2. 責任の放棄 3. 資料の入手 3.1 デバイスの資料 3.2 各種規格 3.3 GPL と NDA 4. 企画 4.1 移植する人へのアドバイス 4.2 売る人へのアドバイス 5. CPU の選定 5.1 アーキテクチャの選定 5.2 SoC の選定 6. 道具 6.1 母艦 PC 6.2 テスタ 6.3 ROM ライタ・EPROM イレーサ 6.4 オシロスコープ 6.5 ロジックアナライザ 6.6 JTAG 6.7 セルフコンパイル環境 7. Linux カーネルソースツリーツアー 7.1 ディレクトリごとの大雑把な説明 7.2 3つの入口 7.3 ブート 7.4 割り込み 7.5 システムコール 8. x8
このページを最初にブックマークしてみませんか?
『http://jr0bak.homelinux.net/~imai/』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く