学嵌入式前必须弄清楚的两大问题
本文是写给准备嵌入式学习,而又没想好要学ARM7还是ARM9,或者对ARM7与ARM9的区别不是很了解的初学者。
由于职业的关系,经常会回答一些ARM初学者的问题,虽然问题千奇百怪,但以下两个问题绝对具有代表性。
ARM7和ARM9的都有些什么区别?
我准备学ARM,但不知是选ARM7还是ARM9好?
也许这些问题在大婶的眼里已不是问题,但对于初学者确实很有必要弄清楚。先说下:ARM7和ARM9的区别。
1. 时钟频率的提高
虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构;,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,
在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上。
2 指令周期的改进
指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,
性能的提高在30%左右。
3.MMU(内存管理单元)
ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。
ARM9一般是有MMU的,ARM9940T只有MPU ,不是一个完整的MMU。
这一条很重要,MMU单元是大型操作系统必需的硬件支持,如LINUX;WINCE等。这就是说,ARM7一般只能运行小型的实时系统如UCOS-II,eCOS等,而ARM9无此限制,一般的操作系统都可以移植。其实即使ARM720T能支持LINUX;WINCE等系统,也鲜有人用,因为以ARM7的运行速度跑这种大型操作系统,实在有点吃力。再者两者的应用领域明显不同,也无此必要。
4. ARM9比ARM7提供了更好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE调试技术的内核。
5.
在从ARM7到ARM9的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架构基础也保持一致。
二。 再来说一下初学者是选ARM7还是ARM9?
1)明确目的
学习为应用。你学ARM准备用在什么地方,如果是一般性控制系统或仅仅用来替换8位16位机,ARM7显然是首选;但如果用在网络通信或大型的音视频处理等,则ARM9较合适。
2)自身基础
学习ARM的一般有三类人:
一是计算机专业的:这类人对操作系统等软件知识了解较多,而对硬件知识知之甚少,显然这类人学ARM的话还是做软件好,可以基于LINUX,WINCE等操作系统的ARM9更能符合这类人的要求,
当然也有很多计算机专业的人从事ARM7系统的应用软件编写的。但是搞底层的就很少了。
二是电子类专业的:这类人的硬件基础相对较好,相反操作系统,数据库等软件知识则差强人意。因此电子专业的人员大多熟悉单片机,用单片编写点小程序不在话下,
但要用ARM做较大型的软件则有点力不从心,尤其是LINUX、WINCE这种操作系统不是三两个月能搞定。建议这类人如无特别需要还是从ARM7和小型操作系统学起。
够用就好,不要盲目追求高端。有一点要注意:并不是从事ARM9的就比ARM7工资高,反而ARM7的就业机会比ARM9多,这很好理解,好比金字塔,越往顶越小。
三是软硬件基础都不太好的:这类人员有确实需要的,也有赶时髦的,大可曲线救国,搞懂单片机后,ARM7就不难了。
也可以看韦东山老师的教程,先把ARM9当ARM7,再学UBOOT,LINUX
最后说一点关于MTK开发板的,初学者买个开发板确实很有必要,但也要选择合适的,初学者合适的就是,资料齐全,有配套教程和学习指导,再加上较及时的技术支持。
单片机常见问题
1、单片机晶振不起振原因分析
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1) PCB板布线错误;
(2) 单片机质量有问题;
(3) 晶振质量有问题;
(4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题;
(5) PCB板受潮,导致阻抗失配而不能起振;
(6) 晶振电路的走线过长;
(7) 晶振两脚之间有走线;
(8) 外围电路的影响。
解决方案,建议按如下方法逐个排除故障:
(1) 排除电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。
(2) 排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。
(3) 排除晶振为停振品的可能性,因为你不会只试了一二个晶振。
(4) 试着改换晶体两端的电容,也许晶振就能起振了,电容的大小请参考晶振的使用说明。
(5) 在PCB布线时晶振电路的走线应尽量短且尽可能靠近IC,杜绝在晶振两脚间走线。
2、单片机晶振电路中两个微调电容不对称会怎样?相差多少会使频率怎样变化?我在检测无线鼠标的接受模块时,发现其频率总是慢慢变化(就是一直不松探头的手,发现频率慢慢变小)晶振是新的!
答:电容不对称也不会引起频率的漂移,你说的频率漂移可能是因为晶振的电容的容量很不稳定引起的,你可以换了试,换两电容不难,要不就是你的晶振的稳定性太差了,或者你测量的方法有问题.
3、51单片机时钟电路用12MHZ的晶振时那电容的值是怎样得出来的?拿内部时钟电路来说明吧!
答:其实这两个电容没人能够解释清楚到底怎么选值,因为22pF实在是太小了。
这个要说只能说和内部的振荡电路自身特性有关系,搭配使用,用来校正波形,没有人去深究它到底为什么就是这么大的值。
4、晶振为何被要求紧挨着IC,单片机晶振不起振?
答:原因如下:
晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈 后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。当电路中的激励电信号和晶振的标称频率相同时,电 路就能输出信号强大,频率稳定的正弦波。整形电路再将正弦波变成方波送到数字电路中供其使用。
问题在于晶振的输出能力有限,它仅仅输出以毫瓦为单位的电能量。在 IC(集成电路) 内部,通过放大器将这个信号放大几百倍甚至上千倍才能正常使用。
晶振和 IC 间一般是通过铜走线相连的,这根走线可以看成一段导线或数段导线,导线在切割磁力线的时候会产生电流,导线越长,产生的电流越强。
现实中,磁力线不常见,电磁波却到处都是,例如:无线广播发射、电视塔发射、手机通讯等等。晶振和IC之间的连线就变成了接收天线,它越长,接收的信号就 越强,产生的电能量就越强,直到接收到的电信号强度超过或接近晶振产生的信号强度时,IC内的放大电路输出的将不再是固定频率的方波了,而是乱七八糟的信 号,导致数字电路无法同步工作而出错。
所以,画PCB设计(电路板)的时候,晶振离它的放大电路(IC管脚)越近越好。
5、单片机晶振与速度的疑问,执行一条指令的周期不是由晶振决定的吗。那么比如51单片机和MSP430,给51接高速晶振,430接低速的,是不是51跑的要快?是不是速度单片机速度仅仅与晶振有关,关键是单片机能不能支持那么大的晶振?我的理解对吗?
答:每个单片机的速度是受到内部逻辑门电平跳变速度的**的。
你说的没错,对于一个51,给他用更高的晶振,速度会快些。
但是对于高级的单片机就不一样了。高级单片机内部,一般都是有频率控制寄存器的,所以,简单的增加晶振,可能达到单片机的极限,导致跑飞。
由于职业的关系,经常会回答一些ARM初学者的问题,虽然问题千奇百怪,但以下两个问题绝对具有代表性。
ARM7和ARM9的都有些什么区别?
我准备学ARM,但不知是选ARM7还是ARM9好?
也许这些问题在大婶的眼里已不是问题,但对于初学者确实很有必要弄清楚。先说下:ARM7和ARM9的区别。
1. 时钟频率的提高
虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构;,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,
在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上。
2 指令周期的改进
指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,
性能的提高在30%左右。
3.MMU(内存管理单元)
ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。
ARM9一般是有MMU的,ARM9940T只有MPU ,不是一个完整的MMU。
这一条很重要,MMU单元是大型操作系统必需的硬件支持,如LINUX;WINCE等。这就是说,ARM7一般只能运行小型的实时系统如UCOS-II,eCOS等,而ARM9无此限制,一般的操作系统都可以移植。其实即使ARM720T能支持LINUX;WINCE等系统,也鲜有人用,因为以ARM7的运行速度跑这种大型操作系统,实在有点吃力。再者两者的应用领域明显不同,也无此必要。
4. ARM9比ARM7提供了更好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE调试技术的内核。
5.
在从ARM7到ARM9的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架构基础也保持一致。
二。 再来说一下初学者是选ARM7还是ARM9?
1)明确目的
学习为应用。你学ARM准备用在什么地方,如果是一般性控制系统或仅仅用来替换8位16位机,ARM7显然是首选;但如果用在网络通信或大型的音视频处理等,则ARM9较合适。
2)自身基础
学习ARM的一般有三类人:
一是计算机专业的:这类人对操作系统等软件知识了解较多,而对硬件知识知之甚少,显然这类人学ARM的话还是做软件好,可以基于LINUX,WINCE等操作系统的ARM9更能符合这类人的要求,
当然也有很多计算机专业的人从事ARM7系统的应用软件编写的。但是搞底层的就很少了。
二是电子类专业的:这类人的硬件基础相对较好,相反操作系统,数据库等软件知识则差强人意。因此电子专业的人员大多熟悉单片机,用单片编写点小程序不在话下,
但要用ARM做较大型的软件则有点力不从心,尤其是LINUX、WINCE这种操作系统不是三两个月能搞定。建议这类人如无特别需要还是从ARM7和小型操作系统学起。
够用就好,不要盲目追求高端。有一点要注意:并不是从事ARM9的就比ARM7工资高,反而ARM7的就业机会比ARM9多,这很好理解,好比金字塔,越往顶越小。
三是软硬件基础都不太好的:这类人员有确实需要的,也有赶时髦的,大可曲线救国,搞懂单片机后,ARM7就不难了。
也可以看韦东山老师的教程,先把ARM9当ARM7,再学UBOOT,LINUX
最后说一点关于MTK开发板的,初学者买个开发板确实很有必要,但也要选择合适的,初学者合适的就是,资料齐全,有配套教程和学习指导,再加上较及时的技术支持。
单片机常见问题
1、单片机晶振不起振原因分析
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1) PCB板布线错误;
(2) 单片机质量有问题;
(3) 晶振质量有问题;
(4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题;
(5) PCB板受潮,导致阻抗失配而不能起振;
(6) 晶振电路的走线过长;
(7) 晶振两脚之间有走线;
(8) 外围电路的影响。
解决方案,建议按如下方法逐个排除故障:
(1) 排除电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。
(2) 排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。
(3) 排除晶振为停振品的可能性,因为你不会只试了一二个晶振。
(4) 试着改换晶体两端的电容,也许晶振就能起振了,电容的大小请参考晶振的使用说明。
(5) 在PCB布线时晶振电路的走线应尽量短且尽可能靠近IC,杜绝在晶振两脚间走线。
2、单片机晶振电路中两个微调电容不对称会怎样?相差多少会使频率怎样变化?我在检测无线鼠标的接受模块时,发现其频率总是慢慢变化(就是一直不松探头的手,发现频率慢慢变小)晶振是新的!
答:电容不对称也不会引起频率的漂移,你说的频率漂移可能是因为晶振的电容的容量很不稳定引起的,你可以换了试,换两电容不难,要不就是你的晶振的稳定性太差了,或者你测量的方法有问题.
3、51单片机时钟电路用12MHZ的晶振时那电容的值是怎样得出来的?拿内部时钟电路来说明吧!
答:其实这两个电容没人能够解释清楚到底怎么选值,因为22pF实在是太小了。
这个要说只能说和内部的振荡电路自身特性有关系,搭配使用,用来校正波形,没有人去深究它到底为什么就是这么大的值。
4、晶振为何被要求紧挨着IC,单片机晶振不起振?
答:原因如下:
晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈 后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。当电路中的激励电信号和晶振的标称频率相同时,电 路就能输出信号强大,频率稳定的正弦波。整形电路再将正弦波变成方波送到数字电路中供其使用。
问题在于晶振的输出能力有限,它仅仅输出以毫瓦为单位的电能量。在 IC(集成电路) 内部,通过放大器将这个信号放大几百倍甚至上千倍才能正常使用。
晶振和 IC 间一般是通过铜走线相连的,这根走线可以看成一段导线或数段导线,导线在切割磁力线的时候会产生电流,导线越长,产生的电流越强。
现实中,磁力线不常见,电磁波却到处都是,例如:无线广播发射、电视塔发射、手机通讯等等。晶振和IC之间的连线就变成了接收天线,它越长,接收的信号就 越强,产生的电能量就越强,直到接收到的电信号强度超过或接近晶振产生的信号强度时,IC内的放大电路输出的将不再是固定频率的方波了,而是乱七八糟的信 号,导致数字电路无法同步工作而出错。
所以,画PCB设计(电路板)的时候,晶振离它的放大电路(IC管脚)越近越好。
5、单片机晶振与速度的疑问,执行一条指令的周期不是由晶振决定的吗。那么比如51单片机和MSP430,给51接高速晶振,430接低速的,是不是51跑的要快?是不是速度单片机速度仅仅与晶振有关,关键是单片机能不能支持那么大的晶振?我的理解对吗?
答:每个单片机的速度是受到内部逻辑门电平跳变速度的**的。
你说的没错,对于一个51,给他用更高的晶振,速度会快些。
但是对于高级的单片机就不一样了。高级单片机内部,一般都是有频率控制寄存器的,所以,简单的增加晶振,可能达到单片机的极限,导致跑飞。
还没人转发这篇日记