4306|4

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

LOCATING CONSTANT (CODE) VARIABLES IN A CODE BANK [复制链接]

[url=[/url]]原文:

Applies to: LX51 Linker/Locator

Information in this article applies to:

    * C51 Version 6.32a and Later

QUESTION

How do I locate a constant variable in a code bank using the Extended Linker ( LX51 ) ? I have a source file with a table declared as follows:

unsigned char const code table [10] =
  { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };

When I compile and link, the functions in this source file are located in the correct bank, but the table is located in the common area.
ANSWER

When you compile a source file (for example FBANK1.C), the compiler creates program segments for your functions and code segments for your code-based variables. Each function is located in a segment named ?PR?function_name?source_file_name. All code variables are located in a segment named ?CO?source_file_name. This is also true for literal strings.

The linker has commands that let you automatically locate all of the program code from a source file in a code bank. However, the code segments from that file are NOT located in the code bank. You must do that manually.

To locate the code variables in a particular bank, link using a similar command line:

LX51 FBANK1.OBJ,B.OBJ SEGMENTS (?CO?FBANK1(B1:0x8000)) ...

If you use the uVision IDE, enter the following in the User Segment box in the LX51 Locate dialog box.

?CO?FBANK1 (B1:0x8000)

This locates the code variables and string literals from FBANK1.C in BANK1.

最新回复

他就不知道用_at_+code吗? 个人觉得: BANK是一块一块存放程序的地方,COMMON是程序的其中一块地方 由编译器,连接器根据不同的存储设置决定怎么放。  详情 回复 发表于 2010-7-1 15:32
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
   大家来说说这个问题是为了说明什么的?

   我是在比较common area 和code bank的时候搜到的。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
当需要超过64K的程序存储器的时候,会用到分BANK的存储器.通常它是从地址0到某个地址为公用区,这个地址范围像通常的存储器一样.而在那个地址以上,可能会分若干BANK,要访问指定的BANK,你需要对特定寄存器写入相应控制字. 如果你的程序在一个高地址的BANK中,而要访问的数据却在另一个高地址的BANK,访问就无法进行了.你要采取某种措施来确保它们在同一个BANK里面.
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 
他就不知道用_at_+code吗?

个人觉得:
BANK是一块一块存放程序的地方,COMMON是程序的其中一块地方

由编译器,连接器根据不同的存储设置决定怎么放。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表