quartus10.0在fc14上的安装
因为要在Altera的De2-70的板子上跑leon3的平台了,所以在fedora下装个quartus玩玩。下载quartus10.0 for linux的过程也相当的搞笑,从altera的官网上下了2天没下下来,由于是教育网用了代理之后也只有几十k的速度,随后又叫同学在电驴上找了个资源,7.1G,好不容易下下来了,可是更悲剧的是居然下的是windos的版本,还以为这么大的安装文件会同时含有两个系统的呢。就在走投无路时想起了工大的最大的软件分享ftp,于是到上面去看看,结果就在Engineering.General/EDA/这个目录下居然有Altera公司的软件,进去一看果然有Quartus II.V10,下载速度最快达到8M,这下可High了!
很快就下完了,于是挂载到fedora下,./setup,结果没有出现安装界面,只是几行错误提示
“Starting GUI. If nothing shows up, or you don't have an X display, run:
./setup --help
for commandline usage.
NOTE: All output has been redirected to /tmp/altera_setup.log,在网上查了以下是libX11.so.6的依赖问题,我们需要让quartus调用我们系统下的/usr/lib下的libX11.so.6文件,而不是.../altera_installer/bin下的那个,mv .../altera_installer/bin/libX11.so.6 .../altera_installer/bin/libX11.so.6.bak,然后再执行./setup就可以一路安装下去了。
安装完成后更新PATH,echo "export PATH=$PATH:/opt/Programs/altera/10.0/quartus/bin/" >> ~/.bashrc,source ~/.bashrc,然后就可以执行quartus了,问题又出现了“quartus: error while loading shared libraries: libsys_cpt.so: cannot enable executable stack as shared object requires: Permission denied“,还以为是没有破解的原因所以没法运行,就去CSDN上下了个破解文件,替换掉.../linux/下的libsys_cpt.so,可是还是同样的错误,看了网上的破解方法说需要改libsys_cpt.so来完成破解,需要一个hex编辑器,网上查过之后说配置以下vim就能直接打开hex类型的文件了,在vim下输入:help hex就可以找到.vimrc的配置说明,
" vim -b : edit binary using xxd-format! augroup Binary au! au BufReadPre *.bin let &bin=1 au BufReadPost *.bin if &bin | %!xxd au BufReadPost *.bin set ft=xxd | endif au BufWritePre *.bin if &bin | %!xxd -r au BufWritePre *.bin endif au BufWritePost *.bin if &bin | %!xxd au BufWritePost *.bin set nomod | endif augroup END
只需要把这段添加到.vimrc中,然后将bin全部替换成所要编辑的二进制文件的扩展名即可,":%s/bin/so/g",然后容vim就可以直接打开.so文件修改了,修改的地址可以通过两种方法获得,其实就是找到函数l_pubkey_verify相对于文件的位置,Quartus验证license的key就是调用libsys_cpt.so中的这个函数,返回0则认为合法,所以就在函数的入口点直接改成
xor %eax, %eax
ret
即可,也就是16进制的0x31 0xc0 0xc3,那么怎么获得函数的入口地址呢?两种方法,其一利用gdb,执行
gdb> file libsys_cpt.so
gdb> info function l_pubkey_verify
还有一种方法就是利用nm工具,nm libsys_cpt.so | grep l_pubkey_verify,这样就可以找到入口地址进行修改了,我的返回结果是
000a7783 W l_pubkey_verify,改完了之后就应该没问题了,可是还是提示“cannot enable executable stack as shared object requires: Permission denied“这才意识到是权限问题,上网查了以下fedora对于运行.so文件的相关问题,在Fedora及RedHat下,Selinux太过严格。可以将Selinux置为“禁止”,这里我没有禁止,只是打开了一个控制开关
#setsebool -P allow_execstack 1
然后执行quartus就OK了。
接下来就是license的问题了,网上说直接找个windows下的license.dat文件替换网卡物理地址就行了。
听说linux下的USB-Blaster很难弄,正好在安装过程中发现一篇文章讲如何设置的,特挂载此,以后在研究以下
http://bbs.pku.edu.cn/bbs/bbstcon.php?board=Admin1_lobby&threadid=2026459