2009年12月17日

辻さんは Linux がバージョン 0.9 の頃から kernel を見てきたそうなのですが、当時は Yggdrasil Linux というディストリビューションを使っていたという話をこの間聞きました。92-3 年あたりとのことです。

続きを読む

2009年12月15日

この間、NOR flash memory にちゃんとデータが書き込めているかを簡単にチェックしようと思ったとき、PARTNER の機能が便利だったので紹介します。

0xa0000000 から 64 MB の NOR flash memory があると仮定します。
また、0x00000000 から十分な DRAM があると仮定します。(今回はターゲットのメモリを直接利用します。)

PARTNER は NOR flash を通常のメモリと同様に読み書きすることができます。(NAND flash は未サポートです。)

l (load) コマンドや rd (file read) で、適当なデータ (c:\nor_flash.bin) を先頭から 0x1000 バイト (セクタサイズ) 書き込んだとします。

- データファイルの内容をメモリに読み込む

> rd c:\nor_flash.bin,0

- 0xa0000000-0xa0000fff 番地までの内容を、0 番地からの内容と比較

> c a0000000,a0000fff,0

大容量のダンプを比較する場合には、以下のようにファイルに書き出して (RAM Disk などの高速なディスク領域が望ましいです) 外部ツールを使うべきですが、ちょっとしたデバイスの確認などには、PARTNER のこれらのコマンドを使用するのが便利だと思います。

- ファイルにメモリの内容をダンプ

> wr c:\nor_flash.data,a0000000,a0000fff

2009年12月11日

2 ちゃんねる発祥の Mona OS の開発者 higepon さんが、Mona OS のデバッグ環境を整えようと努力されているようです。

Mona OS は QEMU 上で開発されていて、QEMU は gdbstub.c というプログラムで GDB と接続し、ICE のように使うことができます。

ひげぽん OSとか作っちゃうかMona- 2009/12/08 GDB スタブを書いてみよう その1
GDB スタブを書いてみよう その2
目的

達成したいのは Mona 中のユーザープロセスのデバッグ。ユーザープロセスが出来れば Kernel は簡単だと思う。
特にユーザープロセスが死んだときにソースコード上のどこで死んだかが GDB 一発で分かるようにしたい。

弊社の JTAG デバッガ PARTNER-Jet は、まさしくこのような機能を備えていて、弊社ではそれを「OS 対応」と呼んでいます。Linux、Win CE、(T-Kernel などの各種) RTOS、などに対応しており、オプションとして購入可能です。

続きを読む

2009年12月09日

遅くなりましたが、先週行われたAndroidのイベントで話した発表資料をここに貼っておきます。

内容的にはGoldfishの説明はほんのさわりだけで、大部分はEclairのソースの面白そうなところの紹介です。

続きを読む

2009年12月07日

ET 2009 のパネルディスカッション「組込みマルチコア技術の着地点は見えたか? Part 2」で、辻さんが少し Google の Go というプログラミング言語に触れていました。

この言語はいきなりぽっと出てきたわけではなく、ベル研究所におけるポスト UNIX としての長い研究の歴史があります。(そもそも、Ken Tompson 氏、Rob Pike 氏などの Plan9 の有名人が直接関わっています。)

続きを読む

2009年12月03日

おとといの月例会議中に、社長から突然社長賞(表彰 + 特別ボーナス)という制度の設立が発表され、誰もが納得する 3 人の先輩が第 1 回目を受賞されました。おめでとうございます。

弊社のように、全体で 10 数人という規模の会社では、案件の種類によっては、特定の人に大きな負担がかかってしまうことが避けられない側面があります。

だからこそ全員で助け合い、負荷を分散する必要があるのですが、やはり技術に重点をおく会社の性質上、特定の人以外には手が出せない(アウトソースもなかなか難しい)領域というものが存在し、その工数が多い時期というものが存在してしまうのが現実です。

