2011年7月26日 星期二

安裝 Quartus 9.1 for Linux

 2011-07-26 16:11

Altera 發行的 Quartus 進展很快,現在(2011.07.26)已經發行到11版了。基於經濟因素,只能用試用版,進行學術上的研究,所以使用舊一點的版本,比較能夠找到多一點的資源。賺錢之後,請記得要多多支持軟體廠商。現在就來裝 9.1 版吧。

感謝 Altera 的大方,雖然知道有人長久試用該軟體,還是能夠下載歷史版本的安裝套件,就先至官方網站下載安裝套件吧。
https://www.altera.com/download/software/quartus-ii-se/9.1

下載的速度還蠻快的,下載完就可以安裝了,安裝方式與之前的版本一樣,不多說了。

安裝好之後,上網找一下破解檔,裡面會有 license.dat 的。在實際安裝之後, 發現之前 7.2 版的license.dat 會自動抓進來, 在裝之前, 我還花了很多時間找 9.1 的 license 檔呢!

更改網卡的 MAC 可以這樣做
sed -i 's/c86000709ffb/000c29878d03/g' license

裝好之後, 要對其中一個檔加工一下, 才能正常編譯。
要修改的檔案是 libsys_cpt.so文件,在linux的目錄下。具體的作法,是先用 shell 的 GNU 除錯程式 (gdb) 找出 l_pubkey_verify 函数的位置,記錄下來,例如其位置為 0x000a61af。然後使用十六進制的编輯器,例如 GHex 或 UltraEdit,將 l_pubkey_verify (0x000A61AF) 的位置起始的 3 個byte,原為 "55 89 E5",改成 "31 C0 C3"。
輸入下列指令進入gdb
$ gdb libsys_cpt.so

然後在 gdb 輸入下列指令找出 l_pubkey_verify 函数的位置
(gdb) info function l_pubkey_verify
Non-debugging symbols:
0x000a61df  l_pubkey_verify

嗯,裝了 sp1 和 sp2 後,位址變了,小心點。

或者,也可以用 nm 指令找出 l_pubkey_verify 函数的位置
$ nm libsys_cpt_org.so | grep l_pubkey_verify

另外,有好奇寶寶問 31 C0 C3 是什麼,翻成 assembly code 是 

(gdb) disassemble  l_pubkey_verify
Dump of assembler code for function l_pubkey_verify:
0x000a61df <+0>: xor %eax,%eax
0x000a61e1 <+2>: ret

不曉得懂它在做什麼嗎? 總之再高竿的保護,被猜穿之後,只要幾個 byte 就破解了。不過私下可以破解來試用,正式的公司就不能冒這險,還是得買正版的。

更進一步,Quartus II 在 8.1 版之後,即已支援 64 bit,若出現下列的錯誤時,可以考慮使用 64 位元的模式
Out of memory in module quartus_map(2127 megabytes used).

要使用 64位元時,需要在命令列加上 --64bit 的選項。或者,從其 bin/quartus 追蹤到的,可以設定環境變數。
 setenv QUARTUS_64BIT 1

或是以單獨一行指令來執行
QUARTUS_64BIT=1 /opt/altera9.1/quartus/bin/quartus

在使用64位元的模式之前,還是得先對 linux64 目錄下的 libsys_cpt.so 文件開一下刀,步驟如前,machine code 也是一樣。

不過,我加上此選項後,就開不了GUI 的環境了,只能用命令列的指令了。但有時候又要如此才進得了GUI,只能看運氣了。
For example, to create a new project named filtref that targets the Stratix device family and optimize Analysis & Synthesis of that project for speed, you can type the following:

quartus_map --64bit --family=stratix --optimize=speed
或者不加參數,直接執行 /opt/altera9.1/quartus/bin/quartus_map --64bit proj.qpf

要 direct the Fitter to place and route a design for a specific device, 可用下列的指令

quartus_fit --64bit --part=EP1S10F780C5

命令列下可用的指令有 quartus_map, quartus_fit, quartus_sta, quartus_tan, and/or quartus_cdb。
要使用 Tcl 指令可以用 quartus_sh --64bit -s

