投稿キャンペーン

Blogが移転いたしました!!!

随分長い間 オフラインで過ごしてきました・・・

そんな間に いろんな作品を作っていて・・・

失敗もあったり、成功もあったりと 色々ありました・・

このBlogを書いていたのは高校から大学2,3年の間の物で

今では、大学4年で 本物の研究という物をやっていたりもします。

そして、ここのBlogで開発してきた知識や経験、自信や野心を使って

今度、ベンチャー起業を、立ててみようかな? と思いまして・・・w

というのも、大学4年、大したこともせずにここまでやってきたのですが
ここに来て、不況と来まして、就職難になってしまいまして・・・
えぇ、大学4年後期に入っても、僕チンを就職させてくれる会社は現れていません。
ここは一つ、技術力を持って、ベンチャーを立ち上げて、若手のエンジニアとして再就職(転職)という形でスタートを切ろうかと思いますw

そんな感じで、新たな一歩を踏み出そうとしています。
この一歩が小さいもんだとしても、人生にとっては大きい一歩のように思えます。

という事で、今後、起業を目指す「ArtifactNoise」内で工業系のネタを書いていこうと思いますので

今後ともども どうぞよろしくお願いします・・・・。

【サイト】→ トップページ
【Blog】→ 新・【Noise】研究日誌 
■  [PR]

# by Noise_Blog | 2009-10-08 23:05 | 【電子情報】

組み込みプログラミングを極めたいw


もっとマイコンに優しい記述をしたいねw

かといって、アセンブラのような互換性の無い記述言語は嫌い。

C言語は、低レベルでの互換性があるとしても、高レベルの互換性は怪しいのが現実・・・

fgets と fwrite のような関係かなw
高校時代C言語習ったとき、この二つがどうして同時に存在しているのかわからなかったよ・・・
紐解けば、fgetsの中でfwriteが動いているようなものなんだよね・・・

そう考えると、低レベルを固めることこそが、C言語では重要な項目ではないだろうかと僕は思っているw


え~と・・・・ ここの観覧者の少ないBlogに、ありがたくも親切な助言やコメントをしてくださった方々がいてくれて、僕は大変嬉しいですw
ありがとうございます! 感謝感激です!

ちょっと、前々回と前回はあまりのも抽象的で どういうところで苦戦していたのかがわからないと思いますので、僕が解決したソースをお見せしますw


#define MAX_LENGTH 25

void strcut(char *out,char *in,char key)
{
char strtmp[MAX_LENGTH];
char *tmp = strtmp;

strcpy(tmp,in);
while( *tmp != '\0' && *tmp != key)
{
*out++ = *tmp++;
}
*out++ = '\0';

while( *tmp != '\0' && *tmp == key)
*tmp++;
strcpy(in,tmp);
}

void strmix(char *out,char *in,char key)
{
while(*out != '\0')
{
*out++;
}
while(*in != '\0')
{
*out++ = *in++;
}
*out++ = key;
*out++ = '\0';
}


動作の説明をすると、 strcut は、文字列から、キーとなる文字を識別してそこを区切りにカットするというものです。
実は、全く同じ?機能が strtok という標準関数の中にあったんですね~
ちょっと、ショックでしたねw まぁアルゴリズムが少々異なる気がするからいいのですがw
僕の strcut は、キーとなる文字を境に、前半と後半に分けますので、

*strin = "123 456 789";
strcut(stroutm,strin," "); //"123" "456 789"
strcut(stroutm2,strin," "); //"456" "789"
strcut(stroutm3,strin," "); //"789" ""

って感じで分割されていくから記述が楽???? ごめんエラーを気にすると一緒な匂いがするw

で、strmix は逆に、文字列の最後にキー文字となる空白を代入する関数ね。
コレによって、自作コマンドを解釈したり、自作コマンドを製作したりすることが出来るwww

まぁ、まだバグが可能性がある記述で、エラーについて何も書いていない罠・・・
strmixとか、25文字以上来たら怖~よw
こういうのは気が付いたときに変更すべきなんだろうね・・・



で、問題となっていたポインタなんですが・・・

char strtmp[MAX_LENGTH];
char *tmp = strtmp;

