ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:430.76KB ,
资源ID:8671805      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8671805.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MCU寻址方式及Bank概念学习.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MCU寻址方式及Bank概念学习.docx

1、MCU寻址方式及Bank概念学习*学习内容:1:Xdata / MCU寻址范围2:Bank的概念,Common Bank / Bank0 / Bank1 / Bank2 / Bank33:Bank X Data OverFlow / 移Bank4:Flash存放DATA的方式 20111008*一: Xdata / MCU 寻址范围1:在Keil C软体中,点Help - U Vision Help,搜索Xdata,可得到以下内容:Xdata表示的是外部数据(MCU外部),它可以寻址的空间最大为64K byte.我们的MCU为51内核的8 bit的MCU,地址总线一般为8bit ,最大可寻址的

2、空间为256 bytes,很小,可是,51的MCU,有两路地址总线是可以搭配来当作16 bit的地址总线来使用,它可以寻址的空间大小为64K byte。我们用到的xdata即是用的16bit的地址总线来寻址的。在大学里学的89S51是P0.0P0.7与P2.0P2.7地址总线共用,如下所示: 二:Bank的概念,Common Bank / Bank0 / Bank1 / Bank2 / Bank3 MCU支持的最大寻址空间为64K byte,如果CODE过大,超过64K byte,MCU怎么寻址呢? 标准的8051内核的MCU,支持 Bank功能,最大支持32个Bank ,最大2M bytes

3、的寻址空间。注意:我们常用的2M Flash ,的单位是bit。64K bytes的单位是 byte。即 : 2M Bit = 4 x 64K bytes,所以,2M的FLSAH,只需要用4个BANK就OK。在Keil C软体中,点Help - U Vision Help,搜索Bank,找到左侧中的code banking可得到以下内容:放大右侧的BANK描述图:由上图可得:一个Bank又被拆分为Common Bank和 Bank X两个部份。其中,每个Bank都会有Common Bank ,并且,每个Bank中的Common Bank的Data都是一模一样的。由上图可知,一个Bank的存储范

4、围为 0x00000xFFFF,为64 K Byte其中,0x00000x7FFF为Common Bank的范围,0x80000xFFFF为各个BankX的数据存储范围。在CODE调用时,Common区的Data与Bank X区中的Data可以任意调用,可是,各个Bank X区的Data之间的多次调用,经常会有很奇怪的现象出现,比如OSD乱码,画异等等。所以,不建议各个Bank X之间进行数据的直接多次调用。怎样看软体中设定的Common Bank的大小及文件是属于哪个Bank?1:查看Common Bank 的大小 以Lenovo_Li2361D的机种CODE为例,在keil C中,点击Op

5、tions for Target选项,在出现的对话框中,打开target选项,可以看到,Bank X Area 是从0x30000xFFFF,可知,Common Bank是从0x00000x2FFF(注意,Common Bank的大小在改动时,需要考虑到后面的Bank X的数据长度,在64K byte空间固定的前提下,增大了Common Bank的长度,等于间接减少了Bank X的长度)。二:查看文件是属于哪个Bank 软体中的每一个.C / .H文件都会定义好它是属于哪个Bank,以此来规划各个文件之前的参数及函数的调用。 以Lenovo_Li2361D的机种CODE为例,在keil C中,

6、点击Project文件夹,右键Options for Group Project: ,在出现的对话框中,我们可以看到:表示Project这个文件夹中的文件在默认下,都是存放在Bank 中的Common Bank区。 当我们展开Project这个文件夹,右键到RTD2743PD_TPV_LENOVO_LI2361D_LG_LM230WF8.h文件,打开对话框。可以看到,RTD2743PD_TPV_LENOVO_LI2361D_LG_LM230WF8.h这个文件的Code Bank = ,表示它的存放位置是与它的上一层文件夹的存放位置相同,即,也存放在Common Bank .也会有另外一种情况:

