日曜技術者のメモ

趣味でやった事のメモ書きです。

Fedora18をVMWare Playerでインストールしてみた。

VMware Player上にFedora18をインストールしたのでメモ。
結構はまってしまったのでその辺を適当にまとめています。

使用バージョンはVMWare Player 5.0.1
Fedoraのディスクは現在公開されているFedora-18-x86_64-Live-Desktop.iso

  • 仮想PCの設定

バージョンはFedora 64bit
f:id:ginnyu-tei:20130202205725j:plain

この画面で「ハードウェアをカスタマイズ」を選択
f:id:ginnyu-tei:20130202205825j:plain

ディスプレイを選択し「3Dグラフィックスのアクセラレーション」をOFFにする。
※これをしないとCDブート時にフリーズする。
f:id:ginnyu-tei:20130202205930j:plain

  • OSインストール

これで仮想PCの設定は完了。パワーオンします。
「live system user」でログイン後「Install to Hard Drive」を選択。
f:id:ginnyu-tei:20130202210431j:plain

インストール先に警告マークがついているのでクリック
f:id:ginnyu-tei:20130202211723j:plain

続行を押すと何かウィンドウが出てきますがとりあえずそのまま続行
これで警告マークが消えます。
f:id:ginnyu-tei:20130202211826j:plain

インストールが終わるとこの画面になります。
警告マークがついた項目が見つからないのは解像度が小さいからです。
f:id:ginnyu-tei:20130202211907j:plain

fedoraのシステム設定で1024x768にするとrootパスワード設定が出てきます。
(これに気づかず無理やりリブートしたらHDDブート後ログイン画面でログインできず再インストールしました。)
f:id:ginnyu-tei:20130202212022j:plain

rootのパスワードを設定後再起動すればインストールできました。
HDDブート後の設定は特筆すべき点はなかったので省略。

  • vmware toolsのインストール

端末を立ちあげ以下順で設定。

アップデート

 sudo yum update

念のためカーネルのアップデート & 再起動

 sudo yum update karnel
 sudo reboot

必要なパッケージをインストール

 sudo yum install gcc
 sudo yum install kernel-headers kernel-devel

3.7.2-201.fc18.x86_64以降でvmware toolsをインストールする時にkernel headerが見つからずインストールできない不具合があるので必要なファイルをあらかじめコピー
パス内に入っているkernelのバージョンは「uname -r」で取得しています。

 sudo cp /usr/src/kernels/`uname -r`/include/generated/uapi/linux/version.h /lib/modules/`uname -r`/build/include/linux/

後はvmware toolsを解凍してインストールします。
vmware toolsをマウントした後のファイルは以下にありますので適当な場所へコピー

 /run/media/ユーザー名/VMware\ Tools/VMwareTools-9.2.2-893683.tar.gz

インストルコマンド

 ./vmware-install.pl

インストールが終わったら再起動で完了!

Microsoft VisioをCADとして使ってみた。

前回フリーのCADツールを幾つか書きましたが
私にとっては大変使いづらく別のツールを使うことにします。

という訳で仕事で良く使っているMicrosoft Visioを使って図形を描いてみました。
VisioはDXFファイルで保存できますがそのまま保存してもNCVCで読めませんでした。
試行錯誤の結果NCVCでGコードを出力できたのでメモ。
(※以下手順はVisio2010を使用しています。)

今回は材料に溝を彫って切り出す加工の図面を書きます。
(アクリル板を加工して下からライトアップしようと思ってます。)

1.図面を書く
Visioで図面を書く際に気をつける事は使える図形が限られている点です。
私が試してGコードまで生成出来た図形は以下です。

  • 四角形
  • 楕円
  • 直線
  • 円弧
  • 鉛筆

出来なかった図形は以下です。

  • 自在曲線→NCVCに持って行くとエラーになります。(スプライン曲線に対応していない?)
  • 文字→こちらもエラーになります。

適当に図形を書いたのが以下になります。縮尺は1:1で1mmグリッドを表示しています。
緑の四角は材料を切り出すライン左下の小さな丸は原点を表しています。
(NCVCでは原点を丸で表します。)
f:id:ginnyu-tei:20130108231233j:plain

2.Visioでレイヤーを作成する。
「ホーム→レイヤー→レイヤープロパティ」を選択して
レイヤーを作成します。最低限Layer0とoriginがあればOK
Layer毎にZ軸の深さを変えれます。
私は以下の様にしました。

  • origin:原点
  • Layer0:溝を彫る
  • Layer1:深彫りで材料を切り出す。

f:id:ginnyu-tei:20130108223534j:plain

3.図形をレイヤーに割り振る。
レイヤーを作成したら各レイヤーに図形を振り分けます。
切り出しラインの中にある図形を範囲選択して「ホーム→レイヤー→レイヤーに割り当て」
を選択すると作成したレイヤーが表示されるのでLayer0にチェックを入れてOK
同様に左下の丸をorigin。切り出しラインをLayer1にします。