これ、一件無意味な宣言の用に見えるんですけどね・・・
はっきり言って無意味ですw あまり賢い記述とは思えないんですけどね・・・

まず、問題なのは 配列で宣言した変数をポインタで弄れない という点ですね
コレは良くわからない部分なんですが、コンパイラによって違うのかな・・・
意味は一緒なのはわかっていますよ?w
一応カーニハンとリッチーさんの本は愛読書ですからね・・・
ただ、コンパイルしたときにワーニングが出るのは、そのときは良いんですけど、今後巨大な設計の一部となると非常に怖いですねw

なので、配列で宣言した領域をポインタで取得すれば結局同じ意味だから、それ以降ポインタで操作できるではないか! という安直な考えですwww

本当は、mallocで領域を取得して操作すればいいんですけどね
低レベルなマイコンだとメモリーの管理が出来なかったり、付属のC言語の標準ライブラリーにmallocが無かったりしますのでね・・・
真の互換性を保った関数とはいえないのですよw
なので、あえてmallocを使わない方法で領域を確保した上でポインタで操作する手法を考えてみましたw


実際、この関数は R8C2A で動いていますwww
シリアルから送られてきたコマンドを解釈するのに非常に有効的ですwww
まぁ、strtokの方が使いやすいかもしれませんがね・・・


なんというか、僕はこういう低レベルな段階を組み合わせて高レベルな関数を作るのが好きみたいですw
atoi  とか自分で作れるし、改造して atohex を作ってみたりw
コレは、文字列を16進数に変換した関数ねw
まぁ、そんな感じで低レベルから関数を作るのが好きですねw C言語はwww


mallocとか、使い方がわかっても内部がわからないと怖くて使えないのが僕の悪いところですね・・・
C++になってさらにブラックボックス化が進んで非常に困ってます・・・
DLL何か怖くて手が出せない・・・orz

Linuxは面白いですねw PCIのLANドライバーまでC言語で記述されてますからねw
ソレをアレコレすれば、SHとかOS入れなくても操作できるはずなんだよね・・・理論的にはw


もっと透明性を持たせて、尚且つ必要ないときは見なくて済むような感じにならないのかな~w
C言語だとヘッダー読めばプログラムわかるはずなんですけどねw ボーランドもヴィジュアルも、標準ヘッダー隠してるし・・・orz
GCCにはあるのかな・・・w
コンパイル自作とかやってみたいな~ 今後の夢だろうなw IF文で頭狂いそうw

ノイマンの頭が世界最初のコンピューターであるとは、面白いことを言ったなw

■  [PR]

# by Noise_Blog | 2008-10-12 23:27 | 【電子情報】

C言語は奥が深い・・・w

昨日から、ポインタのアドレス確保に困っていた
色々謎が多くて中々感覚的に理解が出来なかった

malloc使えばいいんだけどさ・・・ コイツが中で何をやっているのかもわからないし
コイツに頼ると感覚的なモノが失われそうだったからさ・・・

色々調べていたら、面白い方法を思いついたwww

char strtmp[MAX_LENGTH];
char *tmp = strtmp;

これなら、strtmpが確保した領域をtmpが使うことが出来ることになるwww
こういうテクはありなのか知らないけどさ・・・ まぁ25byteぐらい大目に見てくれればいいな~www

パソコンも、今じゃ1Gが当たり前のメモリー空間なのに、な~んでそう安々と空間を提供してくれないんだろうね・・・www
まぁ、そこが厳密だからこそ、C言語はメモリーが小さいマイコンにも移植が出来るんだろうと思うが、もう少し優しくてもいいじゃないwww

malloc 何者なんだろうね・・・
size_t って何でできているんだろう・・・

あぁ 少し読めてきたぞw
俺が書いたプログラムだと、実行時に常にstrtmpの空間が確保されていて、空っぽの状態で
この関数が呼び出されたときに初めて利用されるって意味かな?
それに大して、mallocは動的に確保できるから、必要なときだけ確保要求していらないときは開放指令をするって感じかな・・・
ん~ メモリー管理がしっかりしているパソコンは使えるかもしれないけど、並列駆動しているCPUとかってメモリー要求がぶつかったりするよな・・・w