7、子文件与上层文件夹的数据存放位置不相同 ,如下所示:右键Scaler,属性,可以知道,Scaler文件夹中的文件存放位置为Bank 0,表示在默认情况下,子文件夹中的文件存放位置也是在Bank 0。 可是,我们在图的左侧可以看到,Scaler文件夹下,有些文件名前面会有三个竖排的红点,有些文件名前面没有三个竖排的红点。 当我们右键任意一个带竖排红点的文件,属性时,可以发现,它的存放位置,与上层文件夹是不同Bank的。 右键Scaler文件夹下的Adjust.c文件,属性,可以看到,它的存放位置为Bank 3 ,与Scaler文件的Bank 0并不相同。 当我们右键任意一个不带竖排红点的文件,属

8、性时,可以发现,它的存放位置为,表示它的存放位置与Scaler文件夹相同,也为Bank 0 Realtek的Keil C的各个文件及文件夹的Bank属性规划,是按功能相近原则来存放 ,与Mstar的Bank相同的存放原则不同。3:Bank X Data OverFlow / 移Bank在Keil C中,点击Options for Target LENOVO_LI2361D_LG_LM230WF8,打开对话框,在Bl51 Locate中,可以看到,在编译完成后,会output LENOVO_LI2361D_RTD2743PD_LG_LM230WF8.m51 这个文件,使用它可以查看我们Commo

9、n的大小使用了多少,及各个Bank X使用的情况生成的文件如右所示: 打开后,可以看到,CODE MEMORY的最大范围为0x2BC4+8=0x2BCC,在前面的查看Common Bank 的大小,我们可以知道,设定的Common bank的大小为0x00000x2FFF,所以,Common Bank未溢出。Bank0的最大范围为0xE0ED+1=0xE0EE。Bank1的最大范围为0xBBF5+0x0133=0xBD28。Bank2的最大范围为0xF946+1=0xF947。Bank3的最大范围为0xAEDE+1=0xAEDF。Bank0Bank3的最大范围,都未超过0xFFFF,均未溢出,

10、并且Bank2的Data值最多;Bank3的Data值最少。当改CODE的时候,有可能未考虑到Bank X 区间,造成数据超过了 0xFFFF,就产生了溢出,此时,需要查看XXXX.m51文件,看是哪个Bank X溢出了,溢出了多少个BYTE,并且看哪个Bank X还有足够空间存放这些溢出的BYTE。 从上面的.m51文件,我们可知,此时的Bank 2的范围已经是0xF947,离0xFFFF,只有0x6B8个BYTE,我们手动把adjust.c从Bank 3 设定到Bank 2,造成Bank 2的Data 溢出。编译后,可以看到Bank 2溢出了0x67个BYTE,此时就出现了需要移BANK的

11、情况 。4: Flash存放DATA的方式 此机种使用的是一颗2M bit的FLASH,可以分为4个64K byte的Bank 。回顾前面看到个Common Bank及Bank0 Bank 3各个范围如下:Common Bank最大范围为0x2BC4+8=0x2BCC,Bank0的最大范围为0xE0ED+1=0xE0EE。Bank1的最大范围为0xBBF5+0x0133=0xBD28。Bank2的最大范围为0xF946+1=0xF947。Bank3的最大范围为0xAEDE+1=0xAEDF。经过 Keil C的编译后,生成的二进制的Bin文件,是我们要烧录到2M Flash的资料。以下为生成的

12、bin文件打开此文件,我们可以看到:=Bank0 中:Common Bank 的data如下,长度0x2BCCBank 0的data如下,长度为0xE0EE=Bank1 中:Common Bank 的data如下,长度0x2BCCBank 1的data如下,长度为0xBD28=Bank2 中:Common Bank 的data如下,长度0x2BCCBank 2的data如下,长度为0xF947=Bank3 中:Common Bank 的data如下,长度0x2BCCBank 3的data如下,长度为0xAEDF=由上可得,Bank0Bank3中的Common Bank的内容都是一模一样的,且各个Bank的数据长度与.m51中秀出来的长度也一样。烧录到2M的flash的内容为Keil C转换成的二进制代码。

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

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