接着上次的说吧。
首先问一个问题:
中断函数为什么要加:#pragma CODE_SEG __NEAR_SEG NON_BANKED 这个声明?这个声明是干什么用的?
这要还是要从FLASH分页和非分页的区别说起。
下面详细说一说,FLASH里非分页和分页的使用。 要明白一点,分页是不可见的,要用的时候PPAGE参与寻 址。
1 FLASH里非分页工作机制
FLASH一共为128K,一页是16K,那么应该有8页才是,但是实际只有6个分页。有2个非分页放在4000-7FFF ,和C000-FFFF两个逻辑地址窗里。那么,当程序的寻址在64K之内(2^16=64K,16位机的寻址能力是64K)时, 就不用分页了,直接使用那两个非分页的数据。实际上,3E页 3F页是可见的,其实他们就是那2个非分页的映 射。因此,使用非分页FLASH,就不须设置PPAGE寄存器,直接使用逻辑地址即可。见图1。
这点我们可以从以下看出:
/* non-paged FLASHs */
ROM_4000 = READ_ONLY 0x4000 TO 0x7FFF;
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;
PLACEMENT
NON_BANKED, INTO ROM_C000/*, ROM_4000*/;
很直观地看出,把这两个可以直接使用逻辑地址的页面设为NON_BANKED, 那么中断函数放在NON_BANKED里 ,就可以把函数放在64K的寻址程序段中。这么一来,进中断就方便多了,效率也高很多。这就是对本文开篇 的解释。
大家记住这一点,在XS128里也有类似的一招。
2 FLASH里分页工作机制
好了,上面是3E页 3F页是可见的分页区,还有3D 3C 3B 3A 39 38不可见的分页区。当你的程序要寻址 64K以外的空间,即不是是可见的3E页 3F页时,就要涉及分页了。
PPAGE是MMC模块的东西,我搞了个图片大家看看,如图2。每一页在DG128中的逻辑地址都是由PPAGE中的 页号和重叠窗口内地址组成的24位绝对地址。通过设置寄存器PPAGE,可以使用全部的FLASH空间。例如:程序 要将数据存入$3D页,设置PPAGE的值为$3D,那么逻辑地址范围说是$3D8000-$3DBFFF。有一点要注意:为了分页描述的完整性,可以如下理解:对于3E页 3F页有两个逻辑地址映射到物理地址。拿3E页来说,有$004000-$007FFF和$3E8000-$3EBFFF。
对于程序是如何寻址,这个是内核的东西,大家可以看看CPU这个文档。
通过分析,相信大家知道地址这个东西是非常有用的吧。下次说说XS128,XS128的RAM FLASH EEPROM都可 以分页。更高级,更主动,编程弹性更大。
图1
关键字:飞思卡尔 HCS12(x) memory map
引用地址:
飞思卡尔 HCS12(x) memory map解说之2 .
推荐阅读最新更新时间:2024-11-06 17:51
三星中国特供新Galaxy A7现身:Exynos 7885+6GB内存
虽然三星手机在中国一落千丈,不过对于这么一大块肥肉,韩国巨头肯定不会轻易放弃,产品也再继续,针对中国市场特供的Galaxy A系列也有了新成员。 GeekBench数据库中近日出现了一款编号“SM-A730F”的三星手机,不出意外将命名为Galaxy A7 (2018),此前我们还见到过SM-A530F Galaxy A5 (2018)。 它们都采用了三星新款处理器Exynos 7885,14nm工艺打造,内置两颗A73、六颗A53 CPU核心,主频分别为2.1GHz、1.6GHz,GPU则是Mali-G71。 跑分为单线程1478、多线程4170,相比骁龙625、Helio P20高出不少,但比骁龙660单线
[手机便携]
labview深入探索-----内存管理和缓存重用
使用过常规C语言的朋友都知道,C允许编程者,申请内存,再分配内存和释放内存,这为编程者提供了极大的方便的同时,也造成了非常多的隐患,可以说,C程序的运行中许多莫名其妙的错误都和内存泄露有关.程序可能连续运行几个小时没有任何问题,但突然就发生错误,对于一个比较复杂的程序,追踪内存泄露非常困难,经常要借用第三方的专门的内存分析工具. C的内存错误最多的是两种情况: 1.数组越界: int Array ;//系统自动分配10*4BYTE的空间 for(int i=0;i 100;i++) Array =i; //写入前10个元素时没有问题,超过10个,C会继续向连续的内存空间写数据 如果该内存空间无用,没有问题.如果这段内存
[测试测量]
传飞思卡尔将关闭爱尔兰设计中心
script language="javascript" var dran=Math.floor(Math.random()*1000000);document.write(" --> script LANGUAGE="JavaScript1.1" SRC="http://chinaecnetafp.allyes.com/main/adfshow?user=ChinaecnetAfp|SecondPage|NEWS_284_213&db=chinaecnetafp&border=0&local=yes&js=ie" /script
[焦点新闻]
Freescale+HC08+MCU集成开发环境的设计
1 引言 Freescale(其前身为Motorola半导体部)公司推出的系列MCU,具有单一电源供电、支持在线编程的内部Flash。在线写入、读出稳定,为研制新型嵌入式应用开发工具提供了技术基础。Freescale公司的MCU应用非常广泛,销量已多年名列前茅,其中HC08系列MCU,功耗低、运用灵活.占销量中的重要部分。开发廉价且实用的Freescale HC08系列MCU的编程调试开发工具对该系列MCU在我国的推广应用具有重要价值。目前市面上能支持HC08的集成开发环境(IDE).除了CodeWarrior,虽对HC08系列MCU都支持。但系统庞大,功能复杂。价格贵,另外一些高校如清华、复旦等,只能支持某几款芯片,对于有200
[单片机]
美光LPDDR5 内存获得 ISO 26262 安全标准 ASIL-D 等级认证
随着自动驾驶汽车愈发迅猛的发展驱势,人们对汽车的功能安全也更加关注。由于许多新兴高级驾驶辅助系统(ADAS)平台的组件与系统非常复杂,与数据中心相比有过之而无不及,因此确保汽车的硬件系统符合各项安全风险防控标准至关重要。事实上, 当前许多 L2 和L3 级别的自动驾驶汽车都使用了数据中心组件与系统级芯片 (SoC),如专用视觉处理器、GPU与高性能内存等。 ISO 26262 标准半导体分类 ISO 26262标准旨在规范自动驾驶汽车的功能安全。该标准刚出台时,并未过多涉及半导体领域,但之后经过再三考虑,很快作出了调整,将半导体纳入考核范围,进一步保证自动驾驶的功能安全。根据器件的复杂程度和必要的相关安全机制,半导
[嵌入式]
飞思卡尔新CEO立志:市场份额增长
当飞思卡尔新任CEO Gregg Lowe接过FTF讲台上的话筒那天,距离他继任刚刚过去13个昼夜。 后来,当问到飞思卡尔的强项和弱项时,Lowe简短解释说,因为他刚继任不就,还没有资格就此问题做出回答。 但是Lowe,这个6月5日继任为飞思卡尔新任CEO的人,让所有人都明白了一件比任何都重要的事情。他多次强调,他的首要任务是改善飞思卡尔的市场份额,并使公司的增长速度高于整个半导体产业。 “经过这十几天我还并不能讲出哪点具体的弱项,” Lowe表示。“我想告诉你们的是公司的员工们都认为自己有能力将工作做得更好,来为公司的增长和增加市场而出力。” Lowe强调,他现在还不能一一列出飞思卡尔在哪些产品领域拥有最好的机遇去打造更
[半导体设计/制造]
飞思卡尔智能车之舵机算法
这篇文章,我将会从舵机的控制策略来向介绍我的调试经历,供新手进行参考,尽量详细的记录我们调试一步一步变化的过程,坦白的说我们的车子最终跑的不是很好,原因是各个方面的。但是我认为我们遇到的问题对新手应该还是有些用处的,时间原因,我将会不定期更新,望谅解。(已完结) 前言: 想要控制舵机,就需要先了解舵机的工作原理,这一点前辈们的资料相当的丰富,大家可以先行学习一下。 然后因为我们组做的是光电组,所以就引入一些摄像头的一些名词,其他的组别也可以根据这个思路进行舵机调节,不影响学习(仅限赛道组,无赛道组例外) 阶段一: 刚刚入手舵机首要目标当然是理解它是如何工作的,控制原理很简单,这个了解了以后我们就开始想办法让他工
[单片机]
MetaRam芯片组内存容量达TB级
硬盘容量最近才开始达到TB级水平。MetaRam的首席执行官威伯的目标是在服务器中配置TB级的内存。 MetaRam已经设计了一种芯片组,使计算机厂商或客户能够廉价地将系统的内存翻一番或翻二番。目前,市场上的标准2路服务器最多可以配置64GB内存。通过配置使用MetaRam芯片的DIMM,系统可以配置的最大内存量就可以达到128GB或256GB。最大内存容量为256GB的8路服务器的内存容量可以提高到512GB或1TB。 威伯说,MetaRam的芯片组旨在缩小日益扩大的处理器处理能力和内存容量间的差距。处理器的处理能力仍然在以每18个月翻一番的速度在增长,但内存容量每3年才能翻一番。因此,内存容量对计算机处理能力的
[新品]