マイコンの場合はROMよりRAM領域の方が少ないから、なるべくROM領域に配列を展開した方が利口かも知れない・・・
まぁ、実際マイコンがどのように配列を解釈しているかを知らないから断言できないけどw
もし、関数で呼び出された配列が、RAM領域で展開されたら、まぁRAMはすぐになくなってしまうかもね・・・w
ROMで配列を確保できるなら、なるべく配列利用して、アレならグローバル配列を宣言して共通空間でアレコレした方がマイコンには優しいかもwww

C言語楽しいけど、パソコンC言語は苦手だな~~www
やっぱ、メモリ空間とかハードウェアを直に触れる感覚がいいよなwww


追記
結局、配列もRAM上に展開されるような気がしてきた・・・w
ん~ どうなんだろう ここはMallocを素直に使った方がいいのかな・・・
組み込みC言語はこういうところで頭を抱えるんだよ・・・www
こういうときは、標準化コーディングの本を読んでみようw
■  [PR]

# by Noise_Blog | 2008-09-28 21:00 | 【バイナリー情報】

久しぶりにC言語に触ってみるw

くそ! ポインターの構文がうまく使いこなせない罠www

ようやく、ハードの設計が終わって、コレからソフトの開発が始まるのだが
とりあえず、アルゴリズムを固めるためにパソコンのC言語で開発をしてますw
環境は、ボーランドC++コンパイラ CUIで開発中。



fgets(Com,50,fp);
printf("%s\n",Com);

strcpy(F,Com);
printf("%s\n",F);

このプログラムでさ
最初の printf("%s\n",Com); をコメントアウトしたらうまく実行されない罠。
なんだろうな~・・・ ポインターのアドレスの問題くさいけど、何がどう変わるのかわからない罠w



それと
FILE *fp;
char *Com;

char *Com;
FILE *fp;
が、違うプログラムになるって今知ったw
いや、ただ宣言をどっちを先に書くかという問題なだけだと思ったんだけどね
多分、コンパイラーの最適化の問題じゃないかな・・・

C言語は上から下にコンパイル進めるから
上に書いた方が優先的にポインターのアドレスを取得できるんじゃないかな
だから、最初にfpを取得するのと、最初にComを取得するとじゃ、少し意味合いが変わるかも

特に、Comがデカイ領域のアドレスを使う場合、fpを後で取得すると
Comのアドレスが増え、fpの領域に進入してしまうのではないか・・・・
と推測してみる。

事実、Comに代入する文字範囲を増やすとバグが出て、その状態でfp宣言を上方に持っていくとバグが解消される。


ポインターのアドレスを気軽に監視できたらいいな~w
いや、まぁ、GUIの開発環境使えばいいのだが・・・
CUIマニアにとっては、ソース汚しながらの監視になるか・・・
CUIデバックソフトとか、いつか手を出してみようw


----追記----------------------------------------------------

やっぱり アドレスの問題だった見たい

とりあえず、応急処置的な手法が
FILE *fp;
char *Com;

FILE *fp;
char Com[50];
って感じで配列に直して、領域を確保するって方法。

あと、mallocとかfreeなどのメモリー操作関数を使ってアレコレするって言うのが定番なんだけどね・・・・w

マイコンのC言語に、mallocとかあるにはあるけど、ソレがどの位有効で、どんな動作をするのが予想が付かない罠w
なので、やっぱりマイコンでは配列で厳格に指定してあげるのがいいのかもしれない。
宣言後、配列をポインターで操作してあげればいいか・・・・

実際は、マイコン上のあるアドレス空間を占領して、その空間内でアレコレするって感じかな・・・

ん~ マイコンって難しいな~ メモリーが有限だからなwww 箱庭に家具を引っ越す感覚だなw コンパクトに収めようwww
■  [PR]

# by Noise_Blog | 2008-09-27 11:15 | 【バイナリー情報】

素人がLVDSを使ってみる。

うはっは~www

やったぜ~!www
ようやく、近代科学に追いついたぜwww

密かにDigikeyで注文したLVDSトランシーバーを早速実装して 簡単なUART通信をしてみたw





ココまでに、数多くのシリアル通信を扱ってきた・・・
PS/2から始まり、RS232、SPI・・・
他にも PCIなどでパラレルもやってきて
ようやく、近代的な通信形態 LVDSに追いついたwww
いや~ 長かったwww

