OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5215|回复: 0

裸机程序通过go命令跳到指定的地址处执行错误

[复制链接]

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2019-10-20
在线时间
28 小时
发表于 2020-12-28 22:39:16 | 显示全部楼层 |阅读模式
23金钱
本帖最后由 EricRen2019 于 2021-1-3 15:58 编辑

最近遇到一个奇怪的问题,希望有大佬解答一下。感谢~~~
正点原子阿尔法linux开发板裸机程序“2_ledc”通过uboot中的go命令跳到指定的地址87800000处执行应用,发现程序中的软件延时函数delay会比设置的快10倍。
1.PNG
即上图程序看不出灯的亮灭,需要将"delay(500);"修改成"delay(5000);"后才能实现500ms左右的闪灯程序。
而此程序通过imxdownload下载到SD卡后,启动方式设置为SD卡启动,程序运行情况正常,延时函数delay延时正常。
后来把其他实验例程也验证了一下,发现裸机程序2~9存在这个问题,而后面的实验没有问题,两种方式执行效果一样,所以排除了imxdownload添加启动头部信息的问题。
2.PNG

后来,对比程序发现是start.S文件的问题。自己根据实验9的start.S,只保留了“Reset_Handler”,替换之前有问题的裸机程序中的start.S文件后,程序运行正常。
下图是裸机程序2~9中的start.S程序:
3.PNG

下图是自己根据实验9的start.S,只保留了“Reset_Handler”。
4.PNG

虽然问题找到了,但是自己还是没有搞懂为什么,希望大佬能解释一下这两个start.S文件哪里影响了程序~~~





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 20:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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