Simulation 的軟體,舊的元件可以直接使用 Quartus 內附的 simulator,新的元件則改用 ModelSim,可以安裝 ModelSim-Altera Starter Edition v6.5b,這是對應 Quartus 9.1 的免費版本,限制是 1萬行的程式碼,這真正的意思,我沒搞懂,但我的測試可以在上面跑就是了。

===============
之前的筆記
===============

 # gdb
(gdb) file libsys_cpt.so
Reading symbols from /opt/altera7.2/quartus7.2/linux/libsys_cpt.so...(no debugging symbols found)...done.
Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) info function l_pubkey_verify
All functions matching regular expression "l_pubkey_verify":

Non-debugging symbols:
0x000c617b  l_pubkey_verify

(gdb) x/b 0x000c617b
0xc617b :   0x55
0xc617c :    0x89
0xc617d :   0xe5

so find the "55 89 E5" at 0xc617b in file libsys_cpt.so, change the content to "31 C0 C3"

 Also that russian post: http://www.telesys.ru/wwwboards/fpga/247/messages/13858.shtml
1) run gdb
gdb> file quartus
gdb> info function checkout
....  adresok record l_checkout
gdb> file quartus_sh
...  adresok write this fax-tions in quartus_sh
... ............................... libsys_cpt.so

 After the first three bytes of harvested addresses to replace the 33 CO C3. All.

最後這一段是透過 Google 翻譯的俄國網頁,神奇吧!

2012/11/05
在64位元的linux下重裝後,執行/opt/altera9.1/quartus/bin/quartus,會出現下面的錯誤訊息:
rpm: Command not found.
quartus: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
 
可以改成 QUARTUS_64BIT=1 /opt/altera9.1/quartus/bin/quartus,就OK了。那行 rpm: Command not found. 就別理它了。

不過,只要加裝 emul-linux-x86-xlibs,就可以究竟的解決了。不然在跑 modelsim 時也會碰到此問題。

(2012/11/28) 系統升級後,總會帶來一些新的問題。這次是 xorg-server 升級至 1.13.0 之後,出現下面的錯誤訊息。
quartus: symbol lookup error: /usr/lib32/libXext.so.6: undefined symbol: _XGetRequest

在網路上,用盡各種不同的觀點來搜尋,不經意的看到 Altera 內附的 libX11.so.6 會和系統衝突,把它刪掉就可以了,檔案為 /opt/altera9.1/quartus/linux/libX11.so.6

這樣又可以安心的用好一陣子了。

2013-06-14 的錯誤訊息。
Internal Error: Sub-system: ATCL, File: /quartus/ccl/atcl/atcl_root.cpp, Line: 497
Unable to load Tk library

2014-01-27 網卡設定息。
必須取消 Predictable Network Interface Names 的功能,不然會抓不到網卡,也就無法使 License 生效。

2014-04-18 測試 Quartus 10.1,步驟同上,OK 可用。
下載網址 https://www.altera.com/download/software/quartus-ii-se/10.1
必須安裝 10.1sp1,不然在 build 時,系統和畫面會 hang 住。

2011年7月24日 星期日

jQuery -- 讓網頁的開發變輕鬆了

 2011-07-24 16:40 (原來我是 2011 開始接觸 jQuery 的)

前陣子,在書店閒逛,無意中發現幾本關於 jQuery 的書,順手翻翻,翻到關心的AJAX的實作,發現好像是個不錯的東西。

開發動態網頁時,雖然瀏覽器的javascript能夠讓程式更具彈性。但是為了程式的穩定,避免各家瀏覽器不相容的特性,都不太敢使用瀏覽器端的javascript。儘可能的在伺服器端進行各種資料處理。

透過 jQuery,把關於瀏覽器的一些細節都處理好了,開發者可以把精神放在問題的處理上。jQuery本身不大,但構想不錯,獲得各大軟體巨頭的支持,包括微軟在內。

過去,asp 和 php 的推出,取代了不便的 cgi,讓動態網頁的開發變得輕而易舉。如今,jQuery的推出,將會讓瀏覽器端的程式撰寫變得更簡單,尤其很容易就能達到AJAX的功能,可以預期網頁的互動將會越來越友善。


2011-07-16 11:20 單引號還是雙引號

這幾天,無意中知道一個叫 jQuery 的東西,讓網頁程式很容易達到 AJAX 的功能。

