2011年10月18日火曜日

UBIFS使ってみた その1

約1年ぶりの更新です。

1年前に腰を壊して以来、ずーっと放置してました(-_-;)
おかげで、英英辞典のやつは3日坊主になってますね・・・。

ぼちぼちゆっくりと更新していきまする。

 

さて、表題のUBIFSの話。

UBIFSはUBI専用のファイルシステムで、
”UBIFS may be considered as the next generation of the JFFS2 file-system.”
多分JFFS2の次の世代(後継と読んだ方がいいのかな?)になると考えてるらしい、MTD (Memory Technology Device) 用のファイルシステムです。

ではUBIとは何か?というと、”Unsorted Block Images”の略で、MTDと各ファイルシステムの間に入って、データを順番にではなく色んな場所に分けて書き込み(ウェアレベリング)をしてくれるものです。

Flash Memoryって簡単に言うと、コンデンサの周りを絶縁体で固めて漏電しないようにした物の集合体みたいなもので、書き込みする時は電子を貫通させてるんですね。
何回も貫通させてると劣化して書きこめなくなっちゃうんです。
同じところばっかり書き換えしていると、部分的に劣化してしまったりします。

よくPCで使用されているFATやNTFS等は部分的に壊れて(bad block)読めなくなってしまうと、他の様々なファイルも読めなくなっちゃいます。

SSD等は中に入ってるコントローラがウェアレベリングしてくれてるので大丈夫なんですが、NANDをそのまま使う組込の世界では、ファイルシステムで吸収してあげないといけないのですね。

そこで生まれたのがJFFS2やYAFFS2といったウェアレベリング対応のファイルシステムで、UBIはその機能をMTDとファイルシステムの間に入れることで、どんなファイルシステムでも使えるようにしよう!としたもの・・・だと思います。

でもFTLじゃないよ!!”UBI is not a Flash Translation Layer” って公式の説明には書いてありましたw

↓ は公式サイトにあるDocumentから持ってきた図。

ubi

 

困った事に、簡単な説明を書いただけで随分と長めの文章になってしまったので、使い方等は明日書こうかなと思います。

備忘録になるので忘れずに!
意外と過去の自分の記事って自分に役立つなぁって開発中に思いました。

2010年9月2日木曜日

LONGMAN Basic 英英辞典 Exercise 3

 

LONGMAN Basic EINGLISH DICTIONARY の Exerciseその3です。

 

Exercise 3  -----------------------------------------

The word alphabet comes before the
word asleep in the dictionary.
alphabetという単語はasleepという単語より前に書いてあります。

These words both begin with the letter a, so
you must look at the second letters (l and s)
to see which one comes first.
これらの単語はどちらもaという文字から始まっているので、
どちらが前に並ぶかは、2番目の文字(l と s)を見る必要があります。

When the first two letters are the same
you look at the third letter.
When the first three letters are the same
you look at the fourth letter, and so on.
最初の2文字が同じ場合は、3番目の文字を見てください。
最初の3文字が同じ場合は、4番目の文字を見てください。
以降同様です。

Look at these words and put them in
alphabetical order:
これらの単語をアルファベティカルオーダーに並び変えましょう。

“these words”
think thirsty thermometer through thunder thumb
throw theory throat therefore thirteen

# answer
# theory therefore thermometer think thirsty thirteen
# throat through throw thumb thunder

----------------------------------------------------

“and so on” same “etc” です。
”etc”が文中に出てきても”and so on”と発音するのが一般的
・・・らしいです。
# ぐぐりました

“えとせとら”じゃーだめなのかー。
初めて知りました。

2010年8月31日火曜日

LONGMAN Basic 英英辞典 Exercise 2

 

LONGMAN Basic EINGLISH DICTIONARY の Exerciseその2です。
まだまだ、とっても簡単な内容です。

 

Exercise 2  -----------------------------------------

In a dictionary the words are in the same
order as the letters of the alphabet (this
is called alphabetical order), so that
words that start with a are at the
beginning of the dictionary and words
that start with z are at the end.
辞書内の単語はアルファベットと同じ順番に並んでいます。
(アルファベティカルオーダーと言います)
aから始まる単語が辞書の最初にあり、
zから始まる単語が辞書の最後にあります。

Look at these words and put them in
alphabetical order, beginning with letter
a and ending in letter m.
これらの単語をアルファベティカルオーダーに並び変えましょう。
最初はaで、最後はmです。

“these words”
chair flag lake elephant brush house inside
difference grandson kangaroo monument
journalist arrow

# answer
# arrow brush chair difference elephant flag
# grandson house inside journalist kangaroo
# lake monument

Now look at the main part of the dictionary
to see if you have the right answers.
さぁ、正解かどうかを辞書のメインパートを見て確認しましょう。

----------------------------------------------------

 

なんか日本語の方が難しい・・・(汗)

ってか誰か!
”main part”の日本語訳を教えてください!

うーん・・・主要部分とかそんなんかぁ??
メインパートの方が通じる気がしてしまいますw

2010年8月29日日曜日

LONGMAN Basic 英英辞典 Exercise 1

 

お久しぶりの更新です。

先日、英語の勉強の為にこの本を買いました。

