Tuesday, March 31, 2009

Rawmode Serial port programming

#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <ctype.h>
#define QUIT_CHAR 0x04 // Ctrl+D --> quit

struct termios CookedTermIos; // for cooked mode
struct termios RawTermIos; // for raw mode

int main(void)
{
char c;
// save present terminal setting
tcgetattr(STDIN_FILENO, &CookedTermIos);

// Create raw mode terminal setting
RawTermIos = CookedTermIos;
cfmakeraw(&RawTermIos);

// Set
tcsetattr(STDIN_FILENO, 0, &RawTermIos);

while((c = getchar()) != QUIT_CHAR )
{
if(isprint(c)){
printf("you push key: ");
putchar(c);
putchar('\n');
}else{
printf("control key <%02X> \n" , c);
if(c == '\n') fputs("\r\n", stdout);
}
}

tcsetattr(STDIN_FILENO, 0, &CookedTermIos);
putchar('\n');

return 0;
}

Monday, March 30, 2009

集積回路

PIN数は14ピンで片側に7ピンずつ並んでいます。このような形状のICをDIP(Dual In Line Package)と呼びます。(DILと言うこともあるみたいです)
これに対してピンが一列のみのものをSIP(Single In Line Package)と呼びます。

http://webos-goodies.jp/archives/51006356.html

Friday, March 27, 2009

Linux Serial port programming


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>

#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS0"
#define _POXSIX_SOURCE 1
#define FALSE 0
#define TRUE 1

volatile int STOP=FALSE;

int main()
{
int fd, c, res;
struct termios oldtio, newtio;
char buf[255];

//fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NDELAY);
//fd = open(MODEMDEVICE, O_RDWR | O_NDELAY);
fd = open(MODEMDEVICE, O_RDWR );
if(fd < 0){
perror("Cannot open device");
exit(-1);
}

tcgetattr(fd, &oldtio);

bzero(&newtio, sizeof(newtio));

newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;

newtio.c_lflag = 0;

newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 5;

tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);

while(STOP == FALSE){
res = read(fd, buf, 255);
buf[res] = '\0';
printf("%s -> %d\n", buf, res);
if(buf[0] == 'z') STOP=TRUE;
}
tcsetattr(fd, TCSANOW, &oldtio);

return 0;
}

assertの利用

assertの利用について:エラーチェック

Thursday, March 26, 2009

とりあえずメモ

Armadillo300にてCFにdebianをインストールし、エラーもなく起動することがで
きましたが、VGAからログインする事ができずに困っています。

【症状】
・CFのdebian起動でVGAからログインプロンプトが出ない
 起動メッセージは出力されているがログインプロンプトは出力されない
 シリアル接続の方では接続可能。

設定状況は
hermitでは
hermit> setenv noinitrd root=/dev/hda2 console=tty1
video=ns9750fb:CRT-VGA,16bpp,enable

 にてテキスト通りtty1に設定済み、VGAもenable状態です。

よくわかっていないのでシリアル接続のコンソールが ttyAM0の様でしたので
hermitでttyAM1を試してみたのですがNGでした。。。

どなたかアドバイス頂ければ幸いです
よろしくお願いします

=================
--と申します。

/etc/inittabをviで編集

1:2345:respawn:/sbin/getty 38400 tty1 ←この行のコメントをはずす
これでいけると思います。

================
1: console=tty
2: video=ns9750fb:enable,CRT-SVGA

Thursday, March 19, 2009

W=ZERO3 FONERA DD-WRT

W-Zero3を使って,FONの無線LAN(DD-WRT化済み)のアクセスポイントに接続してインターネットに入ろうとしてときに,つながってはいるんですが,IEやOperaから観覧できない.しかし,vxUtilでPingやtraceでやったら普通に行けた.理由はよくわからん.なんで?

予想ではFONの方で無線規格802.11gを使っているからか?調べたら dd-wrtの設定WebのWireless> Wireless Network ModeがMixedになっていた.選択肢の中に
  • Disable
  • Mixed
  • B-Only
  • G-Only
  • BG-Mixed
があるが,Mixed と BG-Mixedは何が違うの???意味わからん!
ま,感で“BG-Mixed”に直したらW-Zero3のIEとかOperaからウェブページを観覧できるようになったlololololやっぱり意味わからん

Wednesday, March 18, 2009

Tuesday, March 17, 2009

