2013年9月27日金曜日

メールフォームを追加しました

やっとですが、メールフォームを追加しました。

質問等があれば、ご連絡を頂ければ直接回答できる場合もあるでしょうし、

記事として記載することもあるかもしれません。

最新といっても去年のエントリーですが、改行等がおかしくなっていたようで、放置してありましたが、一度全エントリーを見直して見やすい状態になっていることを確認しました。


また、時間を見つけては記事を書きたいと思います。


大学関係者やら、企業の方からのアクセスもあるようで、熱心に勉強されてるみたいです。

入り口の壁は高いかも知れませんが、やりがいのある仕事なのでがんばってください。

2012年11月24日土曜日

組み込みシステム OS無し 状態の保存(RAM)

一つ前の 記事と 密接に関係するので珍しく続けて2個の記事を書きます。

一つ前の記事{設定の保存(EEPROM)}の話は、まだ比較的分かりやすかったと思います。

今回の記事はウォッチドッグとも関係してきます。


何らかの理由で、システムの動作がおかしくなった場合にも、出来る限り処理を続行させる必要のある状況もあります。


  バグでソフトが止まったままになる事が最悪です。


言葉だけで書いても分かりにくいので、C言語のスケルトンを載せておきます。

 //----------------------------------------------------------------------------- void check_restore_ram() {
    if( check_ram_status()) { // 保存されているRAMの状態が正しいかチェック
     restore_ram();
    } else {
      clear_ram();
    }
 }
//-----------------------------------------------------------------------------

void save_ram() {
  copy_dram_sram();       // 通常のRAMからバックアップ用のRAMにコピー
  calc_set_check_val();   // バックアップメモリーの妥当性チェックデータを書き込み 
}
//----------------------------------------------------------------------------- void main() {
  check_restore_ram();
  loop(1) {
    func1();
    func2();
    func3();
    wdc_clear();
    save_ram();
   }
}
//-----------------------------------------------------------------------------

雰囲気を理解してもらうために出来る限りシンプルにしています。 

かなり省略している部分もありますが、自分で理解して、省略している部分を補えないと トラブルの元になりますので、頑張って理解して実装してください 

特にclear_ram()の部分とスタートアップルーチンあたりはバッティングします。

スタートアップルーチンの定数設定の部分は時間を浪費するので、大胆にカットして この部分で行うのがいいと思います。

システムのRAM容量しだいですが、複数世代のバックアップを世代管理して妥当性チェックで OKだったものをなんとか使うと言う場合もあるようです。

当然ですが、妥当性チェックのデータ自身もバックアップRAMにおく必要があります。 妥当性チェックの値はチェックサムないしは、CRCにて計算して複数持っておき、不一致が発生した場合は、迷わず初期化するしかないと思います。

電圧低下検地のデバイスからの割り込みが発生した場合、

CPUの動作は不定状態になると仮定する必要があるので、

積極的にリセットを繰り返して、瞬間停電にも備えたほうがいいかもしれません。

 割と大サービスで書いてはあるんですが、あまりに事細かに書きすぎても問題なので、これぐらいの 説明で理解できる方でないと厳しいです。


組み込みシステム OS無し 設定の保存(EEPROM)

前回の記事でウォッチドッグタイマーについて書きましたが 関連項目です

・設定をEEPROMに書き込む
・状態をバックアップされるRAMに書き込む

 とありましたが、

まずは違いについての解説です EEPROMには書き込み回数の上限があるので、
デバイスの劣化を考えると頻繁に 書き込みを行っていると、いつか書き込み不可能になります。 

身近なもので設定を保存しているのもとしては、スマートフォンとか、ルーターが挙げられます。 どちらも常時電源を入れたままで使われることが多いものです。

 1.ルーターの場合
  ・ファームウェアー
  ・設定
   等がEEPROMに書き込まれて保存されているために電源を入れなおした時に、
  同じ状態で  動作できるようになっています。

 2.スマートフォンの場合   もうすこし詳しく、書いてみます
  ・ブートローダー
  ・OS
  ・ディスク(フラッシュメモリー)上のOS、アプリケーション、データ

スマートフォンの場合はフラッシュメモリー上にファイルシステムを構築して、
その上に  主にUnix系のOSを走らせていることが多いです。