4.DXF形式で保存
DXF形式で保存します。
保存後NCVCで開くと図面が表示されます。

f:id:ginnyu-tei:20130108234557j:plain

これでVisioからNCVC用のDXFファイルを生成出来ました。
次はNCVCの設定をします。

CNCの使い方について調べてみた

前回切削をすると書きましたがその前に
そもそも図面からCNCをどう動かすかを調べてみました。(今更・・・)
以下手順で作成していく様です。

  1. CADで図面を書く
  2. NCVCで図面からGコードに変換する。
  3. Mach3でGコードを読み込みCNCを制御する。

CADといえばAutoCADが有名ですが値段が高いので他のCADを使います。
フリーだと以下のCADがあります。

NCVCが扱えるファイルにDXFというAutoCADが使用しているフォーマットがあります。
このフォーマットはCADだけではなくドローツールでも対応している事があるので
DXFに対応したツールを使います。
(Jw_cadのファイルならNCVCはそのまま読めますがJw_cadの扱いが難しかったので使ってないです)

次にNCVCというツールで図面からGコードというCNCを制御するコードを生成します。
上記CADは2次元CADなので平面データしか作成できません。NCVC上でZ軸(深さ)方向の設定をします。

最後にMach3というツールでCNCを制御します。
フリー版ではGコード500行までしか動作しません。
曲線を使うとあっという間に500行超えます・・・

大体の流れはこの様になっています。
次回はCADについてメモします。

格安CNCを買ってみた。- Sable-2015 -

新年あけましておめでとうございます。年末更新出来なかったので・・・
(やったことは12月中旬~下旬の出来事)


FMCメザニンボードを設計してみた-その1-
で腹案があると言いましたがそれがこちら
http://cncmill.web.fc2.com/
Sable-2015というCNCフライス盤です。これで銅箔基板の表面を削り基板を作成します。
これの良い所は穴あけも自動化出来る点です。
回路図CADからCNC制御までの手順はネットで公開されている方がいますので
実際に作成する時にでもメモします。

注文は上記HPから注文しました。注文時に彫刻カッターとエンドミルも追加。
注文から2週間程で受け取りました。
で、設置したのが↓

f:id:ginnyu-tei:20121231113347j:plain

切削屑が飛んでも良いようにダンボールの中にいれました。
それとCNCの足にはダイソーで売っていた耐震用のゴム板(?)をはさみました。
捨て板はとりあえず適当な発泡スチロールを両面テープで固定。


困ったのがPCと接続する時でした。
Sable-2015はパラレルポート接続なので少し古いマシンではないとついていません。
それとOSが64bitでは仕様出来ないようなので、Vista搭載の中古PCを買って来ました。
Vistaはあまりにも重かったのでXPにダウンロードしました・・・)
Core2Duo世代で7980円となかなかお買い得でした。

接続さえ出来れば付属のマニュアルを参照して設定するだけです。

では、次は何か切削してみます。

FMCメザニンボードを設計してみた-失敗-

EAGLEで配線図はできたのでレイアウトをやります。

EAGLEのフリー版では100x80mm 2層までです。
この範囲でまずはやってみます。

f:id:ginnyu-tei:20121217001454j:plain

右の白い四角が100x80の箱で左側がレイアウト予定の部品です。
この時点で無理な気がします・・・

Routing Grid 10milで実行してみる。

f:id:ginnyu-tei:20121217010143j:plain

途中で自動配線が止まってしまいました・・・
まあ160ピン全部使うことはないから一部だけ使うとして
どのくらいまで減らせばいいか見てみます。

SystemCで廃止/廃止予定の機能を調べてみた

SystemC Advent Calendar2012 の 23日目(になるかも?)の記事です。
よろしくおねがいします。

SystemCのバージョンアップに伴って削除された機能や推奨されない機能
がどのくらい過去にあったか調べてました。古いコードを見た際に参考にするメモです。
(リリースノートから抜粋しています。すべて網羅できてないと思います・・・)
現在accelleraにはSystemC 1.0.2まで古いコードが置かれています。
今回は2.x系(2.0から2.3)まで追ってみました。

2.0(2002-02-08) -> 2.0.1(2002-04-11)

sc_logic sc_logic_dat1;
//2.3でもコンパイル可
sc_logic_dat1 = sc_logic_0; //2.0以降 SC_LOGIC_0 に変更
sc_logic_dat1 = sc_logic_1; //2.0以降 SC_LOGIC_1 に変更
sc_logic_dat1 = sc_logic_Z; //2.0以降 SC_LOGIC_Z に変更
sc_logic_dat1 = sc_logic_X; //2.0以降 SC_LOGIC_X に変更
  • 型変換