本当は、LANケーブルでSPI通信をしよう! と思って色々やっていたんだが
やっぱり、1m当たりから動作がおかしくなった。
コレは差動何とかを知らない時に作っていたものだからねw ピン配置も滅茶苦茶で、電気的な特性を無視した回路だったよwww
で、色々バッファICかましたり、プルアップしてみたり色々試したけど、さすがに限界が見えてきてねw
原点に戻って、トラ技とか読んでたら、「LANケーブルは差動信号で通信しているからツイストケーブルなんだよね」 と気が付いてさ どうせならLVDSを使ってみようじゃないか!
と思って、LVDSの開発が始まったのよwww

まぁ、Digikeyで検索して、届いてから半田するだけの開発日記だがwww

Digikeyで検索して思ったのが
トランシーバー って トランス と レシーバー の合成単語なんだなw
トランスが出力で レシーバーが入力
いや、言われてみればわかるんだが、いざトランシーバーを検索して送受信セットのICを見て、受信のみのICとか欲しいな~ と思ったときは困ったねwww
あぁ 必要なのはレシーバーかwww ってねw

LVDSの動作内容を理解するのに良いサイトがあったw

http://www.nsm.co.jp/products/bunya/interface/interface644.html

ココのサイト、他にも色んなシリアル通信について解説されてるし、ICの型番まで教えてくれる素晴らしいサイトw
しかも、日本語データーシートのみを集めた開発者寄りのサイトだよw
しっかし、コレを見るまで LVDSが350mVの信号で動いているなんて知らなかったw
いや~ 今までのシリアルって 5Vか 15Vのように電圧を上げて差を大きくしないとノイズが乗るといわれてきたから、なんだかびっくりだよ・・・・
確かに、差動にするとノイズが消えるって感覚はオーディオの感覚ではあったが、まさかコレほどまでとは思ってもいなかった・・・
350mVなんていったら 流れていないようなモンだよな・・・ すげ~技術

LVDSでもっとも問題(壁)になりやすいのが 回路設計での制約。
もともと、LVDSの構造から二本の線がセット(ツイスト)された状態で引っ張らないと高速伝送が出来ないと言われている。
一本の線が長いと、その分遅れが出て二つのタイミングが滅茶苦茶になるからねw

しかし、ソレは高速通信での話し。
100MHz以上はアナログだと思え って高校時代噂になったけど、確かにLVDSはアナログの感性で作られた気がする。 デジタル野郎は思いつかないよ この手法は・・・w

で、この回路設計の壁で、二つの線を同じ長さにしないといけない制約や、配線を45度以下で引っ張ると言う制約も、アマチュア電子工作家にとっては難易度が高すぎるw
特に、未だにユニバーサル基板Love! と言っている俺みたいな人には到底手が出せない領域だと思っていたが・・・・

どうやら 手が出せるみたいwww



モザイクがかかったような写真は携帯が悪い!w いや、見れにくくてすみません・・・
LANコネクタの変換基盤は サンハヤトのCK-18、差動信号を繋げる線は、ジョンフロンのラッピングテープを斜めに直線で引いただけw

もともと、サンハヤトの変換基盤は何を考えてなのか、全く差動のことを意識していない配線なのよ・・・
なぜ、偶数ピンは太く直線的で、奇数ピンは細く長いんだ・・・orz

まぁ、そんな配線でも うまく行ってしまうのがLVDSかもしれませんね・・・orz

今回 使用した部品

・スレーブ側CPU   R8C2A
・マスター側CPU   パソコン(USB-シリアル)
・LVDSトランシーバー DS90LV019
・1.27=>2.54変換基盤
・LAN変換コネクタ  サンハヤトCK-18
・LANケーブル    CAT5E 1mくらい?
・UART 38400bps

今回使った DS90LV019 というICは、
・送信イネーブル
・送信データ入力
・受信データ出力
・受信イネーブル
の4本制御なんだよねw
このイネーブル端子は素晴らしいものでねw これからの開発を楽しみにしてくれwww