小さな組織は、柔軟で効率的な運営ができる反面、なあなあになりがちで、ともすれば特定の人への仕事の偏りが常習化してしまうという弊害もあると思います。定期的に組織編成を見直し、正当に働きを評価をする機会として、このような会議中の表彰制度というのは有効なのではないかと思いました。

# そのほかにも、ちゃんと会社から評価されているということを、ご家族の方々にも知らせて、ご理解をいただくことを期待する、というような心理面でのケアという側面もあると思います。

もちろん、お金さえ出せば万事解決、などとは誰も思っていません。
ちゃんと若手を育成し、複数人でのバックアップ体制を作っていくという組織改善の努力が重要ですし、これはみんなで考えていかなければいけない問題です。しかし、そのような本質的な解決にはやはり時間がかかります。社長は常にここらへんを気にかけ、どうしたものかと苦悩されているようで、社長賞などの各種表彰制度の整備も、様々な対策のうちの一つなのでしょう。

続きを読む

2009年12月01日

最近 twitter 関連の本が何冊も出版され、徐々にメジャー (?) になりつつあるように感じます。

amazon.co.jp - 和書 検索 > "twitter"

詳細は割愛しますが、twitter というのはマイクロブログサービスです。

ブログは誰でも見ることができる開かれたメディアで、情報の鮮度やまとまり具合がほどよく、コメントやトラックバックなどのしくみも充実しています。
しかしその反面、少し固いメディアでもあるので、記事をまとめるというのは、それなりに手間がかかります。
チャットや IRC は手軽に思ったことを書き込めますが、身内だけで話題が閉じてしまいがちで、情報が表に出てきません。
twitter は、その両者の間のニッチを上手く埋めるサービスだと思います。

twitter には、ハッシュタグというサービスがあります。これにより、自分が follwo している人々だけではなく、twitter 全体から共通の話題に関するポストだけを読むことができます。

この間の ET 2009 の時には、#et2009 というタグが作られ、これがけっこう便利だと個人的に感じました。今年は、どこで何を展示していて、何が面白いのか、などの情報を横断的に見ることができました。

#et2009
(現在、一時的に過去のつぶやきが見えなくなってるようで、何も表示されていませんが…)

また、さまざまな外部サービスを利用するのも便利です。例えば以下のサービスを利用すると、特定のタグを使用した人のリストを見ることができるようです。

ハッシュタグクラウド #et2009

一時的なタグの他にも、例えば #embedded_jp などの永続的なタグもあり、共通の話題を持つ人々 (twitter では、クラスタと呼ばれます。) を素早く見つけ、話題をフォローすることができて楽しいと思います。これから twitter を始めてみようという方は、まずはここらへんから攻めてみると良いかと思います。

#embedded_jp

参考: twitterでの組み込み系話題のハッシュタグ #embedded_jp ができました

ウェブ系やオープンソース系に比べると、組み込み系は (ハードウェアに近い世界では、必然的に NDA が多くなるという仕事の性質もあるのですが) なかなか情報が表に出てこなくて、技術者同士の接点も少ない印象があります。そのため、知名度も低く、なかなか新しい人が入ってこないため、業界全体の高齢化が進んでいるという現状があるのではないかと思います。(弊社もかなり平均年齢は高めだと思います。私はそろそろ 20 代も後半なので、世間的にはけして若い方ではないと思いますが、弊社では最年少です。1 つ上の佐藤さんの次は、もういきなり 10 歳以上年齢層が上がります。)

このブログも、そのような現状を変えたいという思いから続けているわけなので、この twitter のような情報共有の流れは好ましいと思い、紹介させていただきました。

2009年11月27日

主にセマフォの実装などに使用されてきた SWP/SWPB 命令は、もともと ARM v6 アーキテクチャ以降では廃止予定扱い(deprecated) になっていたのですが、ついに v7 からは、デフォルトで未定義命令扱いになり、実行すると例外が飛ぶようになったようです。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204gj/Chdbbbai.html

