安裝 Quartus 9.1 for Linux

Altera 發行的 Quartus 進展很快,現在(2011.07.26)已經發行到11版了。基於經濟因素,只能用試用版,進行學術上的研究,所以使用舊一點的版本,比較能夠找到多一點的資源。現在就來裝 9.1 版吧。

感謝 Altera 的大方,雖然知道有人長久試用該軟體,還是能夠下載歷史版本的安裝套件,就先至官方網站下載安裝套件吧。

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

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

裝好之後, 要對其中一個檔加工一下, 才能正常編譯。請參考 <對於Quartus II For Linux的破解> http://blogardener.com/?p=146。

要修改的檔案是 libsys_cpt.so文件,在linux的目錄下。具体先是通

过shell 的 GNU 调试器(gdb)找l_pubkey_verify函数的位置并记录下来,位置為0x000a61af。然后使用十六進制编輯器 GHex 將 l_pubkey_verify (0x000A61AF) 起始的3个字节(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 後,位址變了,小心點。

另外,有好奇寶寶問 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

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

不過,我加上此選項後,就開不了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

要 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

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

之前的筆記

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

# 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翻譯的俄國網頁,神奇吧!