DS90LV019 は全部で14PinのICなんだけど、家にあった変換基盤が28Pin用で、写真では二枚くっつけて乗せているけど、本当は半分の大きさですw
コレがなんと! Digikey価格で 一個315円!wwww
安すぎだろ! とか言って16個も買わないようにwww

まさか、ユニバーサル基板で適当に半田してうまく行くとは夢にも思っていなかったw
コレで失敗したら、プリント基板作って実験しないとな~ と思っていたが・・・ いやはやw

念のため、似たような技術で RS422 のトランシーバーも買っていたのよw
コイツも差動信号なんだけど、RS232の次という事で 信号ラインの電圧は5V
まぁ、このRS422が出来たからこそ、それから技術が発展して350mVで送受信できるようになったんだろうねw
RS422は10MHzが精々だけど、LVDSは100MHz以上の高速長距離伝送が可能だからねw

まぁ、多分この回路じゃ高速は望めない・・・
でも、マイコンの世界では シリアル通信で十分じゃないwww
こんな素晴らしいLVDS技術があるんだから、今じゃZigbeeとかブルートゥースとか
こういうマイコン向け無線技術って用は距離を稼ぐためにあるはずなのに、LVDSでは100Mでも通信が出来てしまうw
さらに、CANやLINは確か普通のシリアル信号だから、コレをさらにLVDSで通信すればもっと伸びるんじゃないかね・・・

まぁ 素人でもLVDSが扱える って言うことは大発見だなw
ユニバーサルで適当に線を延ばしてつなげれば、LANケーブルで基板を切り離せるwww
コレに例えばCCDカメラとか繋げて10M先の映像をパソコンに伝送するとかありだよな・・・
USBじゃ距離に限界あるし、自作すれば回線独占できそう出し、面白そうwww

後日、暇なときに回路図を公開する予定ですwww
まぁ、いつ暇になるのやら・・・
このネタは、次回冬コミの新刊にメインで乗せようと思ってますw
コミケで、同人冊子+同人基板 のセットで販売しようかな~とwww
毎回、コミケで違う付録基盤が付いてくるとか、全部買うと一つのナニが出来るとかwww

まぁ、こんな感じで 沸々と活動中ですwww
皆さんも、LVDSを試してみてはwww
■  [PR]

# by Noise_Blog | 2008-08-18 23:06 | 【電子情報】

インタフェース9月号付録ネタ(2)

付録基板の CPU発熱 についての考察!

な~んとなく気になったので 色々実験してみたw

実験1. 
 ・雑誌通り全部載せ状態。
 ・電源電圧 3.3V
 ・パワートランス付き
<結果>
 ・電源投下後、数秒で熱く感じるくらい発熱。
 ・サイレントCで、dir のコマンドを送ると気持ち少し熱く感じる・・・

実験2.
 ・付録に電源のみ半田付け
 ・パワートランス無し
 ・電源電圧3.3V
<結果>
 ・実験1と特に変化無し。
 ・パワートランスの影響ではないようだ・・・
 ・電源電流は、実験1共に0.19A

実験3.
 ・実験1の状態を使う
 ・電源電圧 2.7V
<結果>
 ・熱くなるタイミングが少し伸びた気がする。
 ・実験1よりも温度は低い気がする。
 ・一応、2.5Vでも動作できるみたいだが、不安定で使えない。
 ・サーバーのように放置する際は、このぐらいの電圧がお勧めw

実験4.
 ・実験1の状態を使う
 ・電源電圧 2.7V
 ・リセット端子を短絡 (リセット状態)
<結果>
 ・熱くならない罠!www
 ・長時間放置しても問題ない見たい・・・


全体の考察。

実験4で、リセット状態だと熱くならないということがわかったということは、
どうやら、CPU内部が騒がしく稼動状態だと熱が出るのだということだ・・・
今までの付録基板の経験で、回路ミスによる発熱や、電源の発振とかあったが
今回はどうやら チップの仕様 らしいw

まぁ、チップ内部の機能の多さを考えれば、熱くなる気がするw
今回の実験は、すべてサイレントCが起動するように、JP2はオープンされていますw
もしかしたら、サイレントCとか、TCP/IPの処理が熱を持っているのかもしれない・・・

