Keil 出现 “access to xxx was denied” 错误

先说结论:文件路径太长导致的

事情是这样的,在用STM32的开发板调试CC1101的收发工程,运行程序呢,结果电脑死机重启了,顺便吐槽一下,最近用VMware经常重启。

电脑重启后再打开工程,发现程序能烧录进去开发板,但是却无法运行,LED灯不亮,程序中有亮灯的代码,说明没有运行程序,再用Keil调试发现根本进不了main函数,(已经在魔术棒中设置run to main() ),于是问同事,说是可能跟bootloader有关系,但是后来烧了一个原子的跑马灯例程,可以正常运行,所以bootloader不是原因所在,后来想到启动文件这个问题。打开工程一看

启动文件带个叹号,双击显示访问被拒绝:

查看文件权限,并不是只读

那么问题是什么呢,Remove这个启动文件,重新添加进来,还是带感叹号,在同事的建议下,浏览到另一个工程的启动文件,添加进来,发现可行了,感叹号不见了。

难道是文件不一样,用NotePad++对比,没什么区别。右键看属性,也发现不了异样,所以基本可以排除是文件不一样的问题,除非是有些不可见的属性导致的区别。

然后下午一直倒腾,发现本工程原本的启动文件加上其他工程的启动文件共三个,放置在不同文件夹,结果也会不一样,在同一个文件夹内,三个启动文件表现都是一样的。

具体表现为:

添加在某个目录下的启动文件OK

往下就不行了:

更往下更不行,以为是这个文件夹的属性有区别,右键查看,也是一样的。

以为是这个std_lib文件夹不应该放启动文件,但是看另一个工程,放在这个文件夹是OK的,其实原本这个例程就是把启动文件放在这个文件夹。

再问同事,说可能跟工程配置文件有关,但是打开下列文件对比:

确实有一些设置不一样,但这些似乎也和启动文件并不相关。

然后实在没办法,网上一搜发现下列文章:

keil5.24复制文件后再次编译出现was denined,或者cannot open source input file_keil access to was denied-CSDN博客

其中有条评论写着:

 于是收到启发,好像确实是路径过长的问题,因为Source_file文件夹可行,其下面的Std_lib却不行,新建文件夹New Std_lib,把启动文件放里面也不行:

以为是级数的问题,为了验证这个猜想,所以在另一个OK的工程里往深了建文件夹放置启动文件,然后添加到工程里,但是建了好几级还是可以。

再想到不跟文件夹级数相关,但可能跟整个路径的字符长度相关,为了验证,建了这么个文件夹:

添加到工程中后,果真,终于出现感叹号了!!!

所以证明是路径长度的问题,再回想双击时的提示:

显示的路径是不完整的,估计是超过了Keil程序文件的路径限制。

有了这么个判断,就好办了,以后文件夹不要放那么深的目录了,名字也不要起得过长。

长了鼠标点起来也累啊。真的无语啊,这么个错误。弄了一下午。无论如何找到了根源,不白费功夫。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值