在書局中翻了一本參考書籍,覺得還不錯,只是最近手頭有點緊,就把相關的部份翻一翻,硬背了一個實例。回家上網搜尋了一下,原來天下文章一大抄,與網路的實例差不多,只不過把後端的程式由php改成asp.net。

隔天上班後,開始測試,就是不成功。程式已經改成和網頁的DEMO程式一樣,還是不行。
試了各種可能的組合,也學會了用firebug來看錯誤訊息。
最後才知道,jQuery 的 JSON parser 變嚴格了,屬性名稱要加雙引號,字串屬性要用雙引號,改成單引號就會錯。

例如,DEMO 中傳回的 JSON形式的資料為
[{optionValue:10, optionDisplay: 'Remy'},
 {optionValue:11, optionDisplay: 'Arif'},
 {optionValue:12, optionDisplay: 'JC'}]

必需改成
[{"optionValue":10, "optionDisplay": "Remy"},
 {"optionValue":11, "optionDisplay": "Arif"},
 {"optionValue":12, "optionDisplay": "JC"}]

DEMO 中使用的是 jQuery 1.2.3,而我下載的是 jQuery 1.6.2。版本不同,要求就變嚴格了。

有人說挫折可以鍛鍊心智的肌肉,從此次的經驗體會到,程式的除錯可以增強寫程式的功力,
讓我學會了jQuery 的error handling,firebug的功能。
也算是有一些小小的成長吧!

2010年11月4日 星期四

期指操作基本原則

 2010-11-04 22:51

期指操作基本原則

  1. 剛開始操作先以一口單試之,千萬不可過量買賣。
  2. 只操作主升段與主跌段行情。
  3. 不摸頭操作初跌段,不摸底操作初升段。
  4. 不看保證金餘額,不預設股價高低點位置,應確實遵循指標的多空轉折點出手。
  5. 耐心等待股價作完頭或者盤完底,僅操作右肩即將被突破的主趨勢單。
  6. 操作為求靈活,要有當沖的準備心態,進場之後立即設好出場點。
  7. 出現虧損時,當日應立即停損處理,絕不留倉到隔日。
  8. 獲利時可留倉,並尋找加碼點,但絕不由盈轉虧。
  9. 事先設好加碼點的停損單,一旦被攻克,便立即出場。
  10. 波段加碼點損失到一定程度,趁著還獲利時,將手中交易部位全數出清。
  11. 無適當理由不將波段單出股而預設停利點,錯失後面更豐厚的利潤。
  12. 帳面有盈餘時,酌量出金進行消費與奉獻的行為,可降低操作上的心理壓力。
  13. 重回期指操作原則 1。

<征服金融大海嘯--引導投資人透視未來> p.319

為了方便整理關於交易的資料,我打算慢慢的將資料放在下述網站

2010年10月20日 星期三

快與慢

 2010-10-21 12:12

每天的交易,好像高手過招一般,有時快速,有時緩慢。
昨天,台指期 10 月的結算日。美股大跌,台指期一開盤就跌了50點。開盤後,一路拉昇。
每拉一段,點數都快速跳動,進場之後,就如洗三溫暖一樣,一下就被洗出場。
作多,一下快速拉回,停損出場後,馬上快速飛昇,令人扼腕。
作空,那更是冒險,點數只是有去無回罷了。
結果,荷包快速失血。

於是,點數最後變成大漲百點以上,但自己卻大賠。
好玩的是,下午的法人進出統計,外資和本地法人都賣超,只有自營商大幅買超,那錢是誰賺去了呢。雖然新聞評論空單還是獲利。

今天,11月的開始,速度就變的慢吞吞的,心跳也就跟著變慢。

以前常打羽球,要做許多基本練習,長球、短球、殺球、防守、切球...
練習時,每次都只重複練習一種球。從長球開始熱身,然後短球,再練...
最後,小戰幾場。
上場後,就看誰的基本動作好,反應快,能快速回位,能控制節奏,誰就能勝。

到了交易場上,沒有人會餵球給我們作基本練習,只能拿白花花的銀子來當練習費。
要碰過所有的狀況,至少要過一整年吧。
也只有經過這麼久的時間,才能消去所有的銳氣,心中才會信服誰是老大。
銀子多,後盾強,都不一定能贏,我們這種在旁爭食的小魚,只能伺機而動,撈點油水。