android も iPhone も どちらも そうですね。

フラッシュメモリーの耐久性もあがってきているのと、物理ブロックに書き込みエラーが発生するようになった時に代替ブロックを割り当てる論理ブロックを使うようになってきているので出来ることだと思います。

 一見すると、無制限に書き込みを行っているようですが、OSだとバージョンアップした時に書き込まれその後は、読み込みだけです。


ログファイルなども、何かのイベントが発生した結果だけなので、有限です。

製品のライフサイクルを考えて、上限の書き込み回数をしっかりと把握した状態でなら、フラッシュに 現在のシステムの状態を全て保存しておくことも可能です。

ただし、やはり性能が向上したといえども、フラッシュには書き込み回数に上限があります。  そこのところが RAMへのバックアップと違うと言う事を意識して置いてください。

データーシート等を見ていただければ、上限書き込み回数が書かれていますので、一度目を通してみてください。

2012年11月2日金曜日

ラベルを修正しました

更新をサボっていましたが、久々に更新しました。 ついでに、ラベルを修正しました。 半角のカンマと全角のカンマの入力ミスです。 ”,、”並べてあると分かるのですが、

関連項目の検索性をあげるために

細かくラベルを付けるようにしていたために起きました。 

関連する項目をなるべく同じラベルにしています

特に宣伝等はしていないのでこのサイトに来る方は検索で来ていると思うので、そうしています。 放置も多々あると思いますが、終了宣言が無い限りぽつぽつと更新されると思っていてください。

なるべく多くのラベルを付けるようにとしていたのですが、文字数に制限があるようなので、エラーが発生するため、将来的に英文字短縮形にしていく事になると思います。(2012/11/24update)

組み込みシステム OS無し ウォッチドッグタイマー

割り込み処理の話を思いつきで書いていたら行き詰ったままなので、いったん放置して 違うことについて書いてみます。


 組込みシステムでは ”フェールセーフ”になるようにシステムを設計します。

 また別途書くことがあるかもしれませんが、 
・データのバックアップ(主にRAM)
 ・設定のバックアップ(EEPROM)
 ・電圧監視によるリセット
 ・ウォッチドッグタイマーの利用

 それぞれが関係してくるので、

全部を一気にとは行きませんが今回はウォッチドッグタイマーに 関して書いてみます。

 ハード回路としての、ウォッチドッグタイマーもあれば、CPU内蔵のウォッチドッグタイマーも あります。

 処理を簡略化してC言語のソースで表すと

 void main() {
     while(1) {
       func1();
       func2();
       func3();
       clear_wdc(); // ウォッチドッグタイマーのクリア処理
     }
 }

 こんな感じです、どこかの処理に異常が起きた場合にシステムが完全に停止してしまわないように するために、使用されます。

 割り込みの優先順位はかなり高く設定されます (システム全体の健全な動作に関わるため)

 その割り込み処理内で、何らかの処理を行いますが、システムをリセットしてしまうこともあります。

 ウォッチドッグの処理の割り込みの関数にジャンプしてきた場合は、何らかのトラブルが システムに起きていることになります。

 多くの場合は、設計不良、想定外の多重割り込み、場合に寄れば電気的なトラブルの可能性もわずかにありますが、システムごとに違います。

 いくつかの条件が整えば、WDT割り込みが発生したかどうかを確認できます 

・バックアップ可能なメモリーに発生した情報を格納、更新できること
・その情報に何らかの形で外部からアクセスできること
 例えば
  ・EEPROMに書き込んでおいてJTAG接続のICEで確認する
  ・1次電池、2次電池でバックアップされている、RAMに書き込んでおいて、
   サービスコンソールで  参照する
  ・あるいは、システムログとして保存しておいてメール、WIFIでの転送、
   SDカードへの書き込み等 方法としては幾つも考えられます


 関連する項目があるのでさらっとだけ説明して終わりにします。

2013/09/27 何故だか、改行などが変になっていたので修正しました。

2012年9月5日水曜日

組み込みシステム OS無しの開発 その3 割り込み2

ちょっと前回から、時間が経っていますが、

割り込み処理の内部では、割り込み処理でしか出来ない必要最低限の処理を行います。

