Friday, September 11, 2009

Mobileye system

Mobileye System
すごいなこれ.しかも製品化されているというところもすごい



LDW(Lane Depature Warning)車線離脱の警告システム

Wednesday, September 02, 2009

ArduinoのPWM出力

ソフトウェアでdigitalWriteとdelayMicrosecondで行っていたが効率が悪い.MsTimer2というライブラリがあって,Arduinoの割込を簡単に利用できるのでこれもいいけど,ArduinoのanalogWriteを使ってpin 3,5,6,8,9,10,11でPWMを出力している.これらのpinを使うことにした.ただし注意しないといけないのはこれらのpinから出力されるPWMの周波数は異なる.オシロスコープでこれを確認した.

pin 3, 8, 9, 10, 11は周期約2.04msのPWMを出力するが,pin 5,6ではその半分の約1.02msの周期でPWMを出力している.持っているサーボはpin 5,6の出したPWMだと反応が遅い.ArduinoのanalogWriteのページで周波数490HzのPWMを出しているという情報はpin 3,8,9,10,11の方のことだな

Wednesday, August 26, 2009

ArmadilloではuCLinuxを使用している.uCLinuxではfork()を使用することができない!
MMU(Memory Management Unit)がないからだ.もっと早く気付けばよかったのに!
こんな常識な話知らない自分まだまだだな~

fork()の代わりにvfork()を使用できるらしいが,子プロセスがexec系,exit()を呼び出すまで親プロセスはsuspendする.これじゃマルチプロセスじゃねぇ!じゃん

まぁ,pthreadを使用することだな・・・

参考:
ソフト・マクロのCPUでLinuxを動かす(後編)OSの実装とネットワーク対応機器への応用

Thursday, August 20, 2009

標準Cライブラリの実装 strerror関数

see also: http://www.kijineko.com/doc/jsp/strerror_8c-source.html
標準Cライブラリの実装 strerror関数: "#include

char *strerror(int errnum)
{
char *result;
switch (errnum)
{
case 0:
result = 'No error';
break;
case EDOM:
result = 'Domain error';
break;
case ERANGE:
result = 'Range error';
break;
case EILSEQ:
result = 'Illegal sequence';
break;
default:
result = 'Unknown error';
break;
}
return result;
}"