EZ-USB开发笔记(三)——内存安排
2013-09-19 21:02
197 查看
一、概述
EZ-USB C51内核用内部RAM存储运行的程序和数据。而不是基于FLASH。
EZ-USB的内存分为独立的三个部分:内部数据区域,外部数据区域和外部程序区域。注意,这里的“外部”是相对于CPU访问来说,而并不一定要做在芯片的外部。即内部存储区指增强的51核内部的存储区,外部指51核外部。
二、内部数据存储区
内部数据存储区为0x00~0xFF,共512*8bit。内部数据存储区被分为三个区域:lower 128,upper 128和SFR空间(特殊功能寄存器空间)。Lower 128和Upper 128是通用RAM,SFR空间安排的是EZ-USB的控制和状态寄存器。
2.1 Lower 128
Lower 128地址空间为0x00~0x7F。CPU可以通过直接或间接寻址访问lower 128的空间。
两段特殊的地址空间可以通过其他方式访问:
0x00~0x1F包括4个bank,每个bank包括R0到R7,8个寄存器。通过PSW寄存器的register-select bits(RS1:RS0)来选择当前正在使用的bank。当代码访问R0到R7寄存器时,访问的是正在使用的bank中的寄存器组。
0x20~0x2F是比特访问空间。该空间的128个bit(16字节)是可以按bit访问的。访问时可以用0x20.0到0x2F.7的方式,也可以用该bit本身的地址0x00~0x7F。
2.2 Upper 128
Upper 128地址空间为0x80~0xFF。CPU只能通过间接寻址访问该空间。
由于EZ-USB的堆是在内部通过间接寻址访问的,所以最好将堆安排在Upper 128空间处。而Lower 128可以存放对访问更为频繁的数据。
2.3 特殊功能寄存器空间
特殊功能寄存器(Special Function Register——SFR)空间,被安排在0x80~0xFF地址处。该地址空间与Upper 128地址空间重合。EZ-USB通过不同的寻址方式来区分这两部分:SFR空间只能使用直接寻址,而Upper 128只能使用间接寻址。
SFR空间包括16个寄存器,每个寄存器都是bit可访问的。访问时可以用0x80.0到0xC8.7的方式,也可以用该bit本身的地址0x80~0xFF。
三、外部程序存储区和外部数据存储区
3.1 标准8051处理器外存安排
标准51的外部存储区采用哈弗总线结构,外部数据和外部程序存储区是物理上完全独立分开的。两块区域地址重合,0x0000到0xFFFF,均为64KB。外部程序存储区是只读的,外部数据存储区是可读可写的。
CPU通过两套不同的总线进行访问。程序存储区的读使能是PSEN#,而数据存储区的读写使能是RD#和WR#。当CPU取指和执行MOVC指令时,将拉低PSEN#,当访问数据存储区时将使能RD#或WR#。
3.2 EZ-USB处理器外存安排
EZ-USB对此进行了改进:芯片外的外部存储区域采用哈弗结构,而做在芯片上的外部存储区域采用冯诺依曼结构。这样,EZ-USB就可以从外部(USB HOUST或者I2C)加载程序到芯片上的外部存储区,并执行。
3.2.1 芯片上的外存
EZ-USB芯片上的外存安排如下:
如果一个设计只是用芯片内部的外存,而不使用芯片外部的外存。那么,当访问main RAM时,RD#和PSEN#将联合起来,作为main RAM的访问使能;当访问scratch RAM时,RD#和PSEN#将独立分开。Main RAM作为数据和程序存储器,而scratch RAM仅作为数据存储区。
EZ-USB同样保留了7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。注意,这里的7.5KB空间为芯片内部的数据存储区,当使用芯片外部的存储器时,在芯片外部的程序存储区的0xE2000~0xFFFF地址仍然可用。
3.2.2 芯片外的外存
对于56-pin 和100-pin的芯片,不提供片外存储器接口。因此芯片内部的main RAM将作为程序和数据存储区。PSEN#和RD#信号将做逻辑或后,形成main RAM的访问使能。程序员必须保证程序的大小不超过main RAM的大小。
对于128-pin的芯片,可以挂载片外存储器。
片外存储器的安排由芯片的EA管脚决定。注意,这里的EA管脚的状态,是指整个阶段的状态,而不仅仅是芯片复位时的状态。
·EA = 0时:
Main RAM被当做程序和数据存储区,这与56-pin和100-pin相同。
当访问0x000~0x3FFF区域时,PSEN#与RD#在芯片内部相或,作为使能信号,而在芯片外的这两个管脚无效,这样,EZ-USB访问的是芯片内部的存储区。
当访问外部存储区时,由PSEN#管脚来选择访问的是数据存储区还是程序存储区。
EA = 1时:
所有的片上存储区被安排做数据存储区,片外存储区被安排做程序存储区。芯片复位上电后,如果I2C上没有有效加载程序,则EZ-USB从片外程序存储器的0x0000地址处开始执行。
四、扩展总线接口
128-pin的芯片拥有扩展总线接口,用来访问片外存储器。
扩展总线接口包括非复用的16位地址总线和数据总线,以及引出的PSEN#,RD#,WR#信号控制访问时序。此外,EZ-USB还将这三个信号进行逻辑组合后,形成附加的CS#和OE#信号,已进行辅助控制。
PSEN#为程序存储区使能信号,当CPU访问的地址是程序存储区时,该信号将拉低。RD#为读使能信号。WR#为写使能信号。CS# = PSEN# or RD# or WR#。OE# = PSEN# or RD#。
当系统设计片外存储器作为程序和数据存储器时,可用OE#信号作为读使能。
五、片上0xE000~0xFFFF地址
EZ-USB同样保留了0xE000~0xE1FF处512字节的数据存储区作为Scratch RAM,同时保留了0xE000~0xFFFF处7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。如下图所示:
EZ-USB C51内核用内部RAM存储运行的程序和数据。而不是基于FLASH。
EZ-USB的内存分为独立的三个部分:内部数据区域,外部数据区域和外部程序区域。注意,这里的“外部”是相对于CPU访问来说,而并不一定要做在芯片的外部。即内部存储区指增强的51核内部的存储区,外部指51核外部。
二、内部数据存储区
内部数据存储区为0x00~0xFF,共512*8bit。内部数据存储区被分为三个区域:lower 128,upper 128和SFR空间(特殊功能寄存器空间)。Lower 128和Upper 128是通用RAM,SFR空间安排的是EZ-USB的控制和状态寄存器。
2.1 Lower 128
Lower 128地址空间为0x00~0x7F。CPU可以通过直接或间接寻址访问lower 128的空间。
两段特殊的地址空间可以通过其他方式访问:
0x00~0x1F包括4个bank,每个bank包括R0到R7,8个寄存器。通过PSW寄存器的register-select bits(RS1:RS0)来选择当前正在使用的bank。当代码访问R0到R7寄存器时,访问的是正在使用的bank中的寄存器组。
0x20~0x2F是比特访问空间。该空间的128个bit(16字节)是可以按bit访问的。访问时可以用0x20.0到0x2F.7的方式,也可以用该bit本身的地址0x00~0x7F。
2.2 Upper 128
Upper 128地址空间为0x80~0xFF。CPU只能通过间接寻址访问该空间。
由于EZ-USB的堆是在内部通过间接寻址访问的,所以最好将堆安排在Upper 128空间处。而Lower 128可以存放对访问更为频繁的数据。
2.3 特殊功能寄存器空间
特殊功能寄存器(Special Function Register——SFR)空间,被安排在0x80~0xFF地址处。该地址空间与Upper 128地址空间重合。EZ-USB通过不同的寻址方式来区分这两部分:SFR空间只能使用直接寻址,而Upper 128只能使用间接寻址。
SFR空间包括16个寄存器,每个寄存器都是bit可访问的。访问时可以用0x80.0到0xC8.7的方式,也可以用该bit本身的地址0x80~0xFF。
三、外部程序存储区和外部数据存储区
3.1 标准8051处理器外存安排
标准51的外部存储区采用哈弗总线结构,外部数据和外部程序存储区是物理上完全独立分开的。两块区域地址重合,0x0000到0xFFFF,均为64KB。外部程序存储区是只读的,外部数据存储区是可读可写的。
CPU通过两套不同的总线进行访问。程序存储区的读使能是PSEN#,而数据存储区的读写使能是RD#和WR#。当CPU取指和执行MOVC指令时,将拉低PSEN#,当访问数据存储区时将使能RD#或WR#。
3.2 EZ-USB处理器外存安排
EZ-USB对此进行了改进:芯片外的外部存储区域采用哈弗结构,而做在芯片上的外部存储区域采用冯诺依曼结构。这样,EZ-USB就可以从外部(USB HOUST或者I2C)加载程序到芯片上的外部存储区,并执行。
3.2.1 芯片上的外存
EZ-USB芯片上的外存安排如下:
地址 | 大小(字节) | 名称 | 读写 | 位置 |
0x0000~0x3FFF | 16KB | Main RAM | 可写 | 芯片上 |
0x0000~0x3FFF | 芯片上 | |||
0xE000~0xE1FF | 512B | Scratch RAM | 可写 | 芯片上 |
0xE200~0xFFFF | 7.5KB | SFR&endpoint | 可写 | 芯片上 |
EZ-USB同样保留了7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。注意,这里的7.5KB空间为芯片内部的数据存储区,当使用芯片外部的存储器时,在芯片外部的程序存储区的0xE2000~0xFFFF地址仍然可用。
3.2.2 芯片外的外存
对于56-pin 和100-pin的芯片,不提供片外存储器接口。因此芯片内部的main RAM将作为程序和数据存储区。PSEN#和RD#信号将做逻辑或后,形成main RAM的访问使能。程序员必须保证程序的大小不超过main RAM的大小。
对于128-pin的芯片,可以挂载片外存储器。
片外存储器的安排由芯片的EA管脚决定。注意,这里的EA管脚的状态,是指整个阶段的状态,而不仅仅是芯片复位时的状态。
·EA = 0时:
Main RAM被当做程序和数据存储区,这与56-pin和100-pin相同。
当访问0x000~0x3FFF区域时,PSEN#与RD#在芯片内部相或,作为使能信号,而在芯片外的这两个管脚无效,这样,EZ-USB访问的是芯片内部的存储区。
当访问外部存储区时,由PSEN#管脚来选择访问的是数据存储区还是程序存储区。
EA = 1时:
所有的片上存储区被安排做数据存储区,片外存储区被安排做程序存储区。芯片复位上电后,如果I2C上没有有效加载程序,则EZ-USB从片外程序存储器的0x0000地址处开始执行。
四、扩展总线接口
128-pin的芯片拥有扩展总线接口,用来访问片外存储器。
扩展总线接口包括非复用的16位地址总线和数据总线,以及引出的PSEN#,RD#,WR#信号控制访问时序。此外,EZ-USB还将这三个信号进行逻辑组合后,形成附加的CS#和OE#信号,已进行辅助控制。
PSEN#为程序存储区使能信号,当CPU访问的地址是程序存储区时,该信号将拉低。RD#为读使能信号。WR#为写使能信号。CS# = PSEN# or RD# or WR#。OE# = PSEN# or RD#。
当系统设计片外存储器作为程序和数据存储器时,可用OE#信号作为读使能。
五、片上0xE000~0xFFFF地址
EZ-USB同样保留了0xE000~0xE1FF处512字节的数据存储区作为Scratch RAM,同时保留了0xE000~0xFFFF处7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。如下图所示:
相关文章推荐
- EZ-USB开发笔记(零)——背景介绍
- EZ-USB开发笔记(四)——中断(上)
- EZ-USB开发笔记(一)——EZ-USB概述
- EZ-USB开发笔记(二)——CPU介绍
- EZ-USB开发笔记(五)——中断(下)
- EZ-USB开发笔记(六)——CPU外设
- EZ-USB开发笔记(七)——复位
- EZ-USB开发笔记(八)——电源管理
- EZ-USB开发笔记(十)——枚举与重枚举
- EZ-USB开发笔记(九)——USB传输
- EZ-USB 68013学习笔记(二)——USB协议之传输的基本单元--包
- [转载].Craftor - EZ-USB FX2LP,CY7C68013A学习笔记[1]
- USB HID 下位机开发笔记
- arm-linux系统开发笔记3:挂载USB
- iOS开发笔记(五)Phone内存泄露:Leaks工具指引
- USB开发笔记
- EZ-USB 68013A开发指南
- EZ-USB 68013学习笔记--CYAPI的使用之批量传输方式
- [Openwrt 项目开发笔记]:USB挂载& U盘启动(三)
- USB虚拟串口实验_STM32F1开发指南_第五十三章——USB学习笔记