メイン処理は通常ループしていますが、そこで割り込み処理の内部でセットされた変数を
参照して、 処理を行う事も多いです。

また、確実にタイミングを合わせる必要がある処理に関しては、割り込み処理で直接をします。


 ただし、組込みシステムでは幾つもの割り込みが同時に起きる事を想定しないといけません。

 複数の割り込みが同時に発生した場合の優先順位(ハード的にもついていますが)、割り込みの優先順位の設定が内部レジスタで行えるものもあります。


 タイマー割り込みはよく使う割り込みですが、特にタイマー割り込みの中であれこれと処理をする場合は、処理時間をよく検討して、他の割り込みを処理できない事態を避けないといけません


 ICE等で実行時間を計測して、
・平均的な処理時間と、
・最長の処理時間

を把握する事も大事です

想定外の割り込みオーバーを起こしてしまっている場合は、なかなか原因を特定することが難しいので、注意してください

1万回に1回とか、10万回に1回とかでも、やたらと処理時間がかかっている様だと、どこかに問題があります

2012年8月3日金曜日

組み込みシステム OS無しの開発 その2 割り込み1

組み込みシステムでは、割り込み処理の全てを自前でサポートする必要があります。


 割り込みには複数のレベルの割り込みがあります。

 また、それぞれ、割り込みを許可する許可しないという、

割り込みのマスクという事も出来ますが、
NMIという割り込みを止める事が出来ない最優先の割り込みもあります。


 割り込み処理の基本ということで、まずは単純な割り込みについての説明です

 1.外部より割り込み信号が発生
 2.CPUは該当する割り込みベクターへPC(プログラムカウンターを変更して処理を始める)
 3.アセンブラで記述してある割り込み処理の場合は各種レジスタを保存する
 4.必要な割り込みマスクを設定する
 5.最低限の必要な処理を行う
 6.レジスタの内容を割り込み前の状態に戻す
 7.必要なレジスタ関係のクリアを行い次の割り込みが正常に動作するように設定する
 8.割り込み処理から復帰する

 大まかには、このような流れになります。

 組み込み用のC言語で記述する場合には、レジスタの退避等の処理を自動で記述してくれるものもあります。

 この場合は一度アセンブラソースを確認して見てください、理解が深まると思います。

 また、割り込みが発生した時に割り込み処理ルーチンで全ての処理を実行することはお勧めできません。


 システムでは複数の割り込みを、受け付ける場合が多いので、
多重割り込みという状態が発生しますので、
 なるべく、短い処理を行って、フラグ的なものとして記憶しておいて、

メインの処理の中で処理を行うことが お勧めです。

 一つ前のエントリーで説明を行っていた valatile で指定してある変数を割り込み処理の中で読み書きすることになります。

2012年7月26日木曜日

組込みシステム C言語のキーワード volatile

組込みシステムの割り込みの話を書こうと、数日構想を練っていたんだけど、とりあえずは

大事なキーワード volatileについて書いて見ようと思います。






アセンブラソースを出力させてコンパイルして最適化をしてソースの違いを見てみてください

例)

static volatile int val1;
static int val2;

(ちょっと順番が記憶であいまいですがとりあえず書きます)



void func1(){
    val1++;

  if( 1 == val1) {
        val1++;
     }
}


void func2(){
   val2++;
   if(1 == val2) {
       val2++;
   }
}


この二つのコードは一見同じに見えますが、通常最適化された場合は演算結果をレジスタに残しておいてそのまま 条件判定を行いますが


volatile が付いている場合は、常に最新の内容を見に行くようなコードになっているはずです。


これは、組込みシステム以外ではあまり使われません。


同じ変数に一見同時にはアクセスすることは、あまり考えないかも知れませんが、組込み系では考えられることです。


割り込み処理で詳しくは書きますが、とりあえずこんなおまじないがあるということだけ、先に書いておきます。





2012年7月21日土曜日

組み込みシステム OS無しの開発 その1 void main()

組み込みシステムの場合、組み込みOSを使うケースがかなり多くなってきています。

それでも一部には OSを使わずに全てを、自前のプログラムで管理する開発もあります。


どういったものか理解してもらうために、まずは簡単な例を挙げてみます。


