読者です 読者をやめる 読者になる 読者になる

LinuxでDE0焼き焼き

Altera BlasterのUSB設定

USB接続でFPGAに書き込めるようにするための設定です。

sudo nano /etc/udev/rules.d/99-alterablaster.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", MODE="0666"

sudo udevadm control --reload-rules

 

 

 

http://cellspe.matrix.jp/zerofpga/inst_quartus.html

 

 

13.1を落としてインストール。インストールは./setup.sh的なのを実行する。

1分くらいで窓が出てくる。

普通にインスコして、上のUSB設定して終わり。

 

FPGAマガジンNo10まとめ

高位合成とは、C→RTLにすること。

問題

合成ツールが吐き出すRTLが間違いないかわからん

並列処理がうまく行えない

複数ブロックに分けるが、調整検証が困難

ツールが高価

Qsysとは何か?IPコア接続ツール?

SDSoc

ボードにあった環境を勝手に作ってくれる。verilogを吐き出すだけじゃない。ソフト側(ドライバー側)も作ってくれる。なので、SDSocはプラットフォームから選ぶところから始まる。OSとかもせんたくできる。

RTLが減ったので、1,アクセラレーションの考え方、2,アーキテクチャのイメージをシンプルにでき、あとは3,C言語でハードウェア化するアルゴリズムをつくれば、簡単にできる。その他はSDSocがアシストしてくれるらしい。

OpenCV Alteraに載ってるやつで、C言語に似た構造でかける。

eXCite C->Verilog

LLVMでも C->Verilogができる。Vivadoとか、OpenCLとかにも使われてる。LegUPって言うコンパイラがC->verilogのやつ。

javaの合成もある。

PSocっていうよくわからんのもある。

 

まとめ

高位合成は単純にC->RTLと考えて良さそう。

結局、ハードウェアは並列処理する必要があるので、その辺のアーキテクチャと、アルゴリズム(パイプライン)とかを設計する必要がある。とりあえずVerilogでできないとだめなきがする。それからCとかでできるようになればよいかと。結局この本の大部分はどこをどうハードウェアにするかが書かれてある感じ。図3の問題点ということから当然か。

ツールは使えるようにしておいたほうがいいかも。SDSocとか。なんかAlteraがあまり出てこないな。ターゲット層が違うのか。

Verilogやりながら引き続き調査する。

Linuxエンジニア養成なんとか

Debian:サーバー用とかに分かれてない。DebianProjectは任意団体。公式開発者とかがいる。ubuntu。Unity。Mir。Canonical社の社員が中心にやってる。

 

RedHatは有料と無料があった。RHELredhat enterprise linux)がある。無料のやつは2003年になくなった。その後、後継を開発するためfedoraプロジェクトに引き継がれた。

RHELの無料版がsentOS

FedoraREDHATcentOSというながれ。

 

openSUSEBuild Serviceパッケージをカスタマイズできる。ubuntuとかもつくれてしまう

SUSE studio

 

OpenStack、CloudStackクラウドOS

Qtプログラミング入門まとめ

シグナルとスロットでUIをつなぐ。

つなぐのはconnect()で。

シグナルにする場合

 何らかのイベントが発生した時

 オブジェクトの状態が変化した時

スロットにする場合

 オブジェクトに何らかの処理をさせたい時

 シグナルを受けたい時

シグナル

http://vivi.dyndns.org/vivi/docs/Qt/signalSlot.html

イベントを実装したいときはイベントハンドラを再実装する。オーバーライドする。

イベントフィルタというものもあり、イベントに飛ばす前に受けてフィルタリングできる

イベントはイベントループによってキューイングされる。スレッドごとに存在する。シグナルスロットでつないで、QueuedConnectionで設定するとイベントループにキューイングされる。postEventとかsendEventとかやる。

保存

QSettingsを使うとWindowsならレジストリLinuxならiniファイルMacならxml設定ファイルに保存できる。キーとバリューになる。

 

UIは大体がQWigetに作っていく。

レイアウト用のQなんとかもある。

あとはセンス。

emitとかでスロットを呼び出せたりする。

ちょっとイケてるマネージャーまとめ

・リーダーになったじゃなくて、部下からの信頼が必要。そのために、仕事ができることと、人間性。

・リーダーは部下に評価される側である。

・信頼を増やしていく。例えば困ってる時には助けてあげるとか。

・話が合わなかった時「いろいろあるけど、1つか2つは自分んもかんでるなぁ」とおもう。自責他責でかんがえない。

・ポジティブ思考でなければならない。

・積極的傾聴をすること。話の途中で自分経験やアドバイスなどはしないこと。自分のものさしを必ず持ってて、その体験談とかをしがちだが、押さえつけて最後まで話を聞く。考え方、気持ち、立場をよく聞くこと。

・Be(理念)Do(手段)Have(結果)

・CS顧客満足度よりもES従業員満足

・GetBetterでみんなと頑張る

・部下を引っ張るより夢を語って部下と一緒に頑張る。

 

・YesButは否定感がただようので、YesAndでいくこと。懸念点はアイデアを付加する。

・何をやるかではなく、なぜやるかで業務依頼をする。そうすると自分で考えてアイデアを出すようになる。

・馬が合わないやつにはラポール形成をする。まず相手に合わせる。ページングをする。

話題、目線、言葉、ミラーリング、でせっする。

共通の話題、目線の高さを合わせる、相手がよくつか合う専門用語、行動しぐさを真似る。

・ハラスメントに気をつけるんじゃなくてその前に信頼関係を気づくこと。

