今天在继续编写示波器(just for fun)工程,该工程的波形显示和处理界面是在Linux系统上编写程序实现的。应用程序的编写是使用的17.1版本的Quartus软件配套的DS-5软件中自带的arm-linux-gnueabihf工具链,在软件安装目录下(D:\intelFPGA\17.1\embedded\ds-5\sw\gcc)有一个说明文件,说明该编译器的版本为2014.04版本,是4.8.3的版本。而Linux内核是在Ubuntu中编译的,在Ubuntu中使用的编译器版本号为4.7.3。
为什么要用4.7.3呢?其实在这之前我也安装过4.8.2的编译器,编译器使用的是大名鼎鼎的linaro编译器,但是编译的时候一直通不过,一直提示什么您的编译器太bug了。报错原文如下:
error: #error Your compiler is too buggy
在网上查阅相关信息得知这个问题是4.8.0到4.8.2版本的编译器有bug造成的,而我从launchpad网站下载的编译器最新的是2013.10版本,该版本还是是4.8.2的,所以没法解决这个问题。(忍不住吐槽下,网站更新这么不及时)。所以当时为了急于看到结果,就用了一个之前下载的用过没问题的4.7.3版本的编译器。
使用4.7.3版本编译出来的内核,运行DS5中4.8.3编译的应用程序,之前写的程序一切都好,只是今天因为需要,所以有一个计算,是根据采样率计算每个栅格代表的刻度。其计算公式为:
gird_time = x/sample_rate = 1*10^11 / sample_rate;
在没加这个计算公式之前,一切都还好,一旦加入这个计算,就开始报Floating Point Exception的错误了。
所以,要解决这个问题,只能统一编译器版本。(原谅我小白,在Ubuntu中和DS5中各用了一个编译器,没有像专业人士一样完全在Ubuntu中开发)。那么具体用哪个呢,我还是想尽量用最新的版本,所以选择将Ubuntu中的编译器也更新到4.8.3。前面说了,launchpad网站上是没有4.8.3的版本的,最新的都是有bug的4.8.2。因此决定去linaro官网看看,结果也很不幸,官网上最旧的都是4.9-2016.02了。
不敢贸然用这个版本,折腾出问题来了,耽误的是自己时间,所以就百度一下,然后就在CSDN上找到了对应的gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar,下载下来之后,解压到Ubuntu中,设置好环境变量并更新,然后编译内核,将编译得到的zImage文件更新到DE1-SOC开发板的SD卡中,再次启动,然后运行之前报错的程序,就正常工作了,再也没有报错。
下面附一张做的示波器界面,目前仅仅是把大致界面和波形显示做出来了,测量功能还没做,下一步就是加入测量功能了。网上常见的开源示波器都是使用的软件方式完成各项参数的测量的,但是咱这是基于SOC FPGA架构的示波器,使用FPGA来完成频率,相位,峰值,幅值,时间的测量不仅更高效,也会更精准,所以下一步就是编写Verilog代码来完成上述参数的测量了。
只是个玩具,高手勿喷,桌面太乱,凑合着看吧。
2018年5月27日星期日
武汉 光谷
用户3883464 2018-9-17 20:02
小梅哥以后可都跟着你混了。
wfengyin 2018-5-31 16:43
用户3881044 2018-5-30 16:59
qwqr3231 2018-5-28 11:20