#include <stdio.h>


void main() {

 printf("hello world\n");

}


典型的な、Cの入門のソースです


Windowsのcmd.exe、Linux のターミナルから実行することが多いと思います。


printf は標準出力へ 出力するという命令です


そして、それはstdio.hで定義されている 標準ライブラリの中で実装されています。


OSを一切使わない開発の場合はこれすらも使えない事になります。


mem.h
math.h
strings.h

等も同様です、

ただし実際上は、各CPUメーカー等から組み込み用のライブラリが提供されているので
必要なものだけリンクするという形で使うことが出来ます

今ではあまりありませんが、ROMやRAMの制約でなるべく小さなサイズにしたい場合等はメーカーから提供されているライブラリを使わないという選択肢もありました。


コンパイル時にアセンブラソース出力付きでデバッグ情報付きでどのように処理されているか見ると組み込みシステムの理解に繋がります


是非一度お試しあれ


そしてICEでアセンブラレベルでステップ実行できるようでしたら、何をやっているかの理解がかなり進むと思います。


各種レジスタの設定、プログラムカウンタの設定、割り込みベクターの設定、スタックポインタの設定、割り込みマスクの設定、等システムの状態を設定した上で


最終的には アセンブラレベルで

goto _main

という形で処理が行われます

他にもいろいろあるのですが今回はこのあたりでおしまい。

2012年7月19日木曜日

組み込みシステム 機材のお話(放出予定)

組み込み開発で必要となる機材の調達方法ですが、

1.新品でメーカーから買う
2.レンタルで借りる(受注元が借りて支給というケースが多い)
3.レンタル会社の放出品を買う(販売ページがあることが多い)
4.オークションで入手する
5.電子系の部品会社から通信販売で買う
5.自作する


4.5.あたりでは秋月電子とか有名ですね

でここまでがメインの記事です




==========================================================================
==========================================================================
==========================================================================


これ以降は、ちと個人的な宣伝になります、時々UPDATEする形になると思います。
(保有している機材の放出予定)




準備が整い次第オークションに出す予定にはしていますが、予定は未定です


興味のある方は連絡を頂ければ、メールをさせて頂きます。



一応リンクを貼っておきます

==========================================================================


<ヤフーオークション風夢の出品>


==========================================================================


7/19 現在の予定

・AF9723 10baseIF 付き 1Gbit GANGユニット 2種類 4個
・KMC partner ET2 本体、電源、プローブ(新品)




==========================================================================
==========================================================================
==========================================================================

組み込みシステム で デバッグプリント

基本的には組み込みシステムでは デバッグプリントは使えないことが多いですが、

そのかわりの方法をいかにして実現するかというのも工夫だと思います。

以前に紹介したシリアルポートを利用する方法もありますがそれも出来ないと仮定します。


ICEを繋いだ状態で、動作していると仮定して、ソフトの完成度も上がってきていて、でも時々動作がおかしいような場合は困りますね。

もしも、OSを使っていなくて、メモリー(RAM)に空き容量を確保できるのなら、主要な変数(出来れば構造体にしておいたほうがいい)をリングバッファ的に書き込んでいく方法があります。

リングバッファに 関しては、また別に書く必要がありますが・・・


簡単にこの方法を 説明すると


例)
 int dbg_data[1024];
  int dbg_idx;


こんな感じで変数を作っておいて、毎ループ、主要なデータを保存してやります

カウンターの更新はバッファサイズに合わせてやってください


動作がおかしくなった時に、きっとブレークポイントを設定していると思うので

その時に変数の動きを確認すれば、内部で何が起きていたのか推測できます


上の例では簡略化しすぎているので何もわかりませんけどね。


2012年7月17日火曜日

お知らせとお願い、 組込み、組み込み システム

意外と、組み込みシステム開発、組込みシステム開発、(検索の為に複数表記してます)のブログに巡り合いません。

 リンクを希望の方があれば、お知らせください、さらっと目を通して、基本的にはリンクを乗っけるようにしますので。


 検索して出てくるもので、個別の深い内容のものは、多々あるのですが、全般的にさらっと、流したものが無いので、個別の事柄に関してはあまり深入りせずに、そしてなるべく途絶えないようにと思っています。