実際、サイレントCとかGDBとか・・・
いらない機能が乗りすぎているのがいけないのかもしれないw
いや でも・・・ これイーサネットだろ・・・
有りがちな、Ping攻撃とかで熱暴走したりしないかなw
熱でブレイクダウンしたり 面白そうだなw
----------------------------------------------------------------------------

思ったんだが、いざ、MCF52233の内部レジスタにアクセスする際は、
来月号まで待たなければならないのかな・・・
QSPIとか、AD、DA気になるんですけどw
今回の雑誌は、サイレントC上でのプログラムしかないから、内部レジスタにアクセスしていないんじゃないかと思い始めた・・・
アクセスしようにも、書き込みが出来ないからな~・・・
多分、次号にGDBでelfファイルを書き込んで実行できるんじゃないかね・・・

サイレントCは 好きになれないよ・・・
ベーシック世代じゃなかったし、シャープのポケコンでC言語やったけどアレよりもソースが綺麗じゃないw
しかも、どのソースもガチで作らないと実行できない奴ばっかりで、ソースを読み解くので夏休み終わってしまいそうw
多分、サイレントCは移植タイプのコンパイラーだから、制御プログラムは過去の遺産を流用できるんだろうね・・・

EzPort解析しようにも、高性能なQSPIを使いたかったんだが、レジスタにどうアクセスするのかわからなかった罠w
手元にあるSPI機器はどれも8ビットタイプだからな~・・・
あ~ FPGAで無理やり32ビットSPIコアを自作するのもありか・・・w


密かに実験中・・・w
そのうち、解析しているときの写真アップしますw
まぁ、まだ夏休みは遠いみたいだ・・・
今月は31日まで有るのか・・・ orz www
さて 明日もテストだ~www
■  [PR]

# by Noise_Blog | 2008-07-29 00:51

Blog通信簿

流れに乗って やってみた・・・



うわ! すご! 歳まで当たってるwww
しっかし、偏った成績だな~・・・

技術系Blogの癖に、主張と影響度が少ないってどんだけだよ・・・orz

さて 明日、明後日で期末試験は終わりだwww
さ~て 夏休みは クールファイアで 遊びまくるぞ~w
■  [PR]

# by Noise_Blog | 2008-07-28 01:30 | 【電波情報】

インタフェース9月号付録ネタ(1)

え~ 早速 トランス付きLANコネクタを購入して、半田して
わくわくしながら 電源ON!!!
ん? と思ったら、そうか 電源用のLEDなかったんだな・・・
なので、早速 LANを刺してみた。LEDの点灯を確認!w

環境は
 WAN - ルータ - HUB - PC
の HUB に接続してみたw

で、一応 HTTPも接続できたし、TeraTermでSilentC なんていう謎めいたプログラムも確認できたのだが・・・
ん~ まぁ なんというか 198.162.1.XXX ならば、どのPCからもアクセスできるんじゃないかねw
雑誌の記事だと、198.162.1.2 にPCを設定しているけど、アクセスするのは192.168.1.10だから、そこへアクセスできるプライベートIPが振り割れていればいいんじゃないかねw

まぁ うん とりあえず MACアドレスまで書き込めたのだが・・・
いくつか 不気味な点が見えてきた・・・

★一つは、SilentC でリカバリーするためのコマンド

util::recover
 Not Comand!

で、うまく実行されない罠。
何でだろう・・・ やっちゃった系か?

★あと、もうひとつ。
何故か、実行中 チップが熱くなっていく罠・・・
現在、3.3VのACアダプタないため、

秋月のACアダプタ5V - 3端子レギュレータ(TA48033S) - 付録基板

って構図なんだけどさ・・・
基板に電源入れて数十秒でチップがほのかに暖かくなる・・・
コレは仕様なのかな・・・ それとも何か回路的なミス?

一応、基板に刺した状態で、電源電圧を測ると 確かに 3.3Vなのよ
ってことは、電源電圧による熱ではないんだよね
あと、LANケーブルを刺していない状態だと、チップの熱は控え気味だが、やっぱり熱く感じる。
LAN繋げていると、時間が立つにつれて熱くなって、レギュレータも熱くなる罠。
電流が問題かな~・・・ でも 雑誌には最低0.4A だし
このレギュレータ 確か1Aまで流せるよな・・・ ん~~~