例えば v7 アーキテクチャ向けに Linux や root filesystem をビルドする時、コンパイラのターゲットアーキテクチャオプションが v7 になっていないと、これが生成されてしまい、システムの奥底で突然謎の例外が発生してクラッシュしたりという、わかりにくい不具合の原因にも成り得るので注意が必要です。

より正確には、v7 でも完全に廃止されたわけではないようです。ARM Architecture Reference Manual (ARMARM) v7-A and v7-R を紐解いてみると、ARM v7-A の場合は System Control Register (SCTLR) というレジスタが存在し、bit[10] が SWP/SWPB Enable bit ということで、これが 1 の場合は実行が可能なようです。(reset 時は 0 。)

v6 以降では、新しく追加された LDREX/STREX を使うことが推奨されています。

それにしても、x86 に慣れた身からすると、プロセッサが後方互換性を捨てるなんていうのはありえない気がします。しかも完全に廃止したわけではなく、回路は残していて、実行も一応は可能というのも不思議です。

この変更は multiprocessing 向け対応の 1 つなのだそうです。ARM はこれからますますマルチコアやマルチプロセッサに対してアグレッシブに取り組んでいくぞという意思表示なのでしょうか。

2009年11月25日

前回の記事に対して、浜地さんからD が若いかどうかは微妙なラインという指摘をいただきました。

言われてみればその通りです。最近(?) Ruby on Rails などで話題になっている Ruby も、開発が始まったのは 1993 年からということで、実は Java (1996) よりも歴史があったりします。

# Java の前身の Oak は 1990 年から開発が始まっていたりと、また微妙ですが。

というわけで、DWARF 3 の対応言語の登場時期を、ざっくりと並べてみました。

続きを読む

2009年11月19日

まつもとゆきひろさんによって開発が開始されたオブジェクト指向スクリプト言語Rubyを初めとして、趣味/仕事を問わず、新しいプログラミング言語を設計/開発したいという需要は昔から一定数存在するようです。

言語処理系に関する本は昔から多数出版されてきていて、去年と今年、日本語の本だけでも10冊以上は出ているのではないかと思います。今年出版された日本語のものだけでも、5冊以上あります。

コンパイラ - 原理・技法・ツール (第二版)
プログラミング言語を作る
ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み
※ 以下の3冊は、私は未読です。amazonの検索でヒットしたもの。
MLによる最新コンパイラ構成技法
やさしいインタープリタの作り方入門―オリジナルなインタープリタを作成する
やさしいコンパイラの作り方入門―オリジナルなコンパイラを作成する

さらに、11/20 に、コンパイラの構成と最適化の第二版も出ます。

インタプリタやほとんど最適化しないレベルの言語処理系ならば問題にはならないのかもしれませんが、プログラムを高速に実行しようと思うと、途中に変換や最適化が必ず入ってくるので、元のソースコードと生成物の乖離が進みます。効率的に最適化されたプログラムをデバッグするためには、デバッグ情報が不可欠です。

しかし、ソースコードの解釈方法や、機械語の生成方法については多数の文献が存在するわりには、デバッグ情報の生成について触れている本はあまり (私が知る限り、一冊も) 聞きません。デバッガベンダーとしては少し悲しいところです。

翻ってデバッグ情報 (DWARF3) の仕様を見てみると、以下のような言語への対応が仕様に入っているようです。ほとんどが伝統的な言語とその後継ですが、D 言語が入っているというのが個人的には意外でした。(D は 2007 年にDigital Mars 社からバージョン 1.0 のコンパイラが出たばかりの、かなり若い言語です。あと Unified Parallel C という言語は初耳です。)

続きを読む

2009年11月17日

私はちょうど去年の ET 2008 の最終日、2008/11/21 に KMC に入社したので、今回が始めての ET です。