参考になるページがあった場合は、記事の中でリンクを貼ると思いますので、今時NGということは無いとは思いますが、そういう場合は連絡をくださいませ。


基本的にこのブログでは、完全にリンクフリーと考えています。


2012年7月15日日曜日

組込みシステムと通信

予想外に番外編で、ネットワークの事をかいてしまって、予想外に多くのアクセスがあってたじろいでるわけなんですが、、、

 ついでといってはなんですが、組込みシステムと通信を取り上げたいと思います。

(タイトルだけみて、なんとなく、バランスを取って、記事をかいてるもんで・・・)

古いところでは

パラレル
RS-232C
RS-485   だったっけかな??

あたりが使われていました

ボーレートも その昔は9600BPSあたりが一般的でした

その後、組込み機器向けのCPUも高速化して ボーレートも二桁ほど上がったりもしています

特に機器内部でのやりとりとかは、動作速度の向上とともに桁違いにあがっています


その後 I2C とかいう通信も出てきていますが、

大きな変化は、PC等でも使われている TCP/IPが一般に使われることが増えてきています

データの収集や、遠隔操作等にも便利なためですね


また、配線が難しい場所とかで、使用されることもあり、無線LANを使われることも多いです

ネットワークの導入が始まった初期の頃は、ネットワーク対応のOSを使用して、ソフトレベルで

完全に対応する形で実装されていました


その後、ネットワーク機能だけの小さな基盤が開発されて提供されるケースが多く見られるようになってきました。


最初は有線LANでしたが、最近では無線LANのものもかなりあるようです。

そういう形で、簡単にネットワークを扱えるようにはなってきていますが、ネットワークの基礎知識もある程度は求められることになります。

組込みに限った話ではないので、ネットワークの仕組みなどについては ちゃんと勉強しておくことをお勧めします。





2012年7月13日金曜日

番外編2 忍者ツールズ 自力先行復旧 初心者不可! DNSの旬のところを使え!update2 12:35

忍者ツールズのDNS浸透に 時間がかかっていて いらついているかたへ

とりえず、技術力に自信がある方にだけに しか 分からない方法でやり方を

お伝えします。

私が試したのはWIN XPですので、自分の環境に合わせてください。

基本的にネットワーク周りの設定を変えられないものでは無理です。

その1. NSLOOKUP コマンドで 現在の ninja.co.jpの アドレスを 確認してメモしておきます

その2. フリーのDNSをさがします  私の場合は あの Gで始まる 有名なところのやつを
使うことにしました


その3.NSLOOKUP コマンドで フリーのDNSを使って IDが引けるか確認する

nslookup ninja.co.jp g..g.g.g

ここでIPが変わってないならアウトですので その2に戻ります

a.b.c.dと 答えが返ったものとします


その4.NSLOOKUP コマンドで 念のために IPからの逆引きをします

 nslookup a.b.c.d で 逆引きの答えが

ちゃんとなっていることを 確認します


その5.TCP/IPのプロパティーの設定から

DNSの設定に g.g.g.g をいれてやります

私はプライマリに一応いれましたが・・・・

今なにか値が入っているならセカンダリに残しておいたほうが無難です


以上です

これでわからない人は やめておいたほうが無難です。


ネットがまったく繋がらなくなります


追加です 2012/07/13 12:22

ルーターを使っている方はルーター内部のDNSの設定の所に追加してやれば
同じことが出来ます。

DNSアドレスを特に自動で取得になっている場合は、おかしくなったとしても、元に戻すのは
簡単です。

フリー DNSで 検索すれば出てくると思います。

あくまでも自己責任とうことで、宜しくお願いします。


2012/07/34 12:34
参考ページがあったのでリンク追加

<Gigazineの参考記事>

番外編 忍者ツールズ、忍者ブログ 障害 2012/07/12 20時ごろより

困ってる、人もいると思うので、記事を書くことにしました。

このブログはGoogleのサービスなので直接影響はありません。

他にもブログがあるのでそちらのほうで影響があったので、あれこれ調べていても情報がないので、自分なりに調べた結果はあとで 書きますが。

とりあえず、

