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 ...
随机推荐
- 需要知道的开源的框架-IOS
1:SDWebImage,UIImageView+WebCache加载一张图片. 2:UIViewExt用于定位坐标很有用,可以直接拿到bottom,top,left,right. 转:http:// ...
- [AWS S3] Hosting a Static Website on Amazon S3
In this lesson, you will learn how to host a static website on Amazon S3. I will show you how to cre ...
- [Ruby] LEVEL 2 Methods and Classes
Optional Arguments Set default arguments, when we don't need to call it, we can simply skip it. def ...
- 多线程下的performSelector和NSThread的使用
多线程下的performSelector和NSThread的使用 NSThread的多线程使用: 我们可以使用这两种方法来使用线程中的问题 - (id)initWithTarget:(id)targe ...
- java多态 -- 猫狗案列
我们用猫狗案例来表明在java中使用多态的好处: class Animal{ public Animal(){} public void eat(){ System.out.println(" ...
- openstack初探
一 .openstack三大核心功能: 计算--Nova.存储--Cinder.网络--Neutron. Nova:提供了计算资源的管理,可以管理跨服务网络的VM实例.还提供对多种Hypervisor ...
- ACCSESS数据库导入到SQL SEVERES2005
首先打开Access数据库然后选择一张表,右击选择要导入数据库的类型(此处已sql2005为例) 然后选择新建 点击下一步 选择导入数据库类型(sql) 输入一个名称,在前面能用到(此处建的是250) ...
- jquery属性选择器之 attr
在温习jquery手册的时候,注意到这个,坐下记录. attr(name|properties|key,value|fn) 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配的元素的一个或 ...
- jquery获取元素到页面顶部距离
jquery获取元素到页面顶部距离的语句为: $(selector).offset().top
- 生成PDF并下载。
例子是生成一个pdf格式的证书: //创建Document Document document = null; //为该Document创建一个Writer实例 PdfWriter writer = ...