AT89S52到ARM的移植Word格式文档下载.docx

上传人:b****5 文档编号:19914382 上传时间:2023-01-12 格式:DOCX 页数:7 大小:22.97KB
下载 相关 举报
AT89S52到ARM的移植Word格式文档下载.docx_第1页
第1页 / 共7页
AT89S52到ARM的移植Word格式文档下载.docx_第2页
第2页 / 共7页
AT89S52到ARM的移植Word格式文档下载.docx_第3页
第3页 / 共7页
AT89S52到ARM的移植Word格式文档下载.docx_第4页
第4页 / 共7页
AT89S52到ARM的移植Word格式文档下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

AT89S52到ARM的移植Word格式文档下载.docx

《AT89S52到ARM的移植Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AT89S52到ARM的移植Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。

AT89S52到ARM的移植Word格式文档下载.docx

4.1数据类型的定义8

4.2留心double和long8

第五章单片机与ARM的移植9

第六章总结10

第一章绪论

本论文是探究从单片机到ARM移植中会发生的问题,也就是8位机到32位机的移植中,会出现的问题,其中包括字节的变换,数据类型的不同,需要考虑的问题分析等等。

第二章ARM和单片机的区别

目前大量的中、低端嵌入式应用,主要使用8/16位单片机。

在国内,由于历史的原因,主要是以MCS51核为主的许多不同型号单片机,主要厂商有Atmel、Philips、Winbond、宏晶等。

还有一些近几年发展较快的新型单片机,如PIC、AVR、MSP430系列等。

这些单片机各有特点,但从目前的发展角度来看,单片机针对特定应用领域的个性化发展愈发明显。

2.1、软件方面 

这应该是最大的区别了。

引入了操作系统。

为什么引入操作系统?

有什么好处?

1)方便。

主要体现在后期的开发,即在操作系统上直接开发应用程序。

不像单片机一样一切都要重新写。

前期的操作系统移植工作,还是要专业人士来做。

2)安全。

这是LINUX的一个特点。

LINUX的内核与用户空间的内存管理分开,不会因为用户的单个程序错误而引起系统死掉。

这在单片机的软件开发中没见到过。

3)高效。

引入进程的管理调度系统,使系统运行更加高效。

在传统的单片机开发中大多是基于中断的前后台技术,对多任务的管理有局限性。

2.2、硬件方面 

现在的8位单片机技术硬件发展的也非常得快,也出现了许多功能非常强大的单片机。

但是与32ARM相比还是有些差距吧。

ARM芯片大多把SDRAM,LCD等控制器集成到片子当中。

在8位机,大多要进行外扩。

总的来说,单片机是个微控制器,ARM显然已经是个微处理器了。

引入嵌入式操作系统之后,可以实现许多单片机系统不能完成的功能。

比如:

嵌入式web服务器,java虚拟机等。

也就是说,有很多免费的资源可以利用,上述两种服务就是例子。

如果在单片机上开发这些功能可以想象其中的难度。

ARM处理器的优势详解 

对于如今大量出现的32位嵌入式应用,以笔者之见,ARM处理器的优势主要有以下几个方面:

高性能、低功耗、低价格。

把ARM处理器的性能拿来和一些著名的通用处理器(如Pentium)相比是不合适的,因为他们各自针对的应用需求是不同的。

Pentium处理器采用多条指令流水线的超标量结构,追求通用应用目标下的超强性能,功耗大,可以用散热器加风扇散热。

ARM针对嵌入式应用,在满足性能要求的前提下,力求最低的功率消耗。

ARM结构的优点是能兼顾到性能、功耗、代码密度、价格等几个方面,而且做得比较均衡。

在性能/功耗比(MIPS/W)方面,ARM处理器具有业界领先的性能。

基于ARM核的芯片价格也很低,目前ARMCortexM的芯片价格可低至10元人民币左右。

丰富的可选择芯片 

ARM只是一个核,ARM公司自己不生产芯片,采用授权方式给半导体生产商。

目前,全球几乎所有的半导体厂家都向ARM公司购买了各种ARM核,配上多种不同的控制器(如LCD控制器、SDRAM控制器、DMA控制器等)和外设、接口,生产各种基于ARM核的芯片。

目前,基于ARM核的各种处理器型号有好几百种,在国内市场上,常见的有ST、TI、NXP、Atmel、Samsung、OKI、Sharp、Hynix、Crystal等厂家的芯片。

用户可以根据各自的应用需求,从性能、功能等方面考察,在许多具体型号中选择最合适的芯片来设计自己的应用系统。

由于ARM核采用向上兼容的指令系统,用户开发的软件可以非常方便地移植到更高的ARM平台。

广泛的第三方支持