沒別的捷徑,只能繼續練基本功,想辦法少交點學費吧。
嗯,長球、短球、快球、慢球....認真練吧!

2010年1月12日 星期二

用舊變壓器線圈做個馬達

2010-01-13 00:40

 一個舊的變壓器,把鐵心拆了,加上磁鐵做的轉子,接上換向電路(commutator),就成了轉動得飛快的小馬達。


整個接線的相片,電源是由電源供應器提供,電壓約5.5V,消耗電流約30mA~300mA。


2010年1月8日 星期五

新購 30 W 盤形發電機 Axial Flux Alternator

 2010-01-09 00:47

今天收到的新購買的盤形發電機,想要用來測試 Adams Motor (亞當斯馬達) 的效率。

下面是它的整個外觀。本體比CD大不了多少。

整個拆解開來,中間為 stator,兩邊為 rotor,轉起來有點像吊扇。

其中一個 Rotor 和Stator 的測面照,看一下它的厚度。軸承也拆下來,看看它的比例。
軸伸出本體外的長度約55mm。軸的直徑約16.2mm。組合後,本體的厚度約20mm。


Stator 的近照,灌膠有一些氣泡的洞洞,整體上還算不錯啦。

來一個 rotor 的近照。

下面是磁鐵和軸承的近照。磁鐵的直徑24mm,厚度3mm。感覺磁力不怎麼強,也許磁力越強,加上負載後,越不容易轉動吧。貼上註記的標籤,方便日後瞭解,因為組合回去後,大概就不會再拆它了。

接上10,000uF的電解電容,用手轉動,大概有15V的電壓。接上1 ohm的電阻,幾乎轉不動,用示波器看,peak-to-peak 大約 1V,那是 1A 囉,也就是約 1W 的輸出。

電容充到15V,連上線圈,只會稍稍讓磁鐵有氣無力的動一下,看來,想要在 motor-generator 組合起來,讓它能夠 self-running,還是白日夢一埸。關於 free-energy 的實驗,也許就到此為止,還是先把讀完學位的短期目標完成後,改日再玩這看起來像沒啥希望的興趣吧。:)

2009年12月26日 星期六

用舊硬碟做個最簡單的 Adams Motor

 2009-12-27 00:45

!! 注意安全,強力磁鐵是危險物品,一定要注意操作的安全 !!


把舊硬碟拆開,在碟盤黏上4顆磁鐵,買梱繞好的漆包線,中間插上幾根鐵釘,再接上電池和磁簧開關,這樣就做好一個會轉的Adams Motor (亞當斯馬達)了。簡單吧!!


參考網址 http://www.simplemotor.com/rsmotor.htm

詳細作法,請看下面的連結
http://sites.google.com/site/ageechen/free-energy/adams-motor/old-hd-adams-motor

數據:
線圈: #29 (0.35mm),重量80g,線圈 內徑 14mm,外徑30mm,長度 30mm。電阻 18 ohm,空心時電感 20 mH,插入鐵心 69 mH。

鐵心: 7根鐵釘,長度75mm,匝在一起總直徑 10mm。電壓 10~20V,電流約 240mA。

磁簧開關: 長15mm,外徑 2.5mm。

磁鐵: 單顆 N35,20mm*10mm*2mm,每一極用6個堆疊在一起,共4極。

硬碟: 3.5"。

次級線圈: #29 (0.35mm),重量200g,線圈 內徑 20mm,外徑48mm,長度 32mm。電阻 49.3 ohm,空心時電感 121 mH,插入鐵心 255 mH。

電源: 18V,0.32A (有次級線圈串1 ohm電阻時),0.24A(無次級線圈)

驅動線圈電壓(未加拾取線圈,磁簧開關未併bemf二極體,電源 18.2V)




拾取線圈電壓,串1 ohm電阻,磁簧開關併bemf二極體,




不過第2圖的數據,正確性可能有問題,因為10V的電壓,流過1 ohm的電阻,電流高達 10A,功率將是 100W,那線圈和電阻應該都早已不保。



981230 數據:
驅動線圈 1591 圈,18 ohm,83 mH
pickup coil 2546圈,50 ohm,230 mh。

disk: 直徑 95mm,磁鐵間隔 50mm,寬20mm。

網誌存檔