在上一篇文章中我们做了对HC9S12系列单片机存储空间的划分,但是相比于整个bootloader的工作而言,这只是非常基础的一步,有很多基础的概念在上一篇的操作中我们并没有涉及到。比如较复杂单片机中单片机的存储空间到底是什么样的,具体怎么用C语言对它进行寻址。因为我们单片机的存储空间一般由如下的构成,RAM,ROM以及EEPROM等等。比如在我在本篇中举例介绍的9S12G128单片机,它的RAM空间有8KB,EEPROM有4KB,FLASH有128KB。如何将这几个存储空间合理的组织起来想必单片机的厂商花费了很大的精力,但是对于我们,我们只需要只要他们的结构是什么样的,如何去使用这些空间就足够了。
首先先要复习一下RAM, EEPROM, FLASH的简单概念。RAM是机器运行时的内存,单片机运行时可读可写,但是断电后所有数据都会丢失。EEPROM是电擦除的可编程存储,单片机运行时可以读可以写,断电后数据不丢失。由于存储空间小而且读取速度快,因此一般作为数据存储器。有很多程序运行时得到的参数希望下次重启后还能够再被使用,还有一些程序调试时的参数我们都可以将它们放在数据存储器,方便程序参数的修改与保存,因此一般也将EEPROM称作D-Flash。Flash也是电擦除的存储设备,单片机运行时可读可写,断电后数据不丢失,存储空间大,但读取速度相对较慢,一般作为程序存储器也称作P-Flash。但EEPROM与Flash比较还有就是一次擦写或者写入的数据量大小,一般EEPROM可以字节擦写与写入,但Flash是字段写入与块擦除。当然了,对于单片机存储程序的开发,我们没有必要涉及到Flash与EEPROM具体的写入擦除控制,在存储媒介上一般都做好了相关的接口,类似于HCS12VR系列的单片机,如图所示是该系列下的Flash存储器的接口架构。对Flash的控制只需要通过操作该Flash的控制器即可,在图中的架构下,操作Flash只是设置好Flash控制器的操作时钟,向单片机的相应寄存器按照命令的要求写入相关数据即可。EEPROM的操作也是同理。
除了基本的存储器的知识外,HCS12的存储空间的结构也是理解的关键。 要理解存储结构,首先需要分清S12系列的逻辑地址与全局地址。所谓逻辑地址,就是单片机在运行时只要不涉及到显式的对存储器进行读写的地址都是逻辑地址,比如程序运行时每条指令存放的位置,在内存中数据的位置,只要不涉及到对存储器内容的显式编写,通通都是逻辑地址。而逻辑地址的必要性也十分明显,那就是相对于几百KB甚至几MB的存储器,地址总线只有16bits,也就是CPU能直接寻址得到的地址只有64KB。为保证程序运行时地址的一致性,就将程序的各个存储器地址分别映射到这64KB中,每次我只需要通过这64KB就可以访问整个内存空间了(当然还有几个寄存器的帮助才行,但这也总好过直接对存储器进行操作了,这样的话也单片机的设计也太不友好了)。前面的逻辑地址实际上可能会将相同物理媒介的地址分块映射,但是全局地址基本上就可以理解为将各种存储空间都统一进行一个编排,比如说将RAM放在一块,EEPROM放在一块,Flash放在一块。可是,这些不同的物理存储器在全局地址的角度看来都有统一的存储格式,典型的S12系列内存映射图如下图所示:
这张图乍一看还是有点懵逼的,我这就带你来理解理解。首先左边就是逻辑地址的排布,逻辑地址就是正常运行时的地址,要是不做到Flash擦写或者EEPROM的擦写,你基本上不会用到全局地址。我们一般程序空间中使用的都是逻辑地址。注意:这里还没有提到全局地址,所以说到的也都是逻辑地址。逻辑地址本身是其他存储器的地址为了方便地址总线直接进行寻址,映射成64KB的地址的。上图所示的逻辑地址起始于0x0000-0xFFFF共64KB。由于寄存器也映射到逻辑地址,而且访问速度最快,逻辑地址0x0000-0x03FFF(共1KB, 如果需要16进制计算器,windows自带计算器的程序员模式就好)如上图为寄存器空间。这里注意,图中的寄存器区结束不是0x0400,此地址已经是下一块的起始地址了。寄存器的逻辑地址表在manual reference中都有,可以很方便的查看。从上图中类似的,我们可以读到,给EEPROM的逻辑地址为0x0400-0x05FF (512 B), RAM的逻辑地址为0x3800-0x3FFF(512B),ROM的逻辑地址为:0x0600-0x37FF(12KB), 0x4000-0x7FFF(16KB),0xC000-0xFFFF,以及有点特殊的0x8000-0xBFFF,可见ROM的逻辑地址已经被分成了好几块。
而全局地址就是右边的了,它将所有存储的空间从0开始一直顺序编码。在右侧我们可以看到,由于统一编码,所以相比较而言就多了四个二进制位来表示。全局地址自0x0_0000-0x3_FFFF(256KB)(这样的编码只是为了将高位分开,实际上0x0_0000就是0x00000,0x3_FFFF就是0x3FFFF)。很显然,这个地址空间完全可以将此单片机的所有物理存储统一编址从而方便对于物理存储空间的定位。从图上,我们也可以看到,寄存器的全局地址为0x0_0000-0x0_03FF(1KB),EEPROM与RAM的全局地址共享0x0_0400-0x0_3FFF(15KB),0x3_0000-0x3-FFFF(64KB)为FLASH 的全局地址。至于中间的那部分全局地址用来做什么,目前可以理解为未分配,在此系列单片机中,没有该全局地址对应的物理存储,所以地址都是无效的。
了解了逻辑地址与全局地址的基本概念后,就要说一下全局地址与逻辑地址是什么关系了。在此之前,就要说一下分页存储的概念了,由于一般而言地址总线不过16位或者8位。因此需要将存储空间较大的Flash像我们的书本一样分成一页一页的,通过页码来索引究竟是那一块存储空间。我们逻辑地址的0x8000到0xBFFF就是负责这样的一个映射作用,通过一个PPAGE寄存器来记录是存储器上的哪一页,再通过0x8000-0xBFFF间的逻辑地址来索引具体的存储内容。在上图右边,Flash的全局地址按16KB为一页分成0xC, 0xD, 0xE与0xF的四页, 这个页码就是PPAGE寄存器的内容。从图中我们可以理一下逻辑地址与全局地址的关联:
逻辑地址范围 全局地址范围
PPAGE: 0xC 0x8000 - 0xCFFF 0x3_0000 - 0x3_3FFF
PPAGE: 0xD 0x8000 - 0xCFFF 0x3_4000 - 0x3_7FFF
其余的页面也都是如此,这里再次重申一下,只有专门读写存储器的时候才会使用全局地址,一般情况下指令跳转,内存中指针读取数据,通通都是逻辑地址。希望大家在操作的时候能够分清楚。Flash中的数据,通过逻辑地址寻址时只能读取,只有编写Flash的擦除写入程序才能读写。
这里也再总结一些本篇文档的内容:
1. 理解逻辑地址与全局地址在HC9S12系列单片机中的具体操作
2. 理解逻辑地址与全局地址的对应关系,分页地址的应用
在有了这些基本的存储概念后,我们才能能正式的进入内存中程序的跳转,Flash的擦写等工作中来。
上一篇:xs128 双定时器PIT0和PIT1
下一篇:飞思卡尔看门狗详解
推荐阅读
史海拾趣
在电子行业的早期,Charcroft Electronics Ltd公司以其对新兴技术的敏锐洞察力和创新研发能力脱颖而出。公司不断投入研发资源,开发出一系列具有竞争力的电子元器件产品,这些产品以其优异的性能和稳定性赢得了市场的广泛认可。同时,公司还积极与高校和研究机构合作,共同探索新的技术应用领域,为公司的长远发展奠定了坚实的基础。
在电子行业快速发展的今天,创新是企业持续发展的关键。CBI公司始终坚持创新驱动的发展战略,不断投入研发资源,推出具有创新性的电子产品。这些产品不仅满足了消费者的多样化需求,也为公司带来了丰厚的利润回报。同时,公司还注重知识产权保护,通过申请专利、商标等方式,保护自己的创新成果不受侵犯。
请注意,以上故事均为虚构,旨在为您提供一个关于电子行业里公司发展起来的故事框架。在实际情况中,不同公司的发展历程和故事可能会有所不同。
随着技术的成熟和市场的认可,FerriShield开始拓展产品线。公司研发团队不断改进和优化原始的铁磁屏蔽材料,并推出了针对不同应用场景的系列产品。例如,针对智能手机和平板电脑的轻薄型电磁屏蔽膜,以及针对大型数据中心的高效电磁屏蔽板。这些新产品的推出,使得FerriShield的市场份额逐步扩大。
面对日益严峻的环境问题,Allied公司积极承担社会责任,致力于可持续发展。公司注重环保生产,采用环保材料和工艺,减少对环境的影响。同时,公司还关注未来发展趋势,制定了一系列战略规划,包括加大研发投入、拓展新兴市场、提升品牌影响力等,为公司的未来发展奠定了坚实的基础。
这些故事基于Allied Wire & Cable Inc公司的历史和发展情况构建,旨在展现其在电子行业中的成长和进步。如需更详细的信息,建议查阅公司的官方网站或相关新闻报道。
为了保持市场竞争力,Allied公司始终注重技术升级和品质提升。公司投入大量资金引进先进的生产设备和技术,不断提高产品的技术含量和附加值。同时,公司还建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控,确保产品的品质和性能达到最高标准。
在1982年,Chauvin Arnoux发明了CONPA系列万用表,这款万用表具有多种适配器扩展功能,可适应不同的测量需求。通过适配器,CONPA万用表可以转变为照度计、声压计、热风速计等多种测量工具,为用户提供了更为灵活和便捷的测量方案。这一创新不仅展示了Chauvin Arnoux在测量技术上的深厚实力,也满足了用户对于多功能测量工具的需求。
这些故事展示了Chauvin Arnoux在电子行业发展的历程中,不断创新和进步的精神。通过不断推出具有创新性和实用性的测量仪器,Chauvin Arnoux在电气测量和工业应用领域取得了卓越的成就,为全球用户提供了高质量的测量解决方案。
请注意,以上内容基于我所了解到的Chauvin Arnoux公司的历史和发展情况,可能并不完全包含所有重要的故事和细节。如果需要更详细和全面的信息,建议查阅公司的官方资料或相关历史文献。
1:布板时先把布线区缩小,按住右键,看看画板能不能上下左右移动, 如果不能,就向不能移动的反方向移直到合适位置,在定原点,这样 做,便于你画板时能保证移动自如。 2:把tools/preferences/display--Transparent Layer选中(透明显示) 这样元 ...… 查看全部问答∨ |
|
现在要在带有wince5.0系统的车载设备里,写一个程序,要求可以想指定IP和端口发送数据: 1、这个用socket可以的吧? 2、我写了一套,在PC端可以运行,在局域网里实验的,要在外网用,是不是布到外网就可以了呢? 3、移植到wince里,就不能正常运 ...… 查看全部问答∨ |
|
蓝牙驱动的加载问题:是这样的,为什么样WNCE一开机蓝牙驱动的串口就打开,现在想在点了蓝牙界面后,才打开串口通讯,请问各位高手怎么修改呀,我用的是三星2443… 查看全部问答∨ |
MDK3.10不能软件模拟STM32, 在网上下载了3.15B。可是EMSTM32V1(LINK-ME)不能在3.15下用.请问能解决吗?embed的3.15何时出来?… 查看全部问答∨ |
某知名美资芯片公司招聘若干Verification Engineer工作地点:上海有意者请将中英文简历发至公司邮箱:echo.tao@talentsii.com;任何问题均可以联系MSN:Echo.Tao@hotmail.comSenior Level Verification engineer Network protoc ...… 查看全部问答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 16:58 编辑 这个板板吸了很久的灰了,上过一次电。 全新。 现在想用这个东西交换,有闲置好东西的同志请联系我。 当然,也可以出售。 和那位缺钱的兄弟报价一样,120RMB包邮。 … 查看全部问答∨ |
之前做的扩展板,看这里 https://bbs.eeworld.com.cn/thread-361619-1-1.html https://bbs.eeworld.com.cn/thread-362358-1-1.html 最近把sd,字库,汉字显示,fatfs,bmp和jpg显示,vs1003播放音频一口气调完了,bug不少,先上图和视频… 查看全部问答∨ |