ADS1.2错误、警告解决

1. Warning : L6305W: Image does not have an entry point.(Not specified or not set due to multiple choices)

    使用分散加载文件的时候,会提示这样的警告。在ARM Linker的Equivalent Command Line的框里加入: -entry 0x0

 

2.  Error : C3028E: <argument 1 to 'sprintf'>: implicit cast of pointer to non-equal pointer

    调用ADS内部函数sprintf时,参数类型错误。因为sprintf里面的参数是char类型的指针,所以可以在参数前加上(char*)强制转换。

 

3.ARM7+UCOS+ZLG/GUI的时候,如果画窗口的函数放在第一个任务的时候就没法画窗口。
   把任务堆栈改大小为64就可以了.

 

4.自己写的输出字符串函数里面的字符串参数不可以用 " " 括起来,会提示implicit cast of pointer to non-equal pointer。
       原因是因为我写的输出字符串函数的参数是unsigned char 类型,而用 " "括起来的字符是char类型的,所以类型不对。修改一下就可以了。

 

 

问题5:用RealView mdk3.70编译完,两个软件联机调试,显示正常,但是直接将生成的hex文件,加载到lpc2106里就没有显示了?(MDK3.20正常)

解决:   在STARTUP.S里:
  ;未定义指令
 Undefined
        B       Undefined      ;死在这里了,我将Undefined换成ResetInit后,执行正常

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

参考: zhaoyu2005兄弟的
http://bbs.21ic.com/icview-140505-1-1.html?912789

1楼: zhaoyu2005
原来ADS的工程生成的hex文件,直接加载到proteus里的lpc2106,能正常驱动1602显示,用RealView mdk编译完,两个软件联机调试,显示正常,但是直接将生成的hex文件,加载到lpc2106里就没有显示了,哪位大侠指点下

2楼: zhaoyu2005
 今天又看了下,好像直接加载hex文件的话,程序就没有运行到main函数,端口没有初始化成低电平。不知咋回事

3楼:zhaoyu2005
 刚才试了下,进入软中断了,不管用mdk的还是周立功的startup.s,将程序加载到proteus里直接运行,都进入软中断死循环,请高手解释下咋处理


4楼: zhaoyu2005
不好意思,看错了,不是进入软中断了,是进入 Undefined 也就是 在死到在0x00000040了
代码如下:
AREA    RESET,CODE,READONLY
        ENTRY

;interrupt vectors
;中断向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr

ResetAddr              DCD     ResetInit
UndefinedAddr       DCD     Undefined    
SWI_Addr              DCD     SoftwareInterrupt
PrefetchAddr          DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse                    DCD     0
IRQ_Addr               DCD     0
FIQ_Addr               DCD     FIQ_Handler


;未定义指令
Undefined
        B       Undefined     
;死在这里了,我将Undefined换成ResetInit后,执行正常

;软中断
SoftwareInterrupt                       
        B       SoftwareInterrupt       

;取指令中止
PrefetchAbort
        B       PrefetchAbort

;取数据中止
DataAbort
        B       DataAbort

;快速中断
FIQ_Handler
        STMFD   SP!, {R0-R3,R12, LR}
        BL      FIQ_Exception
        LDMFD   SP!, {R0-R3, LR}
        SUBS    PC,  LR,  #4

 

 

 

问题6:移植了UC/GUI到ARM7上,在PROTEUS上仿真,使用UC/GUI自带的例子,不能动态显示。

解决方法:如果用UC/GUI自带的延时函数就会显示不了,用自己写的延时函数可行。原因未明.

 

 

 

问题7:ADS1.2分散加载文件警告 Warning : L6329W: ./src/mem_b.scf(LINE 54, col 13) Pattern *(RW) ONLY matches removed unused sections.

 

解决方法:原因是因为定义了大部分未使用过的段,ADS为了优化代码,给删除了,可以不用理会。去除警告的办法:去除LINKER里Remove unused sections里面的三个勾,但这样程序可能会变得比优化时的大很多。建议不用理会.


问题8:Warning : C2892E: singned constant overflow: '<<'

解决方法:  这个警告是因为在程序中进行移位操作时,ADS默认移位数据为signed形,加上强制转换就可以了。例如PINSEL0 = PINSEL0 & ~( 0x3 << 30)改成PINSEL0 = PINSEL0 & ~( (uint32) 0x3 << 30)。

 

问题8:WIN 7 下使用ADS1.2自动关闭

解决方法:意外退出主要和兼容性设置中的“禁用桌面元素”有关系,在兼容性设置中选择“禁用桌面元素”,并以系统管理员身份运行,应该没有什么问题了。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值