以如今的技术,设计一个处理器并非难事,但要使这个处理器得到大家认可,并取得市场成功却是非常困难的,其中涉及许多技术与非技术的因素和环节,还包括时机、运气。

因为现在许多产品的开发,不是一个简单的处理器加几百条指令、语句就可以解决的。

要用到32位处理器,一般都要有编译器、高效的开发工具(仿真器及调试环境)、操作系统、协议栈等,这些东西都不是一个芯片生产商可以解决的,而需要许多第三方的支持。

这就像一粒种子,需要土壤、空气、水等环境才能发芽、成长。

这也是我们的一些“中国芯”该反思之处。

ARM通过近20年的培育、发展,得到了广泛的第三方合作伙伴支持。

目前,除通用编译器GCC,ARM有自己的高效编译、调试环境(MDK、Keil),全球约有50家以上的实时操作系统(RTOS)软件厂商和30家以上的EDA工具制造商,还有很多高效率的实时跟踪调试工具的厂商,对ARM提供了很好的支持。

用户采用ARM处理器开发产品,既可以获得广泛的支持,也便于和同行交流,加快开发进度,缩短产品的上市时间。

完整的产品线和发展规划

ARM核根据不同应用需求对处理器的性能要求,有一个从ARM7、ARM9到ARM10、ARM11,以及新定义的CortexM/R/A系列完整的产品线。

前几年应用较多的主要是基于V4架构的ARM7TDMI、ARM720T、ARM920T核的一些处理器芯片,如NXP的LPC2000系列、ST的STR7/9系列、Atmel的AT91系列和Samsung的S3C系列。

近两年,ARMCortex系列以更好的性能、更低的价格得到快速推广,典型的就是基于CortexM3的STM32系列。

ARMCortexM/R/A系列分别针对不同的应用领域。

M系列主要面向传统微控制器(MCU/单片机)应用,这类应用面很广,要求处理器有丰富的外设,并且各方面比较均衡;

R系列强调实时性,主要用于实时控制,如汽车引擎;

A系列面向高性能、低功耗应用系统,如智能手机。

选用ARM处理器进行开发,技术积累性较强,生命周期长,设计重用度高,不易被淘汰。

用户在选择ARM处理器时,可以针对应用需求,从大量的ARM芯片中选用满足性能、功能要求的产品,以获得较好的性价比。

ARM处理器在便携、手持式设备以及工业控制等应用领域,在今后相当长的时间内是一个很好的选择。

当然,没有一种型号的处理器是可以覆盖所有应用的,也不是搬上一个嵌入式OS,就可以很好地解决软件问题的。

第三章8位MCU如何升级至32位MCU

首先,我们从MCU之间的转变开始,循序渐进。

目前的MCU市场分为三个部分,8位、16位和32位内核(4位内核MCU现在已相当少用,故在本次比较中将其忽略)。

对于这三个部分中的每一个,其规模大体相同。

传统上8位内核占最大的市场份额。

根据一些分析人士报告,可能32位内核市场占有率已经超过了8位内核。

即使目前尚未超过,时间也不会太长。

32位内核市场份额是迄今为止增长最快的。

8位内核和16位内核仍在增长,但在速度方面远不如32位内核(8位内核的增长速度仍快于16位内核) 

  在很长的一段时间内,很多人相信16位MCU可能会被8位MCU和32位MCU取代。

目前的32位MCU器件采用最新技术制造(与8位内核和16为内核相比)。

  MCU制造商能够使用这些最新的技术,使得32位MCU体积变得越来越小,因而变得越来越廉价。

由于32位MCU所具有的价格和性能,很多分析人士相信,设计工程师将跳出16位领域,直接转向具有高性能的产品,保证其设计的未来。

  8位MCU无论是在性能还是存储处理能力方面均达到了其极限。

这也是目前存在16位和32位MCU的原因之所在。

随着行业按照摩尔法则的轨迹发展,32位MCU变得越来越小和越来越廉价,以至于在传统的8位和16位领域方面也具有了竞争力。

  与8位和16位MCU相比,这些新的32位MCU具有更高的处理能力。

典型的8位MCU的速度在10~30MIPS之间。

16位MCU介于20和40MIPS之间。

而新的32位MCU通常具有80~100MIPS的处理能力!

这是处理能力和速度方面的重大改进。

  与8位和16位MCU相比,很多32位MCU具有更小的体积,通常具有更低的功耗。

较小的体积通常意味着更好的功耗、更低的电流消耗和更低的有效输入电压。

一些新产品的休眠电流几乎无法测量,提供的输入电压低至0.5V。

这就为32位MCU提供了巨大优势。

在当今市场上,功率为王。

