这位网友你好,我是学电子信息工程专业的,
PLC是可编程控制器,主要应用在工厂的流水线,当然别处也可以,它主要由输入、输出、运算处理部分组成,PLC与其它几种控制器的区别在于它的是循环扫描的,而其它几种要自己编写循环指令才能循环运行。另外它的输入输出也与其它的不同,PLC输入输出一般为24V直流、或者220V交流,输出分为晶体管和继电器两种形式。而且有n多扩展模块,扩展的余地很大。比如可以扩展开关量输入输出、模拟量输入输出、串口通信、以太网通信、PID等等。种类十分繁多。
FPGA为现场可编程门阵列,通过编程改变硬件的结构(电路)来实现不同功能。输入输出一般为5V以内的逻辑电平,而非强电。
51单片机,是十分常用的单片机,可以看成是简单化的,低电压化的PLC,并且输入输出只能为逻辑电平。
ARM是一种嵌入式系统(在嵌入式系统中算是比较常用的一种)他的结构和单片机相似,可以说是升级了的单片机。功能比单片机强n多倍!同样输入输出为逻辑电平
谢谢采纳
以上是我个人的理解,如果楼主有兴趣,详细资料可以见一下网址
PLC
http://baikebaiducom/view/13561htm
FPGA
http://baikebaiducom/view/51371htm
51单片机
http://baikebaiducom/view/294753htm
ARM
http://baikebaiducom/view/11200htm
若不满意,请继续追问
1
请求中断
当某一中断源需要CPU为其进行中断服务时,就输出中断请求信号,使中断控制系统的中断请求触发器置位,向CPU请求中断。系统要求中断请求信号一直保持到CPU对其进行中断响应为止。
2
中断响应
CPU对系统内部中断源提出的中断请求必须响应,而且自动取得中断服务子程序的入口地址,执行中断 服务子程序。对于外部中断,CPU在执行当前指令的最后一个时钟周期去查询INTR引脚,若查询到中断请求信号有效,同时在系统开中断(即IF=1)的情 况下,CPU向发出中断请求的外设回送一个低电平有效的中断应答信号,作为对中断请求INTR的应答,系统自动进入中断响应周期。
3.
关闭中断
CPU响应中断后,输出中断响应信号,自动将状态标志寄存器FR或EFR的内容压入堆栈保护起来,然后将FR或EFR中的中断标志位IF与陷阱标志位TF清零,从而自动关闭外部硬件中断。因为CPU刚进入中断时要保护现场,主要涉及堆栈操作,此时不能再响应中断,否则将造成系统混乱。
4.
保护断点
保护断点就是将CS和IP/EIP的当前内容压入堆栈保存,以便中断处理完毕后能返回被中断的原程序继续执行,这一过程也是由CPU自动完成。
5.
中断源识别
当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入CS与IP/EIP两个寄存器。CPU转入相应的中断服务子程序开始执行。
6.
保护现场
主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。现场保护是由用户使用PUSH指令来实现的。
7.
中断服务
中断服务是执行中断的主体部分,不同的中断请求,有各自不同的中断服务内容,需要根据中断源所要完成的功能,事先编写相应的中断服务子程序存入内存,等待中断请求响应后调用执行。
8
恢复现场
当中断处理完毕后,用户通过POP指令将保存在堆栈中的各个寄存器的内容弹出,即恢复主程序断点处寄存器的原值。
9
中断返回
在中断服务子程序的最后要安排一条中断返回指令IRET,执行该指令,系统自动将堆栈内保存的 IP/EIP和CS值弹出,从而恢复主程序断点处的地址值,同时还自动恢复标志寄存器FR或EFR的内容,使CPU转到被中断的程序中继续执行。
DSP、MCU、FPGA、ARM、CPU简介
DSP:用于实现数字信号处理的微处理器芯片。
MCU:微控制器,又称单片机。
FPGA:现场可编程门阵列。
ARM:采用ARM架构的微处理器。
CPU:中央处理单元(Central Processing Unit)的缩写
CPU主要由运算器、控制器、寄存器组和内部总线等构成
总之一句话CPU无处不在。
嵌入式系统定义:根据国际电气和电子工程师协会(IEEE)的定
义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的
装置” 。
应用领域:单片机偏于一般的控制和事务型处理,而DSP适合数
字信号处理的各种运算,FPGA由于其极强的灵活性和适应性,一
般用于产品的原型开发,在航天领域有广泛应用。ARM一般嵌入
一些微操作系统,如Windows CE、Linux等,实时性强,提供简
单友好的图形界面,便于扩展,有很好的移植性,主要用于复杂
控制
Merry Go Round (Explicit) - Machine Gun Kelly
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry go round
Look
Summer day
Bobby and this girl would wake up every summer day
This boy and girl had nothing, they were runaways
So in love that now all they wanted was pain and so it came
Never had a silver spoon present in the past
Now at last, the spoon is present and so the boy wet it
Told her bring him a slab, a cotton swab, and a match
And told her one day they'll fly across the world and have a wedding
Like "baby I have a plan, come with me to this place
Baby give me your hand, now flip it give me a vein
Baby take off your belt, we'll use it as a restraint"
She sees that it starts to melt, he reaches inside a case
Fills the needle with food, flicks the needle with haste
Brings the needle to her, she isn't right in the face
The boy can tell that she's scared, he says "I love you, okay"
Then shoves it into her arm and says "how the fuck does that taste baby!"
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry go round
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry, merry, merry go round
Her dress drops, her head drops
Swiggin' out of a whiskey bottle, he just watches
But he was not Bobby, see Bobby had joined the army
Been gone for a couple months now she's messin' with everybody
Everyone of the dealers, everyone hears her squealing
Trading pussy for product, she did anything for that feeling
But then she started that feeling, early morning she's kneelin'
In front of the toilet look at her belly there's no concealing
That she's expecting a child
This woman is living foul
She's only 20 years old
And hardly can even smile
Ultrasound shows a baby that's barely over a pound
Sold everything in her house just trying to score an ounce
News of her baby's father was that he died in the war
Now that syringe is all that keeps her alive anymore
No mattress, so her and her child dyin' on the floor
As a letter's at the door reading:
"I'll be home tomorrow love, Bobby"
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry go round
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry, merry, merry go round
Knockin' at the door but doesn't get an answer
Bobby's nervous, his heart starts to beat faster
He hasn't talked to his girl in so long
She sold his phone for a hit, damn how he wish
that he could hear her laughter
But his drug hit her like a cancer
And he forgot 'cause he had left and cleaned his act up
Passenger seat in his Acura got a picture of 'em kissing
Under the words "happily ever after"
He walks into the house, it's a fuckin' disaster
Every step he takes his shoe crushes a capsule
Holds his breath, he knows what he smells isn't natural
Looks down, it's the body of the queen of his castle
"Baby please, baby please!!!"
"Wake up!!!"
He screams on his knees and he sees her hands around her stomach
Inside was a child
And realizes it was his
Summer day,
An entire family died on that summer day
'cause a facade made a girl give her love away
But those were Bobby's consequences that he had to pay
Love is pain
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry go round
Merry, merry, merry go round
I don't want to see you down
I don't want to see you frown
Merry, merry, merry go round
ARM是CPU,好比51单片机开发板FPGA是可编程逻辑器件,就是用编程(硬件描述语言)实现它内部的电路结构。我做个比喻吧,ARM呢就像是一个设计好的办公楼,那个部门负责什么事情都是定好的,你要做的就是合理调配部门资源合理搭配来完成你的目的。FPGA呢就是给你一大堆建筑材料和人员,你要它建成什么样子它就是什么样子!
ARM:是32位单片机,由于结构和计算速度的原因,目前适合做事务处理或者中低端应用,从中高级工控到简单语音/(不含视频)处理DSP:它从16位~32位,内部采用哈佛结构,特别适合数据处理。其中16位DSp适合中高级工控到简单语音/(不含视频)处理;其中32位DSp适合复杂语音//视频
处理FPGA:新型FPGA可以用内部乘法器/寄存器/内存块构造软核,例如构造ARM,则可以实现ARM的功能;若构造成DSP,则可以实现DSP的功能。不过FPGA的功耗较大,一般情况下构造ARM/DSP不如专用ARM/DSP方便,但是在高速信号处理时,可以采用并行结构,大大提高处理速度,甚至可以超过目前最快的DSP。
ARM(Adanced RISC Machines)是采用RISC指令集的嵌入式处理器;FPGA即Field Programmable Gate Array (现场可编程逻辑门阵列)是专用集成电路ASIC的一种,可认为是可编程ASIC。
CrossBuild很蛋疼的,以目标内核26x为例,我们需要以下基本包:
binutils-2231tarbz2
gcc-482tarbz2
glibc-218tarbz2
glibc-linuxthreads-25tarbz2
gdb-761tarbz2
linux-263414tarxz
mpfr-312tarbz2
mpc-101targz
gmp-513tarbz2
因为编译过程很费时,你要在bash配置文件中直接声明环境变量:
vim ~/bashrc
export TARGET=arm-linux-gnueabi
export PREFIX=/usr/local/arm/482
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin
#source ~/bashrc
以便下次工作继续恢复现场。
工具链创建:
先来安装mpfr、mpc、gmp。#号表示在root下工作。
#tar -xjf gmp-513tarbz2 &&cd gmp-513
#mkdir build && cd build && \
/configure --prefix=/usr/local/gmp --build=x86_64-linux-gnu && \
make && make install
OK,gmp done,Next,搞搞mpfr:
#tar -xjvf mpfr-312tarbz2 && cd mpfr-312
#/configure --build=x86_64-linux-gnu --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp &&\
make &&make install
OK, mpfr done, Next we build mpc:
#tar -xzvf mpc-101targz && cd mpc-101
mkdir build && cd build
#/configure --build=x86_64-linux-gnu --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr &&\
make &&make install
After, we need to copy linux-kernel-headers:
xz -d linux-263414tarxz
tar -xvf linux-263414tar
cd linux-263414
make menuconfig
这里我们不作任何个性,直接保存退出。
#make include/linux/versionh
#mkdir -p $TARGET_PREFIX/include
#cp -r /include/linux/ $TARGET_PREFIX/include
#cp -r /include/asm-generic/ $TARGET_PREFIX/include
#cp -r /arch/arm/include/asm/ $TARGET_PREFIX/include
然后编译binutils:
#tar -xjvf binutils-2231tarbz2
#cd binutils-2231
#mkdir build && cd build
#/configure --prefix=$PREFIX --target=$TARGET
#make
#make install
$TARGET得到一大堆工具,我就不一一介绍了。
接下来为ARM平台编译不带链接库的原初编译器,这一步称作恐龙蛋生小鸡。
解开tar -xjvf gcc-482tarbz2,并把mpfr-312tarbz2、mpc-101targz、gmp-513tarbz2也解开,去掉版本号放到gcc源目录下。
先删除 gcc下上述几个包,如果存在的话:
rm -rf mpfr-312 mpc-101 gmp-513
然后解包,并移入gcc下:
#tar -xjvf gmp-513tarbz2
#mv gmp-513 gmp
#mv /gmp /gcc-482
#tar -xjvf mpfr-312tarbz2
#mv mpfr-312 mpfr
#mv /mpfr /gcc-482
#tar -xzvf mpc-101targz
#mv mpc-101 mpc
#mv /mpc /gcc-482
可以编译gcc了:
#cd gcc-482
#mkdir build && cd build
#/configure --prefix=$PREFIX --target=$TARGET --without-headers --enable-languages=c --disable-threads --with-newlib --disable-shared --disable-libmudflap --disable-libssp --disable-decimal-float &&\
make all-gcc && make install-gcc && make all-target-libgcc &&\
make install-target-libgcc
如果没出错的话,这里的预编译就快搞好了,擦把汗先。
#tar -xvf glibc-218tarxz
#tar -xvf glibc-linuxthreads-25tarbz2 --directory=/glibc-218
# cd glibc-218
# mkdir build
# cd build
# CC=$TARGET-gcc
#export CFLAGS="-g -O2 -march=arm"
# ln -s /usr/local/arm/482/lib/gcc/arm-linux-gnueabi/482/libgcca /usr/local/arm/482/lib/gcc/arm-linux-gnueabi/482/libgcc_eha
这里编译好的glibc就是for arm的glibc了。
创建configcache配置文件
# vim configcache
libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes
libc_cv_arm_tls=yes
# /configure --host=$TARGET --target=$TARGET --prefix=$TARGET_PREFIX --enable-add-ons --disable-profile --cache-file=configcache --with-binutils=$PREFIX/bin --with-headers=$TARGET_PREFIX/include
#make all
#make install
预编译环境搭好,我擦已经下班了,明天继续。
好了,为正式开始 arm 铸刀:
# cd gcc-482/build/
# rm -rf
# /configure --prefix=$PREFIX --target=$TARGET --enable-shared --enable-languages=c,c++
# make
# make install
这就是arm版的gcc了
编译gdb
# tar -xvf gdb-761tarbz2
# make
# make install
创建链接
# cd $PREFIX/bin
# ln -s arm-linux-gnueabi-addr2line arm-linux-addr2line
# ln -s arm-linux-gnueabi-ar arm-linux-ar
# ln -s arm-linux-gnueabi-as arm-linux-as
# ln -s arm-linux-gnueabi-c++ arm-linux-c++
# ln -s arm-linux-gnueabi-c++filt arm-linux-c++filt
# ln -s arm-linux-gnueabi-cpp arm-linux-cpp
# ln -s arm-linux-gnueabi-elfedit arm-linux-elfedit
# ln -s arm-linux-gnueabi-g++ arm-linux-g++
# ln -s arm-linux-gnueabi-gcc arm-linux-gcc
# ln -s arm-linux-gnueabi-gcc-463 arm-linux-gcc-463
# ln -s arm-linux-gnueabi-gcov arm-linux-gcov
# ln -s arm-linux-gnueabi-gdb arm-linux-gdb
# ln -s arm-linux-gnueabi-gdbtui arm-linux-gdbtui
# ln -s arm-linux-gnueabi-gprof arm-linux-gprof
# ln -s arm-linux-gnueabi-ld arm-linux-ld
# ln -s arm-linux-gnueabi-ldbfd arm-linux-ldbfd
# ln -s arm-linux-gnueabi-nm arm-linux-nm
# ln -s arm-linux-gnueabi-objcopy arm-linux-objcopy
# ln -s arm-linux-gnueabi-objdump arm-linux-objdump
# ln -s arm-linux-gnueabi-ranlib arm-linux-ranlib
# ln -s arm-linux-gnueabi-readelf arm-linux-readelf
# ln -s arm-linux-gnueabi-run arm-linux-run
# ln -s arm-linux-gnueabi-size arm-linux-size
# ln -s arm-linux-gnueabi-strings arm-linux-strings
# ln -s arm-linux-gnueabi-strip arm-linux-strip
这把可以杀人了,开始为你树莓派编译软件吧。
ARM、DSP、FPGA的技术特点和区别
ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软 件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四 个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前ARM在手持设备 市场占有90以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。
DSP(digital singnal processor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。一个数 字信号处理器在一块不大的芯片内包括有控制单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存储器,并可以与一定数量的外 部设备互相通信,有软、硬件的全面功能,本身就是一个微型计算机。DSP采用的是哈佛设计,即数据总线和地址总线分开,使程序和数据分别存储在两个分开的 空间,允许取指令和执行指令完全重叠。也就是说在执行上一条指令的同时就可取出下一条指令,并进行译码,这大大的提高了微处理器的速度 。另外还允许在程 序空间和数据空间之间进行传输,因为增加了器件的灵活性。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其 他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器, 是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。由于它运算能力很强,速度很快,体积很小,而且采用 软件编程具有高度的灵活性,因此为从事各种复杂的应用提供了一条有效途径。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
FPGA是英文Field Programmable Gate Array(现场可编程门阵列)的缩写,它是在PAL、GAL、PLD等可编程器件的基 础上进一步发展的产物,是专用集成电路(ASIC)中集成度最高的一种。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个 新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB (Input Output Block)和内部连线(Interconnect)三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实 现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种 半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高 性能CPU,下至简单的74电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由 的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电 路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。FPGA是由存放在片内RAM中的程序来设置其工作状态的, 因此工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM 中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可 以产生不同的电路功能。因此,FPGA的使用非常灵活。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很 多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
区别是什么?:ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面,而DSP主要是用来计算的,比如进行加密解 密、调制解调等,优势是强大的数据处理能力和较高的运行速度。FPGA可以用VHDL或verilogHDL来编程,灵活性强,由于能够进行编程、除错、 再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这 种能力可以用来进行系统升级或除错。
新手在学习时,最好能有51单片机的基础这样今后学起别的片子来会快很多推荐你们用铁牛单片机实验板F1版
个人理解中断嵌套的寄存器备份是这样进行的,进入一级中断便进行一次全套寄存器的压栈操作,压栈是把寄存器里面的值保存到栈区(属于内存区域,而并非你说的后背状态寄存器SPSR,其实后背状态寄存器SPSR也要一起压入栈区),每压入一个寄存器,SP会移动相应的距离,不会重叠;每退出一级中断便进行一次全套寄存器的出栈操作,这样就实现了保护现场和恢复现场。可以通过编译器反汇编码窗口查看中断压栈、出栈的实现。
关于优先级是有两种的,叫默认优先级和嵌套优先级,假如A,B两个中断,如果A比B嵌套优先级(通过优先级寄存器设置)更高,就不需要看默认优先级了,A、B同时发生中断时A中断先执行而B后执行,而且B中断执行之间A可以抢断(嵌套)B的中断服务程序,B不可以抢断A;而如果嵌套优先级一样的话,只是A默认优先级比B更高(不需要设置 ),只能支持A、B同时中断时A先执行,而A不能嵌套B了,有的CPU甚至硬件上不支持嵌套,需要模拟嵌套,这个跟CPU平台有关。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)