537|15

327

帖子

1

TA的资源

纯净的硅(初级)

楼主
 

KEIL编译USB功能异常IAR编译正常 [复制链接]

 
本帖最后由 shipeng 于 2024-12-24 21:37 编辑
如附件工程,其中包含了MDK和IAR工程文件,此两个工程共用一套源码文件。芯片采用STM32F103C8T6,实现功能为USB连接电脑可识别为一个U盘,往其中放入FIRMWARE.bin文件可实现更新固件功能,且必须指定为FIRMWARE.bin文件才可更新固件,当写入其它文件不会改写固件数据,为了解决 “写入其它文件会改写固件数据的问题” 花了我一整天的摸鱼时间才调试完成,现在无偿分享给大家使用。实现方式是连接电脑或手机后初始文件存储了一个FIRMWARE.bin文件,此文件占用全部有效的固件FLASH区,写入数据必须替换FIRMWARE.bin的同名文件写入才有效,否则数据会写入无效空间。另外现在遇到的问题是使用KEIL MDK编译生成的目标文件USB功能异常,连接USB电脑不能识别设备,但IAR编译生成的目标文件USB功能是正常的连接电脑USB可以正常识别且操作正常,还希望大家能帮我找一下原因,在此感激不尽。 2024122421352813.zip (13.65 MB, 下载次数: 1)
 
此帖出自stm32/stm8论坛

最新回复

没有用过IAR,我也来学习一下,说不定哪天就碰到了。  详情 回复 发表于 前天 17:25
点赞 关注
个人签名模电临时工
 

回复
举报

327

帖子

1

TA的资源

纯净的硅(初级)

沙发
 
之前也遇到过STM32F105作为主机读U盘升级的工程也是KEIL编译生成的目标文件USB功能不正常但其他功能没有问题可以正常跳转APP,IAR一切正常,也不知道是什么原因
此帖出自stm32/stm8论坛
 
 

回复

3220

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 

你这个问题我还头一次听说,我乱猜的啊,你可以试试KEIL MDK编译的选项更改一下,就是优化选项Optimization的-O0、-O1、-O2、-O3等级。

此帖出自stm32/stm8论坛
 
 

回复

7219

帖子

2

TA的资源

版主

4
 

就像楼上说的,只能修改修改Keil编译的配置参数看看能不能解决问题。

此帖出自stm32/stm8论坛
 
 
 

回复

2941

帖子

4

TA的资源

五彩晶圆(中级)

5
 

我的猜测是:你的应用启动后,由于下面的代码挑战到应用了,建议先去掉如下代码,调试USB是否正常,在设置目标固件的地址。

/* Keep the user application running */
	if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
	{
		/* Jump to user application */
		JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
		Jump_To_Application = (pFunction) JumpAddress;
		/* Initialize user application's Stack Pointer */
		__set_MSP(*(__IO uint32_t*) ApplicationAddress);
		Jump_To_Application();
	}

目标程序中断程序是否设置正确。

 

此帖出自stm32/stm8论坛

点评

bigbat说的对,和这个设定也有关系,,楼主可以试验一下。。  详情 回复 发表于 2024-12-25 11:31
不对吧,如果是代码问题那IAR编译生成的目标文件也应该有问题才对,现在是用IAR编译功能是正常的。  详情 回复 发表于 2024-12-25 11:20
 
 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

6
 
bigbat 发表于 2024-12-25 11:00 我的猜测是:你的应用启动后,由于下面的代码挑战到应用了,建议先去掉如下代码,调试USB是否正常,在设置 ...

不对吧,如果是代码问题那IAR编译生成的目标文件也应该有问题才对,现在是用IAR编译功能是正常的。

此帖出自stm32/stm8论坛

点评

可能原始项目是由IAR编写,所以在项目中的编译或链接参数是被修改了,keil就不一定了    详情 回复 发表于 2024-12-25 11:33
 
个人签名模电临时工
 
 

回复

3220

帖子

0

TA的资源

五彩晶圆(中级)

7
 
