自动化网-工控人家园官网

当前位置: 主页 > 知识资料 > 论文总结 >

嵌入式开发中DSP与FPGA的关系-嵌入式Linux基于Qt开发GPIO应用

时间:2017-03-02 11:03来源:未知 作者:admin 点击:
嵌入式开发中DSP与FPGA的关系-嵌入式Linux基于Qt开发GPIO应用
常所说的单片机侧重于控制,不支持信号处理,属于低端嵌入式处理器,arm可以看做是低端单片机升级版,支持操作系统管理,更多接口如网卡,处理能力更强;fpga是可编程逻辑器件,侧重时序,可构建从小型到大型的几乎所有数字电路系统,DSP主要完成复杂的数字信号处理,如fft,通常一个复杂系统可以由单片机、arm、FPGA、dsp中的一种或几种构成,各有优势和不足。
  dsp通常用于运算密集型,fpga用于控制密集型,许多人都用dsp高算法,用fpga 作外围控制电路。
  去年xilinx在北京介绍FPGA和DSP融合的时候,大有席卷DSP和FPGA市场之势。但后来在实际中发现其阻力也是不小的,关键是很难搭配FPGA和DSP的比重。我们知道FPGA擅长各种控制(也包括适时性非常高的信号处理如移动通信中基带滤波,该滤波用C5000,C6000很难胜任,除非多芯片并行),DSP擅长各种信号处理运算,但在一个系统中究竟有多大的控制电路,有多少密集运算?变数是很大的,我们不可能用一个芯片解决这个问题。对于运算密集性系统,我们如果使用这种芯片的话很有可能还要其他DSP,那么我们需要了解多种DSP编程和接口设计,这是否与我们的初衷背道而驰呢?
  上面都是一些基本概念的介绍,下面我就来通俗介绍一下,在DSP里,你是一个软件设计者,硬件已经完全固化,你所要做的,就是在这个固定的硬件平台实现其功能的最优化,一般TI的DSP涉及最多的是一些基本的BIOS操作系统之间的任务调度,以及算法改进与优化等待, DSP的关键优势包括其对于新型及复杂算法时的更短的开发时间,以及能够运行多种算法的灵活性。
  而对于FPGA来说,你是一个硬件设计者,FPGA就是一张白纸,上面写什么,画什么都取决于你。同样一片FPGA,菜鸟和高手实现的功能会是天壤之别,FPGA的最大优势在于硬件实现已及通过并行处理实现的效率增益。使用FPGA,您大多的时间并非进行算法设计与优化,而是逻辑设计与时序约束等等。
  FPGA与DSP关系:
  1、 DSP侧重于核心算法处理,FPGA侧重于外围控制处理。
  2、 DSP内是用C语言编写,语言执行是串行处理,效率比较低。
  FPGA侧重于并行处理,效率较高;还有交合逻辑(外围接口、通讯等);
  FPGA发展领域:
  使用领域:电子设计、通讯、汽车、军工
  不适合:消费类产品(手机)—FPGA功耗高;
  FPGA技术难点:
  1、 需要专门的硬件语言来开发
  2、 FPGA灵活性比较高,设计是由工程师来决定,需要测试验证
  主图:

嵌入式Linux基于Qt开发GPIO应用

简介

基于Embedded Linux系统的嵌入式设备使用跨平台GUI开发工具Qt来开发嵌入式应用已经非常普遍,本文就以GPIO应用为示例演示下如何通过Qt的集成开发环境Qtcreator来开发嵌入式Linux应用.

本文所采用的硬件平台来自与Toradex发布的基于NXPiMX7 SoC的ColibriiMX7 ARM计算机模块配合ColibriEva Board.

2). 准备

a).Toradex ColibriiMX7S (基于NXPiMX7S SoC)计算机模块配合ColibriEva Board开发载板.

b). EmbeddedLinux 使用基于OpenEmbedded框架重新编译的集成Qt5.5的Toradex Linux imagereleaseV2.6.1版本以及对应的SDK.这个可以结合这里的说明自己进行编译,也可以通过这里直接下载编译好的image和SDK文件.

c).合适的Qtcreator版本,本文使用为3.1.1版本.