忍者ツールズ、忍者ブログ 障害 2012/07/12 20:20-21:30
一般ユーザーの方にかんしては、72時間程度の時間で復旧します。


いったんここで公開して、その後修正を加えることにします。 2012/07/13 01:45

21時ぐらいまでは、まったく情報が出てくることはありませんでした、


とりあえず、現象面で分かっていることは、
・管理画面にアクセスできない(お名前のほうへリダイレクト)
・個人のブログ画面も同様

21時ぐらいまでの時点では

DNSを引いて見た結果は

どちらも一見正常な値が返ってきていましたが、

IPアドレスは同じでした

そこで考えられたことは、

・サーバークラウドのダウン
・DNSの障害

いずれにしても、復旧までに時間がかかりそうでした。

そのごあれこれ探したところ

Twitterのアカウントがあったため、連絡を取ることに

Facebookにもページがあったので、そちらでも案内を
・侍ファクトリー での告知


そちらでの情報提供を提案


それとともに IPアドレスをチェックして割当先をチェックすると


GMOとのことで、そちらの障害情報をチェックするも特になし


ただ、別件で該当する時間帯に、メンテナンス作業が入っているので、
何かのミスの可能性も考えられました

普段から無料でお世話になっているので出来るだけのサポートはしたいと
あれこれと提案させてもらっていた感じです。

01:53分 一度 さらに公開します

その後DNS障害ということがアナウンスされたので、これは 最悪72時間コースかもと
いう事が判明

それとともに、基本的には 大きな部分の原因はサーバー側では なさそうであることも

DNSを再び引いて見ると 忍者ツールズのIPは引けるものの、ユーザーブログのIPが引けない状態に変化しています(21時ぐらい?)


DNSというのは IPアドレス(人間は覚えられない、数字なので)とninja.co.jpとか の マッチングを
行うサービスのことで、仕組みは、自分が知らない時は、一段上のDNSに聞きましょうという
バケツリレー方式になっています

また、何度も何度も聞くのは、非効率なために、聞いた結果はしばらく覚えて起きましょうという
仕組みで、ある感覚で変更しましたんでよろしくという情報を、またバケツリレーで送る仕組みです


この待ち時間があるために最大72時間ぐらいで、世界中にいきわたるはずという仕組みです



2:00 再び 一度公開します

問題発生時に、心配したのは、見える見えないよりもDNSポイズン?でした

変なソフトとかを入れてしまうと、IPアドレスを取得する時に、なりすました別のサイトに知らない間に、飛ばされてしまう怖いやつです。


幸い情報が取れましたので、その心配もなく、あとは時間が経てば、ほぼ復旧すると思われます


まだまだ、現場では対応に追われているんでしょうが、頑張ってください


あとアクセス解析あたりは、きっと別で動いているようで、物によってはデータも残っている可能性もありそうです。


このあたりは事態の収拾をまって、正式発表をまつしかないところです


いちど 記事としては、これで閉じます、続報などがあるようでしたら 別途あたらしい記事にするとおもいます。

2:07


2012年7月12日木曜日

組込み開発の測定器:ロジックアナライザ

風夢です、実は、本当はこの記事をずいぶん前から書きたかったのですが、他にも書かないとって思うことがあったので、遅くなってしまいました。

以前に、デジタルオシロスコープの紹介をしましたが、似ているようで、違う測定器です。


まず、取り扱える信号の数がオシロスコープと、ロジックアナライザでは圧倒的に違います。

一般的なオシロスコープでは、2CHもしくは4CHが標準的ですが、ロジックアナライザは16CHとか
それ以上になります。

一般的にデータバスや、コントロールラインの信号レベルをH/Lを測定するのがロジックアナライザです。


例えば8ビットでデータを出力するデバイスからの、信号の読み込みをする場合にデバイスからは
リクエスト信号が出力されて、CPUは割り込み処理を行ってREAD信号を発生させてから、データバスに信号が流れます。

(READ信号も、状況しだいで IO READと MEMORY READ の場合もあります 個別のCPUで違います)


当初のロジックアナライザは、このような感じのものでしたが、お値段は怖いほど高くて、扱うのにちょっとびびってしまうようなものでしたが、その後さらに機能面で進化しています。

