智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: oo7ak47666
打印 上一主题 下一主题

#pragma CODE_SEG __NEAR_SEG NON_BANKED

  [复制链接]

4

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1487
威望
360
贡献
1085
兑换币
0
注册时间
2010-7-24
在线时间
21 小时
21#
发表于 2011-3-2 21:58:37 | 只看该作者
http://hi.baidu.com/%D0%C2%CA%D6 ... a5ac99d04358f0.html
FLASH里非分页工作机制
   FLASH一共为128K,一页是16K,那么应该有8页才是,但是实际只有6个分页。有2个非分页放在4000-7FFF,和C000-FFFF两个逻辑地址窗里。那么,当程序的寻址在64K之内(2^16=64K,16位机的寻址能力是64K)时,就不用分页了,直接使用那两个非分页的数据。实际上,3E页 3F页是可见的,其实他们就是那2个非分页的映射。因此,使用非分页FLASH,就不须设置PPAGE寄存器,直接使用逻辑地址即可。

很直观地看出,把这两个可以直接使用逻辑地址的页面设为NON_BANKED, 那么中断函数放在NON_BANKED里,就可以把函数放在64K的寻址程序段中。这么一来,进中断就方便多了,效率也高很多。
回复 支持 反对

使用道具 举报

8

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1765
威望
287
贡献
1420
兑换币
0
注册时间
2010-11-26
在线时间
29 小时
22#
发表于 2011-3-18 21:48:00 | 只看该作者
呵呵 对头!
回复 支持 反对

使用道具 举报

1

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
威望
302
贡献
71
兑换币
6
注册时间
2011-1-24
在线时间
16 小时
23#
发表于 2011-4-29 17:58:37 | 只看该作者
回复 支持 反对

使用道具 举报

3

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
威望
211
贡献
20
兑换币
0
注册时间
2010-3-13
在线时间
34 小时
24#
发表于 2011-5-12 15:15:21 | 只看该作者
这要还是要从FLASH分页和非分页的区别说起。
    下面详细说一说,FLASH里非分页和分页的使用。 要明白一点,分页是不可见的,要用的时候PPAGE参与寻

址。
   FLASH里非分页工作机制
   FLASH一共为128K,一页是16K,那么应该有8页才是,但是实际只有6个分页。有2个非分页放在4000-7FFF
,和C000-FFFF两个逻辑地址窗里。那么,当程序的寻址在64K之内(2^16=64K,16位机的寻址能力是64K)时,
就不用分页了,直接使用那两个非分页的数据。实际上,3E页 3F页是可见的,其实他们就是那2个非分页的映
射。因此,使用非分页FLASH,就不须设置PPAGE寄存器,直接使用逻辑地址即可。

   这点我们可以从以下看出:

/* 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的寻址程序段中。这么一来,进中断就方便多了,效率也高很多。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zzjslt/archive/2010/11/17/6016709.aspx
回复 支持 反对

使用道具 举报

3

主题

203

帖子

0

精华

高级会员

Rank: 4

积分
764
威望
491
贡献
215
兑换币
19
注册时间
2011-4-18
在线时间
29 小时
25#
发表于 2011-5-22 18:49:29 | 只看该作者
对啊
回复 支持 反对

使用道具 举报

24

主题

722

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7760
QQ
威望
3248
贡献
2506
兑换币
978
注册时间
2010-10-12
在线时间
1003 小时
26#
发表于 2011-11-20 22:16:37 | 只看该作者
GOOD
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
威望
196
贡献
38
兑换币
0
注册时间
2011-6-21
在线时间
16 小时
27#
发表于 2011-12-2 22:38:59 | 只看该作者
懂了
回复 支持 反对

使用道具 举报

4

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
515
威望
385
贡献
34
兑换币
0
注册时间
2011-10-26
在线时间
48 小时
28#
发表于 2011-12-3 21:42:44 | 只看该作者
我也不知道
回复 支持 反对

使用道具 举报

3

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
QQ
威望
153
贡献
104
兑换币
0
注册时间
2011-11-27
在线时间
16 小时
29#
发表于 2011-12-4 21:27:47 | 只看该作者
顶一下
回复 支持 反对

使用道具 举报

21

主题

171

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2840
威望
1475
贡献
557
兑换币
197
注册时间
2011-8-14
在线时间
404 小时
30#
发表于 2012-1-11 16:33:55 | 只看该作者
这要还是要从FLASH分页和非分页的区别说起。
    下面详细说一说,FLASH里非分页和分页的使用。 要明白一点,分页是不可见的,要用的时候PPAGE参与寻
址。
   FLASH里非分页工作机制
   FLASH一共为128K,一页是16K,那么应该有8页才是,但是实际只有6个分页。有2个非分页放在4000-7FFF
,和C000-FFFF两个逻辑地址窗里。那么,当程序的寻址在64K之内(2^16=64K,16位机的寻址能力是64K)时,
就不用分页了,直接使用那两个非分页的数据。实际上,3E页 3F页是可见的,其实他们就是那2个非分页的映
射。因此,使用非分页FLASH,就不须设置PPAGE寄存器,直接使用逻辑地址即可。
   这点我们可以从以下看出:
/* 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的寻址程序段中。这么一来,进中断就方便多了,效率也高很多。

http://blog.csdn.net/zzjslt/article/details/6016709
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-27 00:00 , Processed in 0.121674 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表