安物の安定化電源を使っても、電流値は0.19Aだな~
それでも熱くなる・・・ LAN刺しても電流は変わらない・・・
レギュレータまで熱くなるのが不気味だよな~
発振しているとか?ん~ オシロで電源見ても変化ないな~・・・

みんな、熱くなっていないのかな・・・
俺だけかな・・・
とりあえず、もう一枚かってみるかw 丁度買うつもりだったしwww

P.S.

適当電子工作研究所のhamayan さんのBlogだと、やっぱり熱くなっているみたい。
僕の感じ方としては、夕方の熱されたコンクリート並みの熱さを感じたw
LANの速度に寄るのかな・・・ あ~パワートランスが熱の原因?
すると、設計に問題がある可能性ががががが・・・w
現在 多くのファンが SI-60002を使って居るから 昨日買ったPin違いのトランスも使ってみよう。
あ~ 外部トランスを使って熱を調べてみるって言うのもありかw

不思議なのが、回路図に 3.3V と 3V の二つの記述が混在している所なんだよね
もしかしたら、3Vで動かしたほうが熱くならないとか そういうオチ?
よぉ~し 明日実験してみようw 
データーシートでは、2.6V~3.6Vの幅で動作するみたいだから、3.0Vとかお手ごろな値だよな~・・・・w
■  [PR]

# by Noise_Blog | 2008-07-27 23:48 | 【電子情報】

インターフェース9月号基板をハック予定w


この頃 SPI通信にはまりましてwww

R8Cは素晴らしい! マスターにもスレーブにもなれる天使と悪魔のチップだwww

って! またテスト期間じゃないか!wwww

え~ 期末試験中に発売された インターフェース9月号
チップは フィリップス社の MCF52233 

本を買って まず読んだんですけど・・・

小さく、面白い記事を見つけましたw
それは、二枚の基板を重ねて チップをリカバリーするという物・・・
よく読むと、どうやらこのチップを SPIフラッシュメモリーとしてプログラムを書き込まれるらしいのよ・・・

で、データーシート調べたりしたら、本当にSPIっぽい奴で書き込めるらしいのよw
コマンドまで公開されてるし コレは面白そうだwww
EzPort って項目 21番だったかなw

しっかし、このCOLDFIREv2 って凄いチップだな
小さいくせに 滅茶苦茶高性能じゃないかwww
H8なんか比べ物にならないほど、色んな機能が凝縮されてるw
ついでに DigiKeyでは 1600円ぐらいのチップらしい・・・
高いな~ 高いけど、買えるっていうことはいいことだなw
チップ周辺回路も、かなり簡単だし マイコン級の回路構成だなw
自作基板でも十分いけそうだな~ と考え始めて
このEzPort はなんとしてでも解析しなければwww

ん~ 英語読むの苦手だが 苦手苦手って言って置きながら、こういう時だけ英語が読めるw
なにやら、フラッシュメモリの最初の番地にPPで書き込めるようだが・・・
コレはHEXファイルをそのままぶち込めってことかな~
※ モトローラフォーマットだから .sかw
※ もしかしたら、コードを読んでアドレス順々で書き込むかもしれないな

1. WREN Write Enable
2. WRCR   Write Config Register
3. (RDSR) Read Status Register
4. SE Sector Erase
5. PP Page Program   4~255byte

6. RDSR Read Status Register
7. RESET Reset Chip

(5番で、コンパイルしたHexファイルを送り込む?)
(書き込み用データを解析して、指定されたアドレスに書き込むとか難しいやりかたかな・・・)

こんな感じで、うまく行くのかわからないけど 予想してみるw
5番のPP どうも見えてこない・・・
HEXファイルをそのまま255Byteで分割して送れば良いのかね・・・
HEXファイルの最初の255Byte送って PPを付けて また255Byte かな
それとも、間にRDSRを入れて 書き込めたかステータスを読むべきか・・・
付録基板のSilentCのソースが公開されなければ、リカバリー中の信号状態を吸い出すかw
基本はSPIだから その変のSPIポートから吸い出すか、この基板3枚で解析するとかwww

ん~ 何か罠がありそうだ まだ全部データーシート読んでないんだよねw
しかし、コレは面白いチップだな・・・ 悔しいが さすが天下のフィリップス社だw
アーキテクチャマニアが好きそうな構造をしている・・・ そそる一品だな~w

