KEIL C编译器常见警告与错误信息的解决办法
对于函数的自变量、局部变量和全局变量声明如果没有指定内存类型,则内存模式将成为内定的内存类型。如果
指定了内存类型的变量,则不理会内存模式,完全有所指定的内存类型为主。
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编译器常见警告与错误信息的解决办法的更多相关文章
- 用异提交时,后台通过校验规则文件,校验不通过时,跳转到INPUT视图时,前台显示错误信息的解决办法
1.第一种: 最近项目使用了struts2的校验(其实我觉得后台校验,特别是struts的校验,完全可以放在其他地方处理,比如交给js或者业务逻辑),而且系统刚好还使用了extjs,此时问题出现了:假 ...
- PS Studio调用.exe输出错误信息的解决办法
在一个button_click下调用了如下外部可执行文件: $button1_Click = { #TODO: Place custom script here .\PsExec.exe \\192. ...
- Apache 启动失败没有错误信息的解决办法
在cmd命令行 进入到apache安装bin目录 执行以下 httpd.exe -w -n "apache2.2" -k start 注意apache2.2是你安装的apache服 ...
- Xcode常见警告和错误
Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo” is depreca ...
- Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...
- [经使用有效]Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法
sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法: 需要下载Emmet插件,按网上写的步骤按ctrl+shift+P打开命令面板,输入install,鼠标点击 ...
- android studio 错误汇总以及解决办法
android studio 错误汇总以及解决办法 参考 https://www.jianshu.com/p/7c7de6562231 问题1. Error:Execution failed for ...
随机推荐
- listview 遇到问题java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
开发的时候 遇到 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 这个异常有时候会有,有时候正常 不太好捕捉 猜测 已经 ...
- 重新启动linux上的tomcat
1.进入tomcat安装文件夹 2.cd bin 3../shutdown.sh 4../startup.sh
- [转] Linux中gcc,g++常用编译选项
http://blog.sina.com.cn/s/blog_5ff2a8a201011ro8.html gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处 ...
- Linux 套接字编程中要注意的细节
隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误.如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失.反过来,这可能传播错误,使定位问题的源头变得困难. 捕获 ...
- 学习《Spring 3.x 企业应用开发实战》Day-1
Day-1 记录自己学习spring的笔记 提要:根据<Spring 3.x 企业应用开发实战>开头一个用户登录的例子,按照上面敲的. 1.项目分层
- Android(java)学习笔记216:多线程断点下载的原理(Android实现)
之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1.新建一个Android工程: (1)其中我们先实现布局 ...
- 教学项目之-通过Python实现简单的计算器
教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...
- python-Pickle序列化
[Python之旅]第三篇(二):Pickle序列化 python 序列化 pickle 摘要: 说明:关于Pickle的说明 作如下说明: 1 2 3 4 5 6 7 序列化的概念很简单 ...
- javascript实现Map
function Map() { this.elements = new Array(); // 获取MAP元素个数 this.size = function() { return this.elem ...
- mac在 aliyun linux ecs实例上安装 jdk tomcat mysql
用了一个ftp 工具 把 gz rpm 等 传递到ecs 上 -- 用这个Transmit 用ssh远程登录,然后依次安装 jdk tomcat mysql 到 /usr/local/... 设置环 ...