CPUのデータバスに流れるのは、かなりの割合で実行コードなわけで、それはアセンブラレベルになりますが、CPUが何を実行しようとして ロードしてるのか分かるということになります。

残念ながら、こういう高度なロジックアナライザを使ったことがないので、これ以上の詳細に関しては知りませんが、ICEでやっていることに近いところが外部から観測できることになります。


また、アジレンス等だったかな、デジタルオシロとロジックアナライザが組み合わさった製品も出てきているようです。

組込み開発の市場規模が大きくなるにつれて、それを支援する機材のほうも研究開発されて発展していってます、直接使う機会がなくても大体どういうものなのかを知っておかないと、いざそういう機材を使って開発に当たるときにロスタイムが発生してしまいます。

組込みシステム開発のソフトウェア技術者は、本当に日々勉強していくことが多い大変な分野です、ただし出来上がったものは製品という形で有形の物として存在しますので、やりがいも大きいです。

2012年7月11日水曜日

ライセンス問題 組込みシステムでは避けて通れない話

風夢です、今日はまたまた、ハードから離れた話ですが、ライセンスのことを話題に取りあえげて見ようと思います。


ライセンス、あるいは著作権という単語自体は日常的に耳にする言葉でなんとなく、分ったつもりになっているものですが、今日のソフトウェア開発の場合、デリケートに対応する必要があります。

それというのも、Linuxの普及によるものが大きいです。

有償、無償でいろんなOSがありますが、デファクトスタンダードとしてLinuxがどんどんと組込み機器にも使われてきています。

Linux自体も、ソフトウェア開発者なら一度調べて見るといいと思うのですが、あえて説明をしますが、カーネルとツール類は別物です。


今記事を書こうとしながらも、すぐには思い出せないほど、ライセンスには種類があります。


・コピーレフト
・GPL
・GPL2
・BSDライセンス?
・アパッチライセンス?
・BSDライセンス?
・プロプラエタリライセンス


あと、ソフトに場合によってはデュアルライセンスといって、複数のライセンスから選択をする場合もあります。



組み込み機器では特に、ソースファイルを改変などした場合に、その部分を公開する必要があるかどうかなどありますので、ライセンス関係をしっかりと確認した上で、参考にしたりする場合にはプロジェクトリーダー等に確認をとっておく必要があります。


ライセンスに関しては今後はあまり取り上げないかもしれませんが、大事な問題なので、一度しっかりと勉強をしておくことをお勧めします。



さすがに難解なのと自分自身でも、おさらいをする必要があるので、記事を書きながら探したページのリンクを貼らせてもらいます。

<漢のコンピュータ道(デュアルライセンスで検索しました)>

<Linuxカーネル WIKI>

<組み込みLinuxの手引き>



2012年7月10日火曜日

組込み プルアップ、プルダウン、ソフトエンジニアのためのデジタル回路入門1

組込み開発を続けていくと、いつの間にか回路図を渡されて・・・・ということもあります


このサイトは私の趣味?で書いているサイトなので、とっても不親切ですが、ある程度ボリュームがまとまってきたらそれなりに、役に立つことを想定して、多くのラベルをつけてあります。


今日の記事では、少しデジタル回路について触れようと思います。

用語として羅列して説明がないかもしれませんが、検索されれば、より身につくものと思います。

(このサイト自体が、特にどこかにリンクを貼るでもなく、検索しないとこれません)




・プルアップ
・プルダウン
・ファンアウト
・スリーステートバッファ
・ポートセッティング  CPU内部のポートの状態を特殊レジスタに値を書きこんで決めます。

あと 避けて通れないのは

真理値表という言葉はしってますよね?
・AND
・OR
・NOT
・XOR EORともいうのかな?


デジタルには限らないかもしれませんが電気的には

・+B
・VCC
・VDD
・VSS
・GND

とかも出てくるかも この辺りは電圧に関するものです。


多層基盤が多い最近では、どこから、どんな電圧がとれるか・・・とか回路図が読めないと
アウトです、、、ソフト屋がそんなことをする必要があるかどうかは別としてね。


3層4層は当たり前なので、オシロ、ロジアナ等を使うにはそれなりに苦労をする場合も
多いかも


・IC,LSIのピッチもかつては2.54ミリピッチでしたけど、今は微細化してるので