まぁ、まずは LANコネクタを探さなければならないのだが・・・
今日 鈴商に売っていた HFJ11-2450 ってトランス付き10Bese を100円で買ったのだが・・・
案の定、ピン配置が違った罠。 明日部品が見付からなかったら、こいつをケーブルでつなげるかw

さ~て 今年の夏休みも 熱くなりそうだwww

P.S.
俺の基板も、LED1 が付いていない罠www
あ~ 自動実装の時、設定データにLED1の項目が書き込まれてなかったのかな・・
っていうか、実装後 確認しろよwww このLED1は電源だろ・・・
電源入れれば気が付くと思うのだが・・・w 電源入れなかったなw
こういうトラブルもあるということだな うん。覚えておこうw


P.S. 次の日
思ったのが、このリカバリー機能ってさ
もしかして、同じMCF52233チップなら、自作基板にもリカバリーできちゃうんじゃない?(核爆w)
別に、セキュリティーコードも無いし、この基板一枚でSilentCが量産出来てしまう罠w
ん~ 恐ろしいな~ EzPortは・・・ 簡単すぎて悪用しやすい・・・
第3章に、BDM経由でリカバリーするためのモトローラSファイルをHPにアップしますって書いてあるのに、アップされてない罠。
コレが有れば、EZPortの解析に大いに貢献するのだが・・・w
でも、やっぱり普通に書き込めばうまく行くような気もしてきた・・・
MC68000を知らない世代だからな~ 中々癖がわからないw
Z80なら、ポケコンで弄ったんだけどな~・・・w
■  [PR]

# by Noise_Blog | 2008-07-27 02:06 | 【電子情報】

久しぶりの投稿! 二ヶ月ぶり~www


あぅ~ 時間が過ぎるのはあっという間で・・・

気が付けば 2ヶ月Blogに書く内容が無かった罠www

いや~ まぁ~ 作っていたには作っていたんですけどねw
完成したら またBlogで発表しますw

で、今コレを作ってます。





え~ 2ヶ月たっても 作りたいものが変わらなかった罠www

前回、PCIをCPLDで制御してたんですけどね
CPLDじゃ コンフィグレーションレジスタを読むのが精一杯でね
本来やりたかった、PCIデバイスの制御が出来なかったのよw

それだから、今回は PCI to SPI という物を作ろうと思いましてねw
PCIを制御するのは、DWMの付録、スパルタン3E250 FPGAですねw 

まぁ、うん PCIって低速でも通信できる規格なのでね
処理が遅いマイコンでも制御が出来るように、信号線を減らそうという考えかた
それに、SPIってマスタ側のクロックに同期するから、早いマイコンにも対応できる優れものw

しっかし、昔の半田職人には勝てないね~w
ラッピング配線が綺麗にいかなかった・・・ ど~やったらあんな綺麗に配線できるんだよ
まぁ、コレはコレで成果が大きいんだけどね
Pinがはっきり見えるから、テスターで調べるのが楽w

で、早速 VHDLのプログラムを始めたんだが・・・
いや~VHDLのプログラムって特殊だねw
去年か一昨年かな 夏休みにVHDLの強化月間を自分でやってさ
ある程度実に付いたんだが・・・ いくつか間違えてしまった

なぜ 【elsif】 なんだよな~
最初気が付かづに、【else if】 っ分けて書いてたらエラー出るは出るはw
しかも、気が付くのに時間がかかるミスだったし・・・

で、コレが机の開発環境




左から
 1.FPGAに書き込むための MITOUJTAGケーブル
 2.PCI to SPI 基板(自作)
 3.R8Cマイコンボード(自作)
 4.R8Cにプログラムを書き込むための シリアル-USB変換基盤(秋月)
 5.パソコンと通信するための シリアル-USB変換基盤(秋月)

すげ~環境w 一体いくつ、つなげれば良いんだよなw

こんな感じで 細々と再開しますw
目指せ マイコンサーバーwww
Pingだけでも送信できるモノを作りたいな~
■  [PR]

# by Noise_Blog | 2008-06-24 20:42 | 【電子情報】

< 前のページ  次のページ >