いちおう初出社の日 (既にその前から普通に来ていて、いろいろ準備してましたが) なのに、「会社来ても ET で誰もいないと思うから、休みにしても良いよ。それとも ET 来る ?」と言われた記憶があります (笑) さすがにまだ入社前でしたので、前回はおとなしく京都で留守番してました。

北海道大学の博士課程を中退して KMC に入社したのですが、札幌時代に OSC Hokkaido で知り合い、いろいろとお世話になった古賀さんの会社、サムシングプレシャス様が弊社の隣のブースということで、これも何かの縁でしょうか。久しぶりの再会を楽しみにしていたりもします。

思えばあれからもう一年経ったのだなと。あっという間でした。たくさんいろいろなことを勉強させていただきました。今回の ET でも、いろいろと得るものが多いのだろうと期待しています。

ET 2009 に参加されるみなさま、何卒よろしくお願いします。

以下、京都マイクロコンピュータ出展イベント/展示会より転載です。
続きを読む

2009年11月13日

多くの CPU の命令セットでは、0 との比較を特別扱いしています。
そのため、ループを書く際には、なるべく 0 と比較するように書いた方が速いので良い、という主張をたまに聞きます。

しかし、一般的な for 文のイディオム for (i = 0; i < N; i++) を崩してまで、0 と比較するように書く意味が、本当にあるのでしょうか ? それぐらいは、現代のコンパイラならば勝手に最適化してくれそうな気もします。

というわけで、x86、ARM、SH、MIPS、PPC で検証してみました。

x86 は、手元の MinGW の gcc 4.4.0 です。
それ以外の CPU は、弊社の exeGCC 4 (GCC 4.3.3 ベース) を使用しました。最適化レベルは、全て一般的な -O2 です。(FPU は無関係だと思われるので、全て disable モードでコンパイルしています。)

続きを読む

2009年11月11日

これまで紹介してきたように、exeGCCのVLINK機能を使うと、ターゲット上で動くプログラムをまるでPARTNER-Jetの拡張機能のような雰囲気で動かすことができます。

今回はフラッシュメモリの書き込みプログラムの事例を紹介します。
続きを読む

2009年11月09日

今月30日に代々木で開催されるAndroid Bazaar and Conference 2009 Fallで「GOLDFISHをいじってみよう」というタイトルで少し話をさせていただきます。

このブログに書いたgoldfish関連のことを話します。よろしかったらご参加ください。

(2009.11.18 追記)

先日Androidのマスターのソースにeclairブランチがマージされました。予定を変更して新しく追加になったDalvik VMのJITの実験版やWebkitのV8についてGOLDFISHでいじってみたことを話そうと思います。

こちらのページに発表資料を置きました。

関連

Android SDKのgoldfishのCPUをarm1136に置き換える方法

AndroidのSDKのgoldfishのCPUをcortex-A8に置き換えてNEONのSIMD命令を試す

AndroidのDalvikVMのインタープリタをFPU命令で少し高速化する

AndroidのユーザーランドをFPUを有効にしてリビルドする



2009年11月05日

健康診断の時、尿酸値が非常に高いという指摘をされたという話を以前書きました。
こちらは、当然現在も治療を継続中です。ザイロリックという尿酸の生成を抑制する薬を毎日 1 錠、そして毎日 1 時間程度の運動(ウォーキングやランニング) を続けています。人間ドックの時は 9.6 あった尿酸値も、今では 7.2 にまで下がりました。

(それでもまだ危険水域ですが。ちなみにこの検査結果は 2 ヶ月前のものなので、今ではもっと下がってるかもしれません。薬を一回に 3 ヶ月分もらえるので、病院に行くのは 3 ヶ月に一度なもので。)

実はそのとき、視神経乳頭陥凹という耳慣れない指摘もされていたのです。これは、緑内障の典型的な症状なのだそうです。
(まだ 20 代なのに、若い人には珍しい病気を二つも…)

続きを読む

記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード