您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页单片机外文原稿1翻译

单片机外文原稿1翻译

来源:爱go旅游网


8051微控制器的字节码解释器

N. Jeenjun S. Khuntaweetep and S. Somkuarnpanit

一 引言

要使用微控制器,用户必须了解其架构和语言。每个家庭的微控制器都有它自己的体系结构和指令集。例如PIC家庭是RISC和8051是CISC。当用户想要使微控制器的变化来支持新的微控制器,可帮助其他用户开发新的方案。

它是废时间,因为用户必须学习新的微控制器的架构和指令集,以及解释另一种方式的微控制器要解决的问题。当用户想要改变新微控制器,用户只安装解释新微控制器,但不写新的程序。

例如,对于字节代码的Java语言,Java作为由Sun Microsystems引入,在1994年已经传遍了整个计算机行业,并已传递到所有域。不过Java是提供“一次编写,运行无处不在“的软件。在图1中,程序员编写的Java项目。 Java编译器将编译Java程序的Java字节码。使用Java程序,用户需要安装Java虚拟机操作目标系统。如果用户要改变到新的操作系统,用户只需安装Java虚拟机和Java程序就可以正常运行。这种情况下的Java虚拟机就是Java系统解释器。

世界上人们最喜欢的玩具是乐高的头脑风暴。乐高积木解释器中有H8微控制器。用户接口是基于图形块。这很容易为初学者即使孩子们,都可以来开发自己的应用。为了解释的其他例子,由麻省理工学院MetaCricket开发的,GoGo电路板,通过BasicStamp视差,picoJava-Ⅰ和picoJava-Ⅱ,由Sun微系统的嵌入式Java虚拟机和字节代码固件设计组成的单片机。

二 系统比较

在图2中所描绘的标准的微控制器(MCU)语言设计,就是用户写入装配程序为目标MCU和编译每个系统的机器代码。在这情况下,用户必须为8051和PIC制定方案2。

在图3中,用户安装字节码解释器,既然后在8051和PIC单片机写入程序字节代码指令集。在这种情况下,用户写程序只有1次。

三 翻译框图

这里解释的MCU有3个部分,他们如图4被加以描述。VM控制器是翻译的核心,它控制读取/执行和状态的命令,IF,ELSE,REPEAT和GOTO。VM EXECUTE是字节码解码器。外围是硬件模块。它包括,并口,串口,I2C端口,定时器,液晶口和算术函数。

在图5 系统流程图描述中MCU后复位后,解释器从内置闪存取出字节码。条件1将被选中,不管它是正常的任务或任务的条件。如果是正常的任务,接下来的字节码会被解码为正常。如果不是,解释器之前会去下一个命令,检查情况。完成该操作之后,程序计数器

(PC)将被提高到下一行地址。

A.数据堆栈

解释器被设计成具有16级数据栈。该优势数据栈是,存储条件的结果指令值IF/ ELSE和WAITUNITL并从结果算术命令。 数据堆栈示例被描绘在图6中。 00,02,09,01,00,06,00,01,40,01,35,1C,0A 00,02:行程序地址 09:SUM

01:条件1(IF语句) 00:没有条件2

06:数字IF语句的奴隶 00:这是主线

01,40:推送数据40H到当前栈 01,35:数据推35至下一个栈 1C:比较均等字节码

0A:在堆栈比较数据和堆栈+1,结果将在堆。

B字节码格式

字节码格式由7份组成,图7中所描绘那样。 AddrH和ADDRL是16位地址线。(最大为65535行)

SUM使用字节中的每一行(ADDRL,AddrH和SUM不包括在内)

1是首要条件。 2是次要条件。

CondListH,在以下情况下,如果条件1不为00H 平等00H:这是从行地址。 不等于00H:这是主线地址。

CondListL,在以下情况下,如果条件1不为00H 平等00H:这是主线地址。 不等于00H:这是从行地址。

8位的命令。

