重视单片机的存储器
在此之前,GR-SAKURA电路板(搭载瑞萨电子单片机“RX63N”)的程序设计是运用Web编译器来进行的。将经过编译器建立的程序(Object Code,成果代码)好像写入U盘相同将之传送到GR-SAKURA电路板后再履行。那么,问题来了。写入(传送到)单片机的程序应该保存在哪儿呢?别的,程序又是怎么被履行的呢?在回答这些问题的一起,让咱们一起来了解一下单片机与程序的联系吧。
首要来了解存储器p主存储器和外置存储器的两种作用
回忆(保存)程序和数据的当地即存储器。存储器有以下两种类型。
外置存储器中的程序需传送到主存储器后才干履行。
关于单片机的存储器,常会看到ROM(Read Only Memory:只读存储器)和RAM(Random Access Memory:可读写存储器)等词汇,其实ROM和RAM仅是表明存储器性质,而与存储器的作用无关。(请参阅单片机入门①,了解单片机的根本结构和操作)
地址空间(内存空间)
CPU可以直接进行读写的一切空间被称为“地址空间(或内存空间)”。这个地址空间的每个字节都标明有号码。这个号码称为“地址(address)”,一般以十六进制来表明。上面所介绍过的主存储器都包含在地址空间内。
依据不同用处,单片机的CPU已开发出了4位、8位、16位和32位。在GR-SAKURA中运用的RX63N单片机搭载了32位的CPU,因而也被称为“32位单片机”。那么,单片机所具有的地址空间容量到底有多少呢?以RX63N为例,由所以32位的CPU,因而最大可以指定约40亿(2的32次方)个地址。切当地说是4,294,967,296(4x1024x1024x1024)个地址。因为一个地址可以回忆一个字节,这时也可以表明为具有 “4GB(千兆字节)的地址空间”。地址空间的容量越大越能搭载大容量的存储器,也可包容更大的程序。因而可以完成更高功用的运用。
32位字节的CPU所具有的4G字节的地址空间示例如图1所示。左面所示的是以十六进制标明的地址。因为一列保存有4个字节(=32位),所以左面所符号的地址便是每4个地址的值。
计算机的单位:位、字节、兆、千兆和兆兆(太)
数据的根本单位是位(b=bit),每个位的值为“0”或“1”。8位为1个字节(B=Byte)。例如,3个字节(3×8位)等同于24位。
电脑存储设备的容量所运用的单位,咱们耳熟能详的有KB(千字节)、MB(兆字节)、GB(千兆字节)和TB(太字节)等。一般状况下会说 1GB=1000MB或许这样写出来,但在计算机的国际里,此单位并非为1000倍,而是1024倍(2的10次方),因而正确的表明如下:
1KB(千字节)=2的10次方 = 1,024 字节
1MB(兆字节)=1,024KB = 2的20次方 1,048,576 字节
1GB(千兆字节)=1,024MB = 2的30次方 = 1,073,741,824 字节
1TB(太字节)=1,024GB = 2的40次方 = 1,099,511,627,776字节
表明地址的十六进制指的是什么?
地址空间内的地址以16进制来表明。例如,具有16位(2的16次方)巨细的地址空间中,假如以10进制来表明,便是“从地址0到地址65535”,假如以16进制来表明,则是从“地址0h到地址FFFFh”。在10进制中,每一位所取的值都在0到9之间,而在16进制中,则是0到F(相当于10进制的15)。以16进制表明的数,最终都有一个“h”,标明是以16进制来表明的。
程序保存在哪儿呢?(向量表)
那么,程序被保存在地址空间的什么当地,又是怎么样开端作业的呢?单片机复位后便开端履行最优先程序。复位是在接通电源或接收到复位信号时发生。实际上,这种“开端履行最优先程序”处理中,有如下所示的两种办法。
即开端履行程序时,有将履行程序的开端地址设为固定的CPU及将之设为可变地址的CPU。
在将开端地址设为固定的CPU中,大多是从地址0(地址空间中最小的地址)开端履行。这便是程序开端的地址。并且,有时要事先在地址0中完成写入“下一个要履行的是地址○○”的跳转(Jump)指令,并将程序预先放置在“地址○○”中。假如改写“地址○○”,将可获得与将开端地址设为可变地址相同的作用。
将开端地址设为可变地址的CPU将开端地址写入被称为“向量表”的部分中(图2)。向量表是只寄存地址空间中各种开端地址的特定区域的称号。一般来说是它放置在地址空间中最大地址的部分。
以RX63N为例,因为地址是以32位来显现的,为了保存它就需求4个字节。这就意味着图3中的“复位”部分表明从地址FFFFFFFCh到地址 FFFFFFFFh的4个字节中保存了程序的开端地址。CPU复位后将读取保存于此的地址,并从作了符号的地址开端履行。被写入向量表的不仅是复位后的开端地址,向量表中还保存发生中止时程序的开端地址和反常处理(Exception Handling)的开端地址。也正因为保存了发生中止及反常处理等因多种事由的开端地址,所以才被称为“表(Table)”。
咱们来想象一下运用了向量表的程序处理的状况。图3表明出了发生非屏蔽中止(NMI) (*1) 时的处理流程例。
(1)发生NMI,
(2)读取写在向量表的NMI的开端地址(此例中为10000000h),
(3)履行所读取地址(10000000h)中的NMI程序。