野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11006|回复: 2

对KEIL的Option意外设置导致的奇葩错误现象(深受启发)

[复制链接]
发表于 2015-12-14 23:13:31 | 显示全部楼层 |阅读模式
今天学习串口通信,看完了资料,敲代码。好歹结束输入。进行编译时,出现如下图所示错误“没有任何选择子跟XXX匹配”  。感到十分纳闷。立即搜索百度,发现这样的错误很少有人遇到。倒是看到几位歪果仁遇到这样的情况的。希望对有的同学有所启发吧。


..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_rcc.o(i.RCC_GetClocksFreq).
..\output\USART.axf: Error: L6405E: No .ANY selector matches system_stm32f10x.o(i.SetSysClockTo72).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_gpio.o(i.GPIO_Init).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_usart.o(i.USART_Init).
..\output\USART.axf: Error: L6405E: No .ANY selector matches bsp_usart1.o(i.USART1_Config).
..\output\USART.axf: Error: L6405E: No .ANY selector matches system_stm32f10x.o(i.SystemInit).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_rcc.o(i.RCC_APB2PeriphClockCmd).
..\output\USART.axf: Error: L6405E: No .ANY selector matches bsp_usart1.o(i.fputc).
..\output\USART.axf: Error: L6405E: No .ANY selector matches main.o(i.main).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_usart.o(i.USART_GetFlagStatus).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_usart.o(i.USART_Cmd).
..\output\USART.axf: Error: L6405E: No .ANY selector matches stm32f10x_usart.o(i.USART_SendData).
..\output\USART.axf: Error: L6405E: No .ANY selector matches system_stm32f10x.o(i.SetSysClock).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 13 error messages.
"..\output\USART.axf" - 13 Error(s), 0 Warning(s).
Target not created


连接错误1.jpg


经过仔细研究,发现与Option设置有关。下图的红色方框内的“Excute-Only Code”选项必须去掉选择方可。如果选中了必然出错。
连接错误2.jpg

歪果仁遇到的同样的问题。竟然无人解答:
连接错误3.jpg

连接错误4.jpg




回复

使用道具 举报

发表于 2015-12-15 08:54:34 | 显示全部楼层
这是对代码的优化,优化后不会生成存储在code section的数据。
官方是这样解释的,用在什么场合我也不清楚:
Execute-only CodeGenerates execute-only code and prevents the compiler from generating any data accesses to code sections. Creates code that does not have literal pools embedded in the code section, hence the HW can enforce that only the instruction fetch is allowed to read from the memory (protection of firmware).
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-26 00:20:44 | 显示全部楼层
很有用的回答,自己瞎搞了有1个小时,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 02:35 , Processed in 0.028939 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表