C.Byte代码指令集

该指令集被归类为2个部分: 没有条件的命令

对于没有条件的命令,条件1将是00H,条件2 CondListH和CondListL将不会出现在行中。在图8中格式描绘实施例如对于本命令TX232,RX232,I2CSTART,I2CWRITE, LCD,WAITTIME,OUTPORT和INPORT。

命令条件

对于条件命令包括,IF,ELSE,REPEAT和GOTO。在图9中,格式条件1描绘会不会是00H和条件2为00h保留进一步使用。

解释器设计有8级IF和ELSE的命令。在图10中显示了3个级别IF命令和2ELSE命令的水平。对于IF命令,字节码01H-08H被保留,81H-88H是为IF行结束保留。 ELSE命令,字节码09H-0FH保留和ELSE行结束89H-8FH保留。

为重复命令,解释器被设计为8个水平。重复的数量可以是0-255。为重复命保留的令字节码是21H-28H。GOTO命令,它必须有标签。标签或地址可以是0000H-FFFFH。字节代码80H被保留用于GOTO命令。所有命令将在试验结果部分进行说明。

D.Memory分配

存储器分配在图11中进行描述,第一保留16KB用于解释器安装,第二个是用户代码区为16KB闪存或32K字节EEPROM作为配置设置。在本文中,用户代码区是16KB闪存 内存。

E.硬件

硬件测试系统是ETT-JR51USB[12]下面是规范的硬件。 AT89C5131单片机6时钟运行 32K字节闪存和1K字节的sram USB线下载程序

1xUART最大11520个基点 1个I2C端口 5VDC电源 四 测试结果

我们选择了一些字节代码示例来测试翻译。它包括I2C,RS232,LCD和并口与延迟时间。第一示例代码在图12中,该方案将产生I2C开始信号,写数据到I2C与5AH继而产生I2C停止信号。测试结果是在图13中描绘。

第一行00,00,02,00,4E 00,00:行地址 02:SUM

00:条件1(没有条件命令) 4E:写启动I2C信号

第二行00,01,04,00,01,5A,4A 00,01:行地址 04:SUM

00:条件1(没有条件命令) 01,5A:按数据5AH到数据栈 4A:数据堆栈数据发送到I2C 第三行00,02,02,00,4F 00,02:行地址 02:SUM

00:条件1(没有条件命令) 4F:写入停止I2C信号

第二个例子是在图14的程序中描述 从RS232信道接收数据,并发送相同的数据回到主机(个人计算机)。图15显示RS232 信号。

第一行00,00,06,64,00,00,05,00,01

00,00:行地址 06:SUM

64:条件1(标签命令) 00:没有条件2 00,05:标签栈位置 00,01:为去命令行地址 第二行00,01,02,00,14 00,01:行地址 02:SUM

00:条件1(没有条件命令) 14:读取RS232数据 第三行00,02,02,00,04,13 00,02:行地址 02:SUM

00:条件1(没有条件命令) 04:推RS232数据到数据栈 13:写数据从数据堆栈到RS232 第四行00,03,05,65,00,00,05,00 00,03:行地址 05:SUM

65:条件1(转到命令) 00:没有条件2

00,05:在堆栈单元05刷新标签 00:保留进一步用

第三个例子是在图16中,程序中描述将数据发送到并行端口,数据1,2,4,8,10H,20H,40H 80H并用400毫秒的延迟时间。测试结果在图17中描绘。 第一行00,00,06,64,00,00,05,00,01

00,00:行地址 06:SUM

64:条件1(标签命令) 00:没有条件2 00,05:标签栈位置 00,01:为去命令行地址 第二行00,01,04,00,01,01,4C 00,01:行地址 04:SUM

00:条件1(没有条件命令) 01,01:数据推01〜数据堆栈 4C:写入并行端口数据堆栈数据 第三行00,02,04,00,01,04,10 00,02:行地址 04:SUM