ちょこっとこの信号を取りたいとかって言う時は、ソフト屋さんの半田づけテクニックでは
きついのは確かですね。

ハーフピッチぐらいが限界かな

やっぱり、ハード屋さんにTPなり、ランドなりを作っておいてもらえたら嬉しいです。


多層基盤の場合は、ノイズ対策などで、表裏がかなりの面積がべたになっていることが
多いです。


こういうのが普通に分かるようになっていれば、きっと貴方は立派な組込み技術者だと思います。


2012年7月8日日曜日

何故?どうして? どうなっているのか?自分の頭で考える

今日は少し、取り留めの無い話ですが、

膨大な、技術や情報を追いかけて、限られた時間の中で、スキルアップを図りながら、仕事を続けていく必要がああります。

IT業界では他の業界以上に、この傾向は強いと思います。

新しい技術がいっせいに広まっていっているときに、オンタイムで仕事で関わっていればいいのでしょうが、そうも行きません。

 かと思えば有望だと思われていたものが急速に廃れることもあります。

広い視野を持って、現在直接自分が関わっている技術以外のものでも、概要については押さえておいて、必要になった時に、これってどんなものなんだろう??ってことになると出遅れてしまいます。




 ところが、IT分野程、裾野の広い業界もなかなか無いとも思います。




 一つ一つ携わっていくプロジェクトの中で、何でこうなんだろう?どうしてこうなんだろう?
自分の頭で考えて、推測していく癖をつけておくことを、お勧めします。




まったく違うアーキテクチャーのCPUを始めてプロジェクトで関わることになった場合でも、ここはきっと同じだろう、ここは間違いなく違うだろうと、推測をして調べることで、効率がUPすることも多いです。




 また、長らくやっていると新規開発のみならず、改造の作業が発生することもあります。


社内で開発されたソースを変更する場合であれば、運がよければ担当者がいる場合もあります


その場合は疑問点等を質問する機会にも恵まれるかもしれません。




 ソースファイルの解析を行う作業は、時にはとても苦痛を伴うものですが、スキルが高い人の
書いたコードを読むことは、非常に勉強になる事が多いです。




例えば、CPUメーカー提供のライブラリのソース、OSのデバイスドライバのソース等、
通常のアプリケーション開発のレベルとは、違ったレベルの記述がなされている場合もあります


 嫌だと思う仕事の中にも、スキルアップのチャンスは転がっているのです、プログラムの開発の思想にも歴史の流れがあるので、書いた人の時代を感じることもあります




簡単な 例をひとつだけ 挙げれば


if( 3 == a) と

if( a == 3) この違いはわかるでしょうか?


もしも =を一つ打ち忘れた場合に ここで差が出てきます

勿論例なので、3を直接書いていますが これも #define もしくは enum を 使うところでしょう


あと 脱線になりますが、

- w3 は 必須だと思います

それが 何故かも 考えて見てください




****
文字だらけで、写真や図を 使わないで書いているのは、なるべく、時代の変化に関係なく
記述しようとおもうからです

また、読まれた方が自分の頭で考えたり、検索して印象深く記憶に入ればと思っています







2012年7月5日木曜日

ハード屋さんにお願いしたいこと(アートワーク)

少し前の記事

空きポートの活用(デバッグ)>

にも書いたことですが、小ロットで作成される、機器の場合、アートワークを決める時点で少し工夫をして頂ければ、ハードデバッグやソフトデバッグに活用できることがあります

JTAGのコネクタのように未実装状態で製品化するというほどのレベルまで行かなくても、使用しないポートをプルアップ、プルダウンしておくのにすこしだけでもパターンを伸ばして頂ければ

・シリアル通信
・IO
・AD/DA

等を付加して、システムトータルでの開発に役に立つことも考えられます


できれば+Bとか取りやすかったり、TPとか立てれるようなランドにしてもらってれば

もっと楽ですけど


発想を、逆転して、ハードデバッグを行うために、そういう冶具を実装した基盤を提供して

スイッチなり、エンコーダー、シリアル入力に基づいて、確認したい動作をするように

ソフト屋に頼んで、先にがっしりとハードを固めてもらうのもありだと思います