bigbat 发表于 2024-12-25 11:00 我的猜测是:你的应用启动后,由于下面的代码挑战到应用了,建议先去掉如下代码,调试USB是否正常,在设置 ...

bigbat说的对,和这个设定也有关系,,楼主可以试验一下。。

此帖出自stm32/stm8论坛
 
 
 

回复

2941

帖子

4

TA的资源

五彩晶圆(中级)

8
 
shipeng 发表于 2024-12-25 11:20 不对吧,如果是代码问题那IAR编译生成的目标文件也应该有问题才对,现在是用IAR编译功能是正常的。

可能原始项目是由IAR编写,所以在项目中的编译或链接参数是被修改了,keil就不一定了

 

此帖出自stm32/stm8论坛
 
 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

9
 
其实自从发现KEIL有问题后就一直用的IAR做编译,期间源代码也修改了很多次增加了一些功能如显示屏驱动。由于时隔很久刚刚又试了一下KEIL编译居然也好了,现在USB功能一切正常,keil工程配置基本没动,就添加了显示屏包含路径。 2024122511564619.zip (719.34 KB, 下载次数: 0)
 
此帖出自stm32/stm8论坛
 
个人签名模电临时工
 
 

回复

7649

帖子

18

TA的资源

五彩晶圆(高级)

10
 

编译器有bug,换着来,实在不行就减小优化级别

此帖出自stm32/stm8论坛

点评

减小优化级别我好像也试过也不行,但是现在它自己好了我都不知道是怎么好的  详情 回复 发表于 2024-12-25 16:53
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

11
 
freebsder 发表于 2024-12-25 14:32 编译器有bug,换着来,实在不行就减小优化级别

减小优化级别我好像也试过也不行,但是现在它自己好了我都不知道是怎么好的,现在优化级别还是最高的

此帖出自stm32/stm8论坛

点评

一般不开优化,编译器很多时候优化的太扯,我记得有一次做IAP跳转的功能,IAR的编译器开的低档优化,直接把功能都给直接优化掉了。  详情 回复 发表于 2024-12-26 15:01
 
个人签名模电临时工
 
 

回复

6523

帖子

9

TA的资源

版主

12
 

MDK和IAR的配置还是有一些差异的 

此帖出自stm32/stm8论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

7649

帖子

18

TA的资源

五彩晶圆(高级)

13
 
shipeng 发表于 2024-12-25 16:53 减小优化级别我好像也试过也不行,但是现在它自己好了我都不知道是怎么好的,现在优化级别还是最高的

一般不开优化,编译器很多时候优化的太扯,我记得有一次做IAP跳转的功能,IAR的编译器开的低档优化,直接把功能都给直接优化掉了。

此帖出自stm32/stm8论坛

点评

这么离谱的优化我倒是没有遇到过,我只遇到过变量优化加个volatile修饰即解决,我现在还是习惯把优化开到最大一般都没啥问题  详情 回复 发表于 2024-12-26 21:32
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

14
 
freebsder 发表于 2024-12-26 15:01 一般不开优化,编译器很多时候优化的太扯,我记得有一次做IAP跳转的功能,IAR的编译器开的低档优化,直接 ...

这么离谱的优化我倒是没有遇到过,我只遇到过变量优化加个volatile修饰即解决,我现在还是习惯把优化开到最大一般都没啥问题

此帖出自stm32/stm8论坛

点评

2020年左右的版本,两个编译器,keil的iar的,跳转那块,keil的优化掉了,iar的优化了直接报异常。  详情 回复 发表于 2024-12-31 11:37
 
个人签名模电临时工
 
 

回复

7649

帖子

18

TA的资源

五彩晶圆(高级)

15
 
shipeng 发表于 2024-12-26 21:32 这么离谱的优化我倒是没有遇到过,我只遇到过变量优化加个volatile修饰即解决,我现在还是习惯把优化开到 ...

2020年左右的版本,两个编译器,keil的iar的,跳转那块,keil的优化掉了,iar的优化了直接报异常。

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1626

帖子

0

TA的资源

五彩晶圆(初级)

16
 
没有用过IAR,我也来学习一下,说不定哪天就碰到了。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表