//2.0まで(2.3でコンパイルエラー)
cout << "sc_lvjdat8(signed) = " << sc_lv_dat8.to_signed() << end;
cout << "sc_lv_dat8(unsigned) = " << sc_lv_dat8.to_unsigned() << endl;
//2.0以降
cout << "sc_lv_dat8(signed) = " << sc_lv_dat8.to_int() << endl;
cout << "sc_lv_dat8(unsigned) = " << sc_lv_dat8.to_uint() << endl;
  • データタイプ
sc_bit bit_dat1 = 0; //2.0で廃止
bool bit_dat1 = 0;   //2.0以降はbool型を使う
  • 演算
//2.3でコンパイルエラー
sc_logic_dat1 = !sc_logic_dat1: //2.0ではsc_logicの!演算子が削除された
sc_logic_dat1 = ~sc_logic_dat1: //反転時は~演算子を使う
  • ビット幅取得
//2.3でコンパイルエラー
cout << "sc_lv_dat8 width = " << sclv_dat8. bitwidth() << endl; //2.0削除
cout << "sc_lv_dat8 width = " << sc_lv_dat8. length() << endl;  //2.0から
  • sensitive
//2.3でコンパイルエラー
sensitive_pos << clk; //2.0廃止
sensitive_neg << clk; //2.0廃止
sensitive << clk.pos(); //2.0以降
sensitive << clk.neg(); //2.0以降
  • その他

2.0.1のリリースノートにはSC_CTHREADは推奨されないと書かれています。
(当時のSystemC入門書とかを読むと、推奨しないとなっている事があります。)
当時はSC_THREADとSC_METHODで置き換えれるようにするつもりだったようです。
もちろんSystemC2.3では使えますし、高位合成ツールとかで使われているのを見ると
当分廃止はされないと思います。
ちなみにこの記事を書こうと思った理由はこのSC_CTHREADっていつ無くなるって
話だったかな?と思ったのがきっかけです。

2.0.1(2002-04-11) -> 2.1(2005-09-20)

  • データ型
sc_string string_dat; //2.1で廃止(2.3でコンパイルエラー)
sc_string_old string_dat; // sc_string_oldかstringで代替
string string_dat;        

sc_pvector<unsigned int> vector_dat    //vector型で置き換えれるように
std::vector<unsigned int > vector_dat; //なっていますが2.3でも使えます。
  • その他

sc_cycle() 2.3でコンパイルエラー
sc_create_isdb_file() ISDBフォーマット削除。(2.3でエラー)
ISDB形式ってどの波形ビューワで見れたのでしょうか?

2.1(2005-09-20) -> 2.2(2007-03-14) -> 2.2(2007-03-14)

2.2は2つ公開されていますのでまとめています。

watching(reset,delayed() == false); //2.2で削除(2.3でコンパイルエラー)
reset_signal_is(reset,false); //2.1で追加

wait_until( valid.deferred() == true ); //2.2で削除(2.3でコンパイルエラー)
                                        //deferred()も削除
do { wait(); } while ( !(valid == true) );//こっちに置き換える
  • その他

end_module() 削除予定?

2.2(2007-03-14) -> 2.3(2012-03-14)

機能追加はあるけどリリースノートを読む限り削除はなさそう・・・


今回は廃止された機能について調べてました。
これを修正すれば古いコードのコンパイルはできそうです。
しかし、バージョンによってシミュレーション結果が変わるという話を
聞いた事がありますので。そこは気をつける必要があります。

FMCメザニンボードを設計してみた-その1-

FMCコネクタが届いたので使えるようにボードを設計してみる。
使いやすいように2.57mmピンヘッダに変換するボードを作る予定です。
購入したコネクタは1.27mmピッチなのでなんとかなりそうです。
今のところ以下の選択肢

  • ユニバーサル基板で作る

ハーフピッチのユニバーサル基板は入手可能なので有力候補。ただし配線が面倒

  • 基板を自作する

自作した事がないので挑戦してみたい。ただし難易度は高そう

  • 基板発注

設計さえ出来ればあとはハンダ付けするだけ。海外に注文すれば安い。
ただし、私の語学力の問題とトライアンドエラーが出来ないのが問題かな?

後、腹案もいくつかありますが今の所この位考えています。
まあ、どれにしても設計は必要ですのでやってみます。

今回は基板自作も検討しているのでレイアウトまで出来る
「EAGLE」というツールを使ってみます。

EAGLEにはFMCコネクタのライブラリがないのでそのままでは作成できません。
FMCコネクタのライブラリを探すとzynqgeekさんがZedboad用のライブラリを公開されています。
https://github.com/zynqgeek

zed-board.lbrをダウンロードしてEAGLEに登録すると
FMCコネクタ(ASP-13604-01)とXADCが使えるようになります。

f:id:ginnyu-tei:20121217000140j:plain

配置する際に気をつける事が回路図上で1個置いただけだと
半分の80ピンしか出てこないので2個置く必要があります。
2個おいてもレイアウトではちゃんと認識しています。

で、160ピン全部ピンヘッダに出したのが以下図
f:id:ginnyu-tei:20121217000512j:plain
配線するのがかなり大変でした。

次はレイアウトをします。