对于函数的自变量、局部变量和全局变量声明如果没有指定内存类型,则内存模式将成为内定的内存类型。如果
指定了内存类型的变量,则不理会内存模式,完全有所指定的内存类型为主。
    
SMALL模式:小模式
    所有的变量,局部变量或全局变量都指定存在内部RAM的 0—0x7F 的地址范围,此模式如同将所有的
变量都定义成 data 类型的内存。
    
COMPACT模式:压缩模式
    所有的变量将被指定到其地址范围为 0—0xFF 的外部数据存储器,此模式如同将所有的变量都定义
成 pdata 类型的内存。
    
LARGE模式:大模式
    所有的变量将被指定到其地址范围为 0—0xFFFF 的外部数据存储器,此模式如同将所有的变量都定义
成 xdata 类型的内存。

Re: Bank Switch無法編譯後的訊息

[QUOTE]原發表者是 Vic 

1.*** WARNING L15: MULTIPLE CALL TO SEGMENT 
SEGMENT: ?PR?SD_INITIALIZE?DRVSD 
CALLER1: ?C_C51STARTUP 
CALLER2: ?PR?TIMER0_ISR?INTERRUPT


這表示SD_INITIALIZE這個函式被C_C51STARTUP和中斷服務函式 
TIMER0_ISR呼叫到。 
這樣會有什麼問題? 
若是SD_INITIALIZE被呼叫時,TIMER0_ISR中斷發生而再呼叫 
SD_INITIALIZE就會有reentrant(重入)的問題。 
Keil C51 一般的函式的區域變數是放在同一個地方的,所以不能被 
重入。如果程式保證這樣的情況不會發生(例如呼叫之前先disable 
interrupt)可以不理會這個警告。 

2.*** ERROR L107: ADDRESS SPACE OVERFLOW 
SPACE: XDATA 
SEGMENT: ?XD?DRVMS 
LENGTH: 0515H 

XDATA 使用過量囉!減減肥吧! 

3.*** WARNING L17: INTERRUPT FUNCTION IN BANKS NOT ALLOWED 
SYMBOL: INT0_ISR 
SPACE: BANK0 

不可以把中斷函式放在 bank area 

4.*** WARNING L4: DATA SPACE MEMORY OVERLAP 
FROM: 003FH 
TO: 0050H 

某些data區被兩個器共用 

5.*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT 
SYMBOL: MEM_POOL 
SEGMENT: ?XD?MTM808 
6.*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL 
SYMBOL: SYSTEM_MODE 
MODULE: .\debug\mtm808.obj (MTM808) 
ADDRESS: 3A7CH 
7.*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL 
SYMBOL: ADPCM_STATE 
MODULE: .\debug\SystemManager.obj (SYSTEMMANAGER) 
ADDRESS: 358FH 

參照到一個無法使用的記憶段(可為前面之over fllow錯誤引起) 

13.*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL 
SYMBOL: DATEI 
MODULE: .\mtm809.LIB (CMDIF) 

找不到external symbol的實體,所以無法連結

KEIL C编译器常见警告与错误信息的解决办法的更多相关文章

  1. 用异提交时,后台通过校验规则文件,校验不通过时,跳转到INPUT视图时,前台显示错误信息的解决办法

    1.第一种: 最近项目使用了struts2的校验(其实我觉得后台校验,特别是struts的校验,完全可以放在其他地方处理,比如交给js或者业务逻辑),而且系统刚好还使用了extjs,此时问题出现了:假 ...

  2. PS Studio调用.exe输出错误信息的解决办法

    在一个button_click下调用了如下外部可执行文件: $button1_Click = { #TODO: Place custom script here .\PsExec.exe \\192. ...

  3. Apache 启动失败没有错误信息的解决办法

    在cmd命令行 进入到apache安装bin目录 执行以下 httpd.exe -w -n "apache2.2" -k start 注意apache2.2是你安装的apache服 ...

  4. Xcode常见警告和错误

    Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo”  is depreca ...

  5. Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...

  6. SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...

  7. [经使用有效]Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...

  8. sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法

    sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法: 需要下载Emmet插件,按网上写的步骤按ctrl+shift+P打开命令面板,输入install,鼠标点击 ...

  9. android studio 错误汇总以及解决办法

    android studio 错误汇总以及解决办法  参考 https://www.jianshu.com/p/7c7de6562231 问题1. Error:Execution failed for ...

随机推荐

  1. listview 遇到问题java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

    开发的时候 遇到 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 这个异常有时候会有,有时候正常 不太好捕捉 猜测 已经 ...

  2. 重新启动linux上的tomcat

    1.进入tomcat安装文件夹 2.cd bin 3../shutdown.sh 4../startup.sh

  3. [转] Linux中gcc,g++常用编译选项

    http://blog.sina.com.cn/s/blog_5ff2a8a201011ro8.html gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处 ...

  4. Linux 套接字编程中要注意的细节

    隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误.如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失.反过来,这可能传播错误,使定位问题的源头变得困难. 捕获 ...

  5. 学习《Spring 3.x 企业应用开发实战》Day-1

    Day-1 记录自己学习spring的笔记 提要:根据<Spring 3.x 企业应用开发实战>开头一个用户登录的例子,按照上面敲的. 1.项目分层

  6. Android(java)学习笔记216:多线程断点下载的原理(Android实现)

    之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1.新建一个Android工程: (1)其中我们先实现布局 ...

  7. 教学项目之-通过Python实现简单的计算器

    教学项目之-通过Python实现简单的计算器   计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...

  8. python-Pickle序列化

    [Python之旅]第三篇(二):Pickle序列化   python 序列化 pickle 摘要: 说明:关于Pickle的说明     作如下说明: 1 2 3 4 5 6 7 序列化的概念很简单 ...

  9. javascript实现Map

    function Map() { this.elements = new Array(); // 获取MAP元素个数 this.size = function() { return this.elem ...

  10. mac在 aliyun linux ecs实例上安装 jdk tomcat mysql

    用了一个ftp 工具 把 gz rpm 等 传递到ecs 上 -- 用这个Transmit 用ssh远程登录,然后依次安装 jdk tomcat  mysql 到 /usr/local/... 设置环 ...