せっかく買ったので、この辞書の最初の方に載っている、
Exercisesを翻訳していこうかなぁと思います。
# もし大人の事情で怒られたりしたら消去します

ちなみに、直訳をするつもりありません。

日本語にした時に、伝わりやすくしようと努力するので、
英文とは若干異なった文章になってると思います。

ニュアンスまで変わってたらごめんなさい。
まだまだ勉強中の身ゆえ、指摘or気付いた時に訂正します。

 

Exercise 1  -----------------------------------------

Look at the letters below and put them in the correct order:
下記の文字を正しい順番に並べなさい:

n t k a s l d i c o
(answer a c d i k l n o s t)

Now look at the alphabet above to see if you have the right answer.
さぁ、正解かどうかを上記のアルファベットを見て確認しましょう。

# Exercise 1 のすぐ上にAlphabetical order と題して
# a ~ z まで全て書いてあります

----------------------------------------------------

 

小学生でも分かるような超簡単な練習問題です。
とっても親切ね。

すごーく初歩的なところからだけど、おべんきょーの最初の一歩は、
「こんな幼稚なもの今更恥ずかしくて出来るわけないだろボケぇぇ!」
という感情を捨てることかなと思うです。

ってことで頑張るぞ。

・・・Exerciseは全部で30まであるなぁ。

2010年6月24日木曜日

container_of

 

LinuxのDevice Driverを眺めていると、ちょくちょく見かけるマクロです。
使う機会も割と多いため、覚えて損は無いです。

私も忘れないように一応メモを。

 

定義場所は”$(kernel_dir)/include/linux/kernel.h”
(kernelはlinux-2.6.34を参照)

#define container_of(ptr, type, member) ({ \
        const typeof( ((type *)0)->member ) *__mptr = (ptr); \
        (type *)( (char *)__mptr – offsetof(type,member) );})

Cast a member of a structure out to the containing structure.
てことで、memberを入れると、それを持ってる変数のaddressを返してくれるです。

 

具体的には、

struct test_structure {
    struct sub_structure member;
};

struct test_structure parent;
struct sub_structure *child = &parent.member;

struct test_structure *test;
test = container_of(child, struct test_structure, member);

これでtestにはparentのアドレスが入るって動きです。

 

「”私(1)”は”○○構造体(2)”の”××っていうmember(3)”です!」と言えば、
親を探してくれるって感じで覚えてます。
# 数字は引数の順番

2010年6月14日月曜日

ticklessなkernel

 

ノートPCや組み込み用のkernelでよくよくお世話になる、
tickless(CONFIG_NOHZ)のお話です。

 

LinuxのKernelは、定期的なtimer割り込みによって、
schedulerの管理をしています。

その定期的なtimer割り込みの単位をtickっていう言い方をして、
tickを格納している変数がjiffiesです。

timer割り込みの間隔は、CONFIG_HZによって設定されていて、
100HZ, 250HZ, 1000HZから選べるようになっているはず。
(Targetによって違いがあるかも)

仮に100HZとなっていたら1秒間に100回、つまり10msに一回の
timer割り込みが入り、その度にtickがカウントされるという仕組み
になっています。

 

定期的に割り込み処理が入り、schedulerが呼ばれますから、
当然idleの時間は短くなってしまいます。
(何もしなくても、ね)

そうなると、消費電力を気にするモバイル機器にとっては、
邪魔者以外何物でもなくなります。

 

そこで登場したのがtickless。

tickless(CONFIG_NOHZ)では、timer割り込みは動作せず、
scheuleは他の割り込みから呼ばれることになります。

jiffiesも同じタイミングでカウントされる為、定期的なカウントアップはしませんが、
時間管理として使用できるようにきちんと補正しています。

そーすることで、定期的に起こる無駄な処理を省き、idle時間を長くすることで、
消費電力を抑えることができます。

 

っとまぁ、こんな感じのものです。

自分で選んで使用してる癖に、度忘れしてしまっていたので、
思い出しながら書いてみました。

2010年5月21日金曜日

Debian系でnetwork interfaceの設定

 

なんだか、久々にブログ書いている気がする。

 

本日はちょこっとメモを。

Debian系ディストロでnetwork interfaceのIPアドレスを、Hotplug時に割り振る方法が分からなかったので、残しておきます。

 

やりたかったこと:
・とあるinterfaceに対してIPアドレスを静的に割り振る
・hotplug時に自動的に割り振るようにする

Debian系ディストロの場合、/etc/network/interfacesファイルに、
全network interfaceの設定が書いてあるです。

auto eth0
iface eth0 inet static
    address 192.168.0.1
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255

って感じで書いてあるのだけど、このままだとhotplug対応してないみたいなんです。

それだと、usb ethernet gadgetなど後で接続するinterfaceは、
とーっても不便なので、ちょいと探してみました。

 

答え:

/etc/network/interfacesファイルを編集。

allow-hotplug $(device name) を追加でOK。
例) allow-hotplug etc0

 

ちなみに、OpenSUSEの場合は、
/etc/sysconfig/network/ifcfg-$(device name)ファイル
がInterfaceの数だけ存在して、STARTMODE=’hotplug’って
書いてあげることで同じことができるです。

全然違うと混乱しますよねぇ。