00:条件1(没有条件命令) 01,04:数据推01〜数据堆栈

10:延迟时间与数据数据乘以堆栈100毫秒 第四行00,03,04,00,01,02,4C 00,03:行地址 04:SUM

00:条件1(没有条件命令) 01,02:按数据02数据堆栈

4C:写入并行端口数据堆栈数据

其余程序将重复相同行1和2号线,但只有改变的数据出来。

最后一个例子是LCD命令,图18是程序,图19是测试结果。 第一线00,00,02,00,A2 00,00:行地址 02:SUM

00:条件1(没有条件命令) A2:初始液晶字节码指令 第二行

00,01,19,00,01,31,A0,01,32,A0,01,33,A0,01,34,A0,01,35,A0,01,36,A0,01,37,A0,01,38 A0,

00,01:行地址 19:SUM

00:条件1(没有条件命令) 01,31:推送数据31(字符“1”),以数据堆栈 A0:数据堆栈液晶写数据

01,32:推送数据32(字符“2”),以数据堆栈 A0:数据堆栈液晶写数据

01,33:推送数据33(字符“3”),以数据堆栈 A0:数据堆栈液晶写数据

01,34:推送数据34(字符“4”),以数据堆栈 A0:数据堆栈液晶写数据

其余的程序将数据写入LCD液晶屏“5678abcdefgh”。

A.结果分析:内存使用率

本文中,我们已经安装了字节码解释成8051(CISC)微控制器。翻译是用C语言与KEIL编译。表4.1是针对比较内存使用情况。

B.结果分析:提高速度

从前面的文章中,字节码固件单片机,用户程序存储与I2C协议inexternal内存

EEPROM。它是该系统的颈部,因为它从数据EEPROM1字节花了10个时钟周期来。在本文中,我们通过使用内置的问题改进了微控制器的闪存,只用了2个时钟周期来获取1个字节数据。

五 结论

根据测试的结果,即使我们改变从系统到PIC8051微控制器,解释器仍然可以执行正确命令的字节代码。事实证明独立硬件的概念就是执行字节码指令通过改变外部存储器,内部闪存提高内存。进一步的就是减少解释器代码大小和速度的提高,我们可以用汇编语言,而不是C语言。最后:检查字节代码的语法,编译的应制定为好。

六 参考

[1] S. Wilson and J. Kesselman, “Java platform perform ance strategies and tactics”, Addison-Wesley, Boston, 2000.

[2] T. Lindholm and F. Yellin, “The Java virtual machine specification”,Addison-Wesley, Reading, Mass., 1997.

[3] Jin Sato, “LEGO MINDSTORMS: The Master's Tech nique”,O'Reilly Media, Inc.,2008.

[4] F.Matin, B.Mikhak, B.Silverman, “MetaCricket: A de signner’s kit for making computational devices”, IBM Systems Journal, Vol. 39, NOS3&4, 2000.

[5] Arnan (Roger) Sipitakiat, “GOGO BOARD”, Available from: http://www.gogoboard.org [6] Al Williams, “Microcontroller Projects Using the Basic Stamp”, CMP Books, 2002. [7] Sun Microsystems, “picoJava-I: picoJava-I Core Micro processorArchitecture”, Sun Microsystems white paper, October 1996.

[8] Sun Microsystems, “picoJava-II: Java Processor Core”, SunMicrosystems data sheet, April 1998.

[9] Graham Mathias, Kenneth B. Kent “An Embedded Java Virtual Machine Using Network-on-Chip Design”, IEEE Int. Workshop on Rapid System Prototyping, 2006.

[10] Kenneth B. Kent, Micaela Serra, “Hardware/Software Co-Design of a Java Virtual Machine”, IEEE, 2000.

[11] Narakorn Jeenjun, “The Byte code Firmware Design for Microcontroller Device”, KKU Journal, Vol 34, Page 535-546, 2007.

[12] ETT-JR51USB Board Available from: www.ett.co.th

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务