飞思卡尔 HCS12(x) memory map解说之3

来源:本站
导读:目前正在解读《飞思卡尔 HCS12(x) memory map解说之3》的相关信息,《飞思卡尔 HCS12(x) memory map解说之3》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《飞思卡尔 HCS12(x) memory map解说之3》的详细说明。
简介:了解XS128的MEMORY map和core,对充分榨取他的现有资源,合理分配RAM很有帮助。上次讨论到cpu12内核的DG系列单片机,基本上该涉及的东西都有所提及。包括:1 MEMORY map的原因,为什么要搞这个概念出来。2 MEMORY map包含的内容,有那三点...3 一些相关的概念性的东西。如果不明白,看看前面几篇文章就会明白一些的。

了解XS128的MEMORY map和core,对充分榨取他的现有资源,合理分配RAM很有帮助。上次讨论到cpu12内核的DG系列单片机,基本上该涉及的东西都有所提及。包括:1 MEMORY map的原因,为什么要搞这个概念出来。

2 MEMORY map包含的内容,有那三点...

3 一些相关的概念性的东西。如果不明白,看看前面几篇文章就会明白一些的。这次再补充三个概念,希望能引起大家的注意和进一步讨论:

1 在PRM里设置了映射之后,怎么把程序或变量放在那个地址区呢?比如:我就想把int a;这个a分配到未分页的RAM1区,怎么办?这个说来话太长。

简单地说用:#pragma DATA_SEG [xxxx] <segment_name>。如果没有#pragma DATA_SEG,全局变量将会被放到DEFAULT_RAM段中。当然,如果这个变量频率引用的话,放在非分页RAM1区可以提高他的读取效率,毕竟他不需要RPAGE参与寻址,是near寻址,而不是far,用简单的指令就可以搞定。

同样,如果反复调用一个函数,把这个函数放在非分页flash里也有异曲同同之妙。

关于这个问题的详细讨论,张教主有一篇文章,还有一个DP512的PPT都有讲解。大家可以网上下载看看,如果需要,也可以向我email要.2 建程序里的SAMLL BANKED LARGE是什么作用?

SMALL平面的64K的地址空间。所有的函数都是near。

BANKED采用分页地址。所有的用户的函数都被默认为far

far类型的数据指针可以在SMALL和BANKED中使用

LARGE, 默认为数据和代码均为分页模式。所有的函数和数据指针都是far类型。这种内存模型运行时间比较长,因此很少使用.用LARGE基本上浪费了16位机寻址64K的优势。

因此,用SMALL和BANKED模式的较多。大家可以看看建工程时SMALL和BANKED模式下有什么不同?映射是一样的,只是DEFAULT_ROM和NON_BANKED有无分开的区别。

3 分页明白了,但是分页映射之后怎么用分页里面的数据?比如 const int a;我把他放在PAGE_3C里面,我如何通过计算PPAGE找到这个a呢?

我们用C语言的过程中,把这些东西都忽略了,这个是内核的东西。简单地说,因为内核会自动调用不同的指令去把你C语言译成机器码。机器码就指令集的表示了。因此,内核的先进性和编译优化过程让你不要管了了。

这样说是因为,随后的博文里将更进一步讨论XS128的memory部分。xs128有128KP-FLASH(ROM) 8KRAM8KD-FLASH( EEPROM) ,有某些分页用不到,比如RAM分页,因为逻辑地址是$2000-$4000,有8K空间,无需分页。但是大一点的RAM的话,就必须要分页了。这么多分页(还有FLASH肯定是要分页了,不分页程序就装不下去),怎么管理呢?总得有个东西来统筹一下吧.

GPAGE就诞生了.....

GPAGE怎么用呢,还是上面的那句话,不是用汇编的话,你基本不用管。 剩下的内容不多了,过几天再写吧,希望大家多多交流讨论。中电网这个平台还是不错的。

提醒:《飞思卡尔 HCS12(x) memory map解说之3》最后刷新时间 2024-03-14 01:22:15,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《飞思卡尔 HCS12(x) memory map解说之3》该内容的真实性请自行鉴别。