Fonera で compile own program

Foneraで自作のプログラムを動かしたい.クロス開発環境の構築を考えている.とても参考になっているのはこのサイトです.Armadilloの開発と同じようなやり方ですね~.でもやっぱりわからないことがたくさん残っています.DD-WRTをクロスコンパイルしようとして,検索したらDD-WRT Communityでは"toolchains"をダウンロードするやり方があったが,今ダウンロードできない(このページ).Open-WrtとDD-Wrtと互換性がありそうなのでsdkt4aさんのサイトのやり方で試しているところ.コンパイル時間がめちゃめちゃかかります.

root@DD-WRT:~# wget http://www.***.**/***/test.o
Connecting to www.***.** (*.*.*.*:80)
test.o 100% |*******************************| 5665 --:--:-- ETA
root@DD-WRT:~# ls
test.o
root@DD-WRT:~# chmod 755 test.o
root@DD-WRT:~# ./test.o
hello world!!


話は変わりますが,検索途中でなんかDD-WRTはあまりよくないという意見をいっている人もいるみたいです.よんでみたらなるほど,こんなことがあるか~と思いました.
DD-WRT sucks. Why? See http://www.bitsum.com/about-ddwrt.htm


自分も純粋なopen sourceの方が好きで,使う抵抗もないし,Communityにrecontributeするときも楽しい,だがなんか↑の話があるとちょっとDD-WRTを疑ってしまいます.

Thursday, March 12, 2009

Fonera DD-WRT化メモ

■ Fonera DD-WRT化メモ
まずSSHを有効にする方法はめんどくさい.だけどシリアルで書き換える方法もめんどくさい.シリアルケーブルがないし!
だけどArduinoが横においてあった^^.これはラッキー.そしてやっぱり,先行者がいました.
というわけでArduinoをシリアルインタフェースとして働いてもらい,DD-WRTをFONに流し込んだ.
手順はシリアルでアクセスできたら,次にこのサイトの手順で行う.

問題なのはシリアルのボートレートの設定RedBootとDD-WRTのシリアル設定は異なるためDD-WRTをきどうしたらシリアルコンソールが文字化けする.この辺,焦りました.

■ SSHでログインできるためにはこのサイトの説明でできる.Authorized KeysはPuttyで生成し,貼り付ける.Puttyの設定もセクションの認証ファイルも指定する必要がある.

■ DD-WRTのシリアル速度のデフォルトは「115200」とほとんどの先行者のサイトに書いてあった.しかし!実際はどうなるか?自分がインストールした時点は2009-03-12でDD-WRTのバージョンはv24-sp1でネットの情報からsttyコマンドを実行していみると(なぜかこのコマンドはFonera+とか新しいDD-WRTはBusyboxに入っていないという情報もたくさんネット上にあったが,自分がインストールしたDD-WRTはあった?なんで?)

■ DD-WRT化手順:(incomplete)
www.dd-wrt.com > Downloads > stable > dd-wrtv24-SP1 > Consummer > Fon > Fonera > fonera-firmware.bin & linux.bin をダウンロード.RedBootにアクセスして,linux.binをFonに流す.

-----------
■ 気になるトッピクス

Monday, March 09, 2009

Kimio Kosaka様のサイト

いつも楽しく拝見させていただいております.感謝感謝です.
Akibaduino
Arduino Diecimilaを使う

とりあえず買う...か?

■ Arduinoイーサネットアダプタ @ ストロベリ
(¥3480) ほしいなぁ~


これネットと接続できるが,それだけでなく,基盤の上にSDカードスロットも付いているのではないか!これはいろいろ使えそう...ってやっぱり先行者1がいました.やっぱりねlol案の定.先行者2

Arduino Diecimila x2 @ ストロベリ
(¥2835)

AVR ATEMEGA 評価ボード @ ストロベリ
(¥1980) 液晶については秋月の方が安い(バックライト付)

LCD @ 秋月 (¥700)

ATMEL AVR ISP @ 秋月
(¥4000) 今は自作するべきでない

クリスタル発振子 @ 秋月
(¥500.1パック10個入り)

AVRマイコン @ 千石
(¥470 Atmel ATmega168-20PU )

AVRマイコン @ スイッチサイエンス
(¥500 Atmel ATmega328P) ATmega168の2倍の容量を持つ

■ 買いすぎか?lol また今月お金がない...