Mobileye System
すごいなこれ.しかも製品化されているというところもすごい
LDW(Lane Depature Warning)車線離脱の警告システム
Friday, September 11, 2009
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の方のことだな
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の実装とネットワーク対応機器への応用
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;
}"
標準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;
}"
Thursday, August 13, 2009
IPC - プロセス間通信に関するメモ
■ 共有メモリいろいろ
shmget() は共有メモリ作成
shmat() は共有メモリに読み書き許可を与える(アタッチする)
参考サイト:
*http://www.gadgety.net/shin/tips/unix/ipc/shared.html
手順:
●共有メモリを準備プロセス(アクセスもする)
shmget(): 共有メモリ作成
shmat() : 読み書き許可をアッタチ
読み書きを行い
shmdt() : 共有メモリを分離する
shmctl(): 共有メモリを破棄
●共有メモリにアクセスするプロセス
必要であれば ftok() : キーを生成 (fork()を使用して,子プロセスはいらない)
shmget() : 生成したキーから共有メモリのidを取得
shmat() : 読み書き許可をアタッチ
shmdt() : 共有メモリを分離
終わり
■ セマフォいろいろ
プロセス間通信のとき,たとえば共有メモリを使用するときとか,セマフォを使用するとき,IDを使用してアクセスするが,共通するリソースを使用したいときはプロセス(複数)みんな同じIDを使用しないとアクセスできない.この関数の引数はプロセス間の一つのプロトコルみたいなもので,みんな前もって同じpathnameとproj_idを使用してキーを生成すると決めれば,同じキーを使用することができ,共有リソースにアクセスすることができる.
参考サイト:
* http://d.hatena.ne.jp/s-kita/20080710/1215696366
* http://www.gadgety.net/shin/tips/unix/ipc/semaphore.html
■ --
■ --
■ --
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
void *shmat(int shmid, void *shmaddr, int shmflg);
int shmdt(void *shmaddr);
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
shmget() は共有メモリ作成
shmat() は共有メモリに読み書き許可を与える(アタッチする)
参考サイト:
*http://www.gadgety.net/shin/tips/unix/ipc/shared.html
手順:
●共有メモリを準備プロセス(アクセスもする)
shmget(): 共有メモリ作成
shmat() : 読み書き許可をアッタチ
読み書きを行い
shmdt() : 共有メモリを分離する
shmctl(): 共有メモリを破棄
●共有メモリにアクセスするプロセス
必要であれば ftok() : キーを生成 (fork()を使用して,子プロセスはいらない)
shmget() : 生成したキーから共有メモリのidを取得
shmat() : 読み書き許可をアタッチ
shmdt() : 共有メモリを分離
終わり
■ セマフォいろいろ
- key_t ftok(const char *pathname, int proj_id)
プロセス間通信のとき,たとえば共有メモリを使用するときとか,セマフォを使用するとき,IDを使用してアクセスするが,共通するリソースを使用したいときはプロセス(複数)みんな同じIDを使用しないとアクセスできない.この関数の引数はプロセス間の一つのプロトコルみたいなもので,みんな前もって同じpathnameとproj_idを使用してキーを生成すると決めれば,同じキーを使用することができ,共有リソースにアクセスすることができる.
参考サイト:
* http://d.hatena.ne.jp/s-kita/20080710/1215696366
* http://www.gadgety.net/shin/tips/unix/ipc/semaphore.html
■ --
■ --
■ --
Subscribe to:
Posts (Atom)