3). 软硬件安装

a).由于只是简单展示利用Qt开发GPIO应用,本文只使用一个GPIO来驱动ColibriEva Board上面自带的LED.

b).硬件连接,将ColibriEva载板X10连接器SODIMM_127 和X21连接器LED1连接,并去掉对应的X11跳线帽。其他就是标准的串口网口等连接用于调试程序.

c).将上面准备好Linux image (如Colibri_iMX7_LinuxImageV2.6.1_20170220.tar.bz2)按照这里的说明更新到ColibriiMX7计算机模块上面.

d).安装Qtcreator, 具体方法这里不赘述.

e).在Ubuntu开发主机上面,运行下面命令安装SDK, 安装位置默认为”/usr/local/oecore-x86_64”,当然也可以自行设置, 本文保留默认选项.

------------------------------

toradex@toradex-ubuntu:chmod a+xangstrom-glibc-x86_64-armv7at2hf-vfp-neon-v2015.12-toolchain.sh

toradex@toradex-ubuntu:./angstrom-glibc-x86_64-armv7at2hf-vfp-neon-v2015.12-toolchain.sh

------------------------------

4).Qtcreator配置

a).打开Ubuntu开发主机命令行,通过下面命令启动Qtcreator

------------------------------

toradex@toradex-ubuntu: source/usr/local/oecore-x86_64/environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi

toradex@toradex-ubuntu: $ echo$OE_QMAKE_CXX

arm-angstrom-linux-gnueabi-g++-march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard--sysroot=/usr/local/oecore-x86_64/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi

toradex@toradex-ubuntu:qtcreator

------------------------------

b).在qtcreator界面下,进入Tools->Options选项菜单,进入Device选项

./点击”Add”, 并选择”Generic Linux Device”添加新设备,设置好设备名字和IP地址,用户名默认为”root”,密码空.


c). 进入Build & Run菜单选项

./首先进入Qt Versions, 点击”Add”添加,指定SDK qmake, 其位置位于”/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/qt5/qmake”.

./进入Compilers, 点击”Add”添加GCCC++编译器,其位置位于”usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-g++”,不过更新版本的Qtcreator下这里还需要添加C编译器,也在同一目录下,为”arm-angstrom-linux-gnueabi-gcc”. 另外其他配置上”Platform codegenflags”设置为”‘${CFLAGS}’”,“Platform linker flags”设置为”‘${LDFLAGS}’”.

./进入Debuggers, 点击”Add”添加GDB,其位置位于”/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gdb”

./进入Kits, 点击”Add”添加,如下讲上述设定的内容适配,新版本Qtcreator在Compiler这里会分开C和C++分别设定.

5). Qtcreator GPIO应用开发

a). Qtcreator 创建一个新项目, New Project-> Applications -> QtWidgets Application -> Location (任意)-> Kit (指定上面创建的kit)-> Class Information (默认).

b). 在qtcreator项目下新建GPIO操作相关的header和source文件

./ Header 文件代码如下,主要定义一些全局环境变量和声明GPIO基本的操作函数

https://github.com/simonqin09/QtGPIOProject/blob/master/GPIOSet.h

./ source文件代码如下,主要是GPIO基本操作函数

https://github.com/simonqin09/QtGPIOProject/blob/master/GPIOSet.cpp

c). 进入Forms -> mainwindow.ui, 如下编辑界面,添加一个”button”控件和一个”lineedit”控件.同时通过”go to slot” 添加”button” 的”clicked” 动作.

d). 修改mainwindow header和source文件,实现GPIO控制

./ Hearder文件代码如下,只是声明了几个要用的变量

https://github.com/simonqin09/QtGPIOProject/blob/master/mainwindow.h

./ source文件代码如下, 在窗口初始化时候同时初始化GPIO(这里使用SODIMM127作为GPIO输出pin),另外在”clicked”下面处理按键反转GPIO输出的动作控制.

https://github.com/simonqin09/QtGPIOProject/blob/master/mainwindow.cpp

e). 编译应用程序,讲编译号的可执行文件scp复制到ColibriiMX7模块系统上面执行,效果如下:

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片