即使某一应用不是以电池为供电,目前的设计人仍不得不考虑功耗。

对于插入栅板的应用,出于多种原因,仍必须是“绿色”的。

某些顶级产品必须针对市场目的,或是因为政府命令和标准。

例如,最新的消费电子器件目前均是兼容能源之星(EnergyStar)的。

如果你目前正在使用8位MCU,你可能会在下一设计中考虑32位MCU。

即使下一代设计仍继续使用8位MCU,目前也有很多步骤方法可帮助你做好最终的移植备。

今天做一些研究,并进行正确决策,就能为明天的设计提供保证。

  当你开始考虑转移至32位MCU时,或许会认为将遇到一些问题。

例如,你认为自己需要学习新的架构;

你可能需要重写自己的所有代码,以便与新的内核协调工作;

或许你感觉32位MCU过于艰难和复杂,它们不是为了便于使用而设计的,而是为了性能设计的,这意味着,你将不得不考虑它们所拥有的数以千计的寄存器;

或许你关心可能将不得不学习一整套新的软件工具,你将需要熟悉全新的硬件工具;

或许你还认为,32位MCU并不针对你的应用,你无法为自己的设计找出正确的成套外围器件。

你可能会关心上述一种或多种问题,但它们全都是必要的考虑事项吗?

让我们分别分析它们.

  大多数设计者认为,当他们从8位MCU转移到32位MCU时,将不得不学习新的体系架构。

问题是大多数公司有自己的老式8位MCU产品系列和新的32位MCU产品系列。

每年,他们可能仍会为8位产品系列推出少量新的产品,他们希望把握机会,从失误中学习,并在32位系列中更正错误。

你或许无法在器件上发现相同的外围部件。

不同系列的代码不兼容,或不具有管脚兼容性,因而你将不得不重新完成整个电路板。

  尽管真实的情形是这样的,你无法在不改变设计核心的情况下实现移植,但你也希望无需再次学习所有的内容。

一些公司开始发布新的产品,在8位版本和32位版本之间具有完全相同的成套外围组件。

组件中唯一改变的是其内核。

其他部分,包括管脚布局位置,均保持不变。

如果你目前使用的是8位MCU,明天就能移植到该公司的32位MCU上,同时仍能使用相同的印刷电路板。

这方面的一个例子是Cypress半导体公司最近发布的PSoC?

3和PSoC5架构。

这两种架构具有相同的外围组件、封装和管脚。

PSoC3架构,采用了新的单周期/指令8051,运行频率高达67MHz,能够方便地与PSoC5版本兼容。

PSoC5版本采用了ARMCortex-M0处理器,运行频率高达80MHz。

这类产品使得从一种架构到另一架构的移植变得简单易行。

使用这些新工具,能够按照你所希望的方式进行设计。

人们还认为,你将不得不为新的32位产品重写所有的代码。

情形并非总是如此。

对于在8位和32位内核之间具有匹配外围组件的很多这类新产品,它们的固件也是兼容的。

这些芯片采用高级语言(如C语言),能够编写一套代码,可以选择针对8位产品进行编译,或选择32位产品并重新编译。

你可以采取略微复杂的方法,使用高级语言编写代码,仍调用针对特定内核的寄存器如果你遵守高级编程的精神,移植仍相当容易。

  你可能考虑工具会怎样呢?

与你正在使用的特定内核相比,你可能更关注集成开发环境(IDE)。

一旦你掌握了它,你不会愿意学习新的。

但是,如果你拥有一种可在两种架构上工作的IDE,情况会怎样呢?

Cypress公司新的PSoCCreator?

软件就是这方面的一个例子。

它是一种能与8位器件和32位器件一起工作的集成开发环境(IDE)。

保证设计未来前景的一种良好方式是,在今天就选择相应的产品(即使你仍与8位内核打交道),通过该产品,能够为8位设计和32位设计使用相同的工具。

  与软件工具类似,硬件工具也出现在跨平台应用方面。

一些公司已开发出了带有硬件开发工具箱的模块系统。

这样,你就能够拔出8位模块,并用32位模块取而代之。

板上的所有其他部分保持不变。

它们通常采用相同的编程和调试工具。

你真正能够做到,学习一次,普遍适用。

  真正应考虑的是,很多公司为销售8位产品的不同市场开发了32位产品。

这意味着你无法找到支持设计的正确的32位产品。

因而,你不仅要为32位产品支付更多的成本,还需花费更多的成本购买外部分离器件。

但是,如果你能设计自己的芯片会怎样呢?

类似于FPGA或CPLD,但以更简单的方式使用图形环境会怎样呢?

如果你能在工具中实现自己的设计方案,创建它并将程序纳入器件中,是否会很好呢?

