原创 【博客大赛】【小梅哥FPGA】闹心的gcc-linaro-arm-linux-gnueabihf编译器——Floating ...

2018-5-27 22:03 7873 32 9 分类: FPGA/CPLD 文集: FPGA深入学习
  今天在继续编写示波器(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日星期日
武汉 光谷

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户3883464 2018-9-17 20:02

我刚开始学FPGA ,我也有这个想法用de1的板子做一个示波器,可是我技术太low啊。
小梅哥以后可都跟着你混了。

wfengyin 2018-5-31 16:43

厉害了,小梅哥!我辈之学习榜样

用户3881044 2018-5-30 16:59

看了你的学习经历深感佩服,想想职业经历感到非常惭愧,大学毕业进入国企开始混日子,曾经也有电子梦,但是。。。。。还是让生活和岁月给磨灭了!!

qwqr3231 2018-5-28 11:20

谢谢分享
相关推荐阅读
小梅哥 2019-09-04 22:10
小梅哥FPGA时序分析笔记(6.2)深入现象看本质——庖丁解牛之FPGA内数据传输模型
通过上一节,我们了解了FPGA内部数据的传输形式,接下来我们就可以根据上一节的内容来总结一下FPGA内部的数据传输模型了。 时钟和数据传输路径 通过上一节内容中,我绘制的那个FPGA内部数据在逻辑...
小梅哥 2019-09-01 21:28
小梅哥FPGA时序分析笔记(6.1)深入现象看本质——庖丁解牛之FPGA可编程原理
上一次发博客,已经是2个月前了,这中间两个月,干了件很有意义的事情,尤其是对于自己来说,感觉学到了非常多的知识和经验,每天都很忙,忙到没时间逛网站博客,终于忙完闲下来了,连载的事情可不能忘,终于可以书...
小梅哥 2019-07-02 08:57
小梅哥FPGA时序分析笔记(五)I/O约束显神威——深入龙潭
大家一定对我上一节的突然结尾表示一脸茫然:我是来学习时序约束的,然后你告诉我时序约束里面IO约束很重要,然我又跟着你的文章继续往下看,本以为你就要讲如何进行IO约束了,结果呢,你一个取反时钟就把我们打...
小梅哥 2019-06-30 11:07
小梅哥FPGA时序分析笔记(四)I/O时序定成败——化险为夷
小梅哥FPGA时序分析从遥望到领悟系列没有遇见过I/O时序问题,没有通过I/O约束方式实际解决过I/O时序问题,就很难明白I/O约束的重要性,也很难相信各种EDA软件真的有那么的傻白甜。 我遇到的最...
小梅哥 2019-06-22 10:32
小梅哥FPGA时序分析笔记(三)时钟约束真重要——事实说话
小梅哥FPGA时序分析从遥望到领悟系列以前,那是在以前,经常有网友(原谅我行文动不动就是网友说,网友问,毕竟我是卖开发板的,正面接触学FPGA的网友相对多一些,所以这些也都是事实存在的事情)问我:小梅...
小梅哥 2019-06-21 10:33
小梅哥FPGA时序分析笔记(二)时钟质量是生命——初遇时序
小梅哥FPGA时序分析从遥望到领悟系列第一次遇到时序问题并通过相应的手段解决问题,算是2年前做百兆以太网图像传输的时候了吧。当时遇到的问题为:同一个工程,每次编译结果的效果都不一样,有的时候编译了,下...
EE直播间
更多
我要评论
4
32
关闭 站长推荐上一条 /3 下一条