・話しかけられたら応じること。ダメならあとでこっちから話しかける。

・失敗は褒めよう。

・失敗の報告で保身はだめ。部下が離れていきます。困っている時に助けてくれるかどうか、未来を託すことができるひとかどうかを見ている。切り捨てるようなことをしたら距離を置かれる。

・発言しやすい会議の雰囲気づくりが大切。

・会議では発言しない人もバックアップする。

・会議が紛糾すると、人と意見が分離できない。人の意見に意見をいうようになって収集がつかなくなってくる。政治的、感情的に首を立てに触れなくなる。こういう時はホワイトボードに書き出すとれいせいになれる。

 

・単なる値下げのWinWinではなく、相手の会社お社是や理念からはいり、本当の意味でのWinWinをかんがえる。そうして長期視点でビジネスをツヅケテイクことができるようになる。

・論理のイエスだけでは不十分。

感情のイエス:この人は私の気持ちも汲み取ってもらえているとおもってもらうこと。

政治的イエス:相手の社内稟議も 考えてあげる。

・相手の会社のBeDoHave

・クライアントや、社内向けでも、自分の提案が自分本位になっていないか注意すること。相手の課題の企画なので自分ではないはず。とくにタイトルなど。

・守 基本を身につける

破 自分のやり方を見つける

離 自立する

・褒めるときは具体的に。いいねだけじゃだめ。

・弱点を指摘するといらつく。だから本人から言わせる。

「どこが弱いと思う?」で、言わせて、自分でいうたから頑張らないといけないと思わす。「それ癖だから、何度も言うかもしれないよ」と言っておけば事前了承になるから気が楽。そして、「ここんないいことがあるのにすごくもったいない。といって、「もったいない」はモチベーションが高まる。

ジョハリの窓。自己開示を広めると未知の領域と重なり、それが気づきになる。

・人の評価は結果とプロセスで。人が人を評価しないようにすること。

・できてないことに対して、なぜなぜをしても進まない。何をどのようにすればで尋ねる。未来志向にすること。なんで?と言ってしまった時には「ついなんでと言ってしまった。」とやめるように心がけること。

 ・タイムマネジメントではなくタスクマネジメント

・仕事はどんどん部下に任せよう。

・おやつの時間で情報共有するとよい。昨日やったこと、今日やること、困っていることを観察してタスクマネジメントとへとつなげていく。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cでオブジェクト指向の本1

構造化(処理別)

init.c

game_mane.c

done.c

main.c

オブジェクト指向(オブジェクト別)

display.c

player.c

rabbit.c

monster.c

game.c

main.c

init(),done()->create(),destroy()に変える

 

カプセル化

例えばヘッダに

typedef struct _player{

int x;

}Player

って書いてしまうとPlayer構造体の中身を意識しなければならなくなる。

隠したい場合、

typedef struct _player *Player;

とだけ書いておいて、

.cの中で

typedef struct _player {

int x;

}_player;

として、

Player p;

p = malloc(sizeof(_player));

return p

とかやると隠蔽できる。

ほんで各オブジェクトはそれぞれのソースコードの中に隠してしまえばカプセル化完了。

 

継承

struct list{

struct list* prev;

struct list* next;

}

void insert(struct list* list, struct list *data){

data->prev = list;

data->next = list->next;

list->next->prev = data;

list->next = data;

}

typedef struct _Person{

struct list list;//mast top

int hoge;

char hoge;

}Person;

typedef struct _Car{

struct list list; //mast top

char hoge;

};

同じ実装を持ってるオブジェクトはこうやって継承させる。先頭に配置してあるので、

キャストできる。

使うときは

Person *p;

Person person;

insert*1;

 

多態性

こうやって、共通化するけども、例えばstruct list型で_Person*とか_Car*とかを扱えるわけなんだが、struct list *の変数に入れた時に同じ記述で別々の関数を呼びたい場合がある。

そのときにはcreateするときに呼ばれたい関数のポインタを渡してセットさせておく。それで、struct list 構造体に定義入れておいて、その関数ポインタをコールするようにすると、多態性ができる。

 

相互include問題

お互いインクルードしあってて、しかも、#define XXXX_H_とかをやって重複インクルードを排除していたら、ヘッダの先頭で別のヘッダをインクルードしてたら、排除されてインクルードできず、コンパイルエラーになる時がある。

結局、他のヘッダファイルの中で使用されそうな定義は他のヘッダファイルのインクルードの前においてあげる。で解決可能。先に定義しておいてあげて、それからインクルードするのでエラーにならないくなるのです。

 

そんなもんということで。

 

 

*1:struct list *)p, (struct list*)(&person

InterfaceのARMのやつ

mbedででビルドできる。

7つのCPUモードがある。

MIPSもARMもそんなに変わらんけどARMのほうが商売がうまいのではやってる。

64bitはMIPSから。

MIPSは64と32が共存可能。

下位互換を捨ててRelease6で心機一転。

x86の64は見た目が美しくないらしい。

ARMの64はARMらしさをすてたらしい。

MIPSは綺麗らしい。

 

64bitと言っても結局メモリは40bitくらいしか使ってない。

最近のMIPSはWarrior。ARMのCortexコアと対してスペックは変わらん。

PIC32シリーズとかに乗ってたりする。

Classic->Aptiv->Warriorコア。

 

パタへネ

バークレースタンフォード

バークレーのパターソンがバークレーRISCの研究をしていて、それが後のARMやSPARC

スタンフォードヘネシーもやってて、MIPSを作った。

microprocessor without interlocked pipeline stages