太好以至于似乎不真实,是吗?

当然不。

使用PSoC3和PSoC5,这是可能的。

你现在可以围绕32为内核设计外围器件,确保它们是适合于设计的正确器件。

与以往相比,对于设计人员来说目前更重要的是灵活性。

市场比以前变化得更快,竞争每天都在加剧,每个人都致力于更低的成本。

今天选择正确的8位器件系列能够保障你的明天。

使用这些新的工具,能够对8位MCU进行设计,或许它是贵公司产品组合的基本版本,随后,你可以承担你的任务,使用相同的项目文件,并将其移植到32位内核上。

现在你能够增加更多性能。

很快,它将成为贵公司的高端特色产品,从而获得更高的利润。

  32位MCU是嵌入式设计的下一代方向。

何时采取行动取决于你。

或许是现在,或许是数年内,但在某一点上,你的8位MCU将耗尽其能力,无法满足当前市场始终变化的需求。

大多数设计人员对该步骤感到恐惧。

但它并不一定是痛苦的。

我们考察了一些目前可以采取、使该转变尽可能平稳的行动。

如果你目前仍在进行8位内核设计,请确保你所使用的产品系列具有32位的对应产品。

对于工具来说情况同样。

目前很多公司均提供能在不同架构上使用的相同软件和硬件工具。

今天选择正确的器件(8位或32位)将能够帮助你以及你的设计在明天获得更大的成功。

第四章基本数据类型有关问题及回答

4.1数据类型的定义

uint8_t,uint16_t,和uint32_t不一定是8位,16位和32位的,这些都是通过typedef定义的,在不同的位机上面是不一样的,例如:

typedefuint8_tunsignedchar;

typedefuint16_6unsignedshortint;

typefefuint32_tunsignedint;

而在这个定义之下,及时换了平台,也能保证位机,只需要修改typedef或#define,如果跨平台onfig的话,系统会根据你选的BSP编译,你可以自己编写一个c程序,用sizeof函数取得你想知道的数据类型在系统中的位数。

为了保证可移植性,最好自己定义类型别名.移植到相应的系统上时,只要重新定义这些自己定义的类型就可以了,

4.2留心double和long

因为double和long都是多位数,所以在移植过程中会导致程序出错,所以一般在移植中我们都把这两种类型转换成unsignedint类型,以防止移植过程中出错,导致程序移植失败。

4.3留心sizeof

sizeof返回类型为unsignedlong,如果返回给int型变量,可能发生截断。

4.4留心边缘效应

局部代码发生类型改变,可能导致其他代码发生64位转换,例如函数的返回值由Int变为sszie_t,则所有调用该函数并获取其返回值的地方,都有可能发生意想不到的64位转换。

4.5留心longarray对效率的影响

Long/unsignedlong数组在移植中可能被截断,所以如果int就足够,尽量不要使用Long,这一点,对于pointerarrary同样适用。

第五章单片机与ARM的移植

5.1写驱动

在上文中我们就说出了单片机与ARM的区别,但是那些都不足以帮助我们移植成功,

在单片机中我们控制针脚的时候仅仅只是利用其系统定义的P0.0到P3.0接口,而ARM里面如果要控制我们所需的硬件使其动起来,则需要写一个对应的驱动来控制器GPIO口,就那我们组所做的音乐播放器吧,在其硬件上,ARM板上的引脚就足以支撑起我们所做的LED板,而不需要我们另外再加两个译码器。

而这个驱动我们就需要去懂得ARM内核,根据它的内核我们才能写出相应的驱动,这就是移植的第一步写驱动。

5.2改程序

在上文中,我们说到了写驱动,驱动属于底层,而我们写完驱动之后就是更改程序,在单片机中,我们永远不需要读取驱动,因为单片机仅仅只是一个控制器而不是处理器,我们需要把驱动文件读取出来,用C/C++中的OPEN函数,读出程序之后,就开始对程序写入我们所需要控制的外部设备,而在ARM有一种机制叫做PWM,这是一个定时脉冲对于音乐来说,这个是一个非常有利的工具,这跟单片机的不同之处就在于ARM只是处理,而不是去实行,所以ARM起源于单片机但比单片机更高级,它有多线程,所以在我们的音乐中,我们可以利用多线程来控制灯光的闪烁,而不是利用其频率的间隙。

第六章总结

以上就是单片机到ARM需要注意的地方,而且在实践中,我意识到了跨平台是一件很不容易的事情,在一定的地方,造成的结果就是不一样,所以我们往往需要的注意的地方很多,而不仅仅只是把程序在ARM的开发环境中变异一下,所以这次的移植让我学会了很多。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1