OpenEdv-开源电子网

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

Bootloader能够正常跳转,一个串口的APP也能运行成功,但是PX4飞控作为APP运行就会卡死。

[复制链接]

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
发表于 2016-4-23 15:22:52 | 显示全部楼层 |阅读模式
30金钱
主控芯片:   STM32F427VI   2MB  FLASH
问题描述:   自己写了一个Bootloader,是从SD卡读取bin文件,再写前16k的FLASH。  加载FATFs文件系统,读写什么的都没有问题。跳转app也OK。  
                     一共有两个测试app  ,第一个为串口app(用到的资源很少,就只有串口什么的),跳转成功,运行也ok。第二个app是PX4飞控(几乎把班上的资源用了70%以上吧),跳转OK,但是运行OK,总是卡死在一个地方。
                 跳转前,时钟什么的都关闭的。尝试过Bootloader什么都不做,直接跳转,依然卡死在同一个地方。
  谢谢各位了。

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

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2016-4-23 16:45:12 | 显示全部楼层
其实还是和中断向量指向有关。
在APP程序中,将用到中断的外设,在初始化时,进行一次恢复至默认操作,再重新配置中断。
互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-23 17:19:52 | 显示全部楼层
shibusha 发表于 2016-4-23 16:45
其实还是和中断向量指向有关。
在APP程序中,将用到中断的外设,在初始化时,进行一次恢复至默认操作,再 ...

嗯,是这样的,APP端我没有办法改变,我只能在Bootloader端做修改,我懂你的意思,就是可能是Bootloader中的中断什么的可能影响了app。但是我尝试过,Bootloader中什么都不做,直接初始化时钟,就跳转至app,仍然卡死在那个地方。
还有就是,我用官方的PX4Bootloader是没有任何问题的。
当然我用的是ST的库,它用的是libopencm3.
回复

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2016-4-23 18:20:06 | 显示全部楼层
浪溢泽沉 发表于 2016-4-23 17:19
嗯,是这样的,APP端我没有办法改变,我只能在Bootloader端做修改,我懂你的意思,就是可能是Bootloader ...

1. 看看APP里是否重定义了向量地址。
2. APP中是否改变了像PENDSV这类中断的入口。
互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-23 19:41:07 | 显示全部楼层
shibusha 发表于 2016-4-23 18:20
1. 看看APP里是否重定义了向量地址。
2. APP中是否改变了像PENDSV这类中断的入口。

reply 1: vetor table,在Bootloader跳转前已经重定义过,NVIC_SetVectorTable(App_Base_Address, 0);      

reply 2: 不太明白,因为Bootloader重定义了中断向量表,那么app直接 处理中断就行。这个PENDSV我之前没有接触过,不太懂。  但是我是这么想的,PX4飞控官方的Bootloader能够跳转正常,飞控运行正常。那么应该不是app有问题。   


回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-23 19:42:39 | 显示全部楼层
@正点原子   原子哥,真的求帮忙了。调这个bug都三天了,没有进展,求指导
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-4-23 20:21:56 | 显示全部楼层
浪溢泽沉 发表于 2016-4-23 19:42
@正点原子   原子哥,真的求帮忙了。调这个bug都三天了,没有进展,求指导

得仿真找问题了,说不准。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-23 20:23:17 | 显示全部楼层
[mw_shl_code=cpp,true]static void
do_jump(uint32_t stacktop, uint32_t entrypoint)     //201604      汇编代码,应该是给出app 入口地址    ,以及程序运行的堆栈顶端地址
{
        asm volatile(
                "msr msp, %0        \n"
                "bx        %1        \n"
                : : "r"(stacktop), "r"(entrypoint) ;

        // just to keep noreturn happy
        for (;;) ;
}[/mw_shl_code]


@正点原子 原子哥,你给看一下,这一段汇编跳转程序,我觉得和你的跳转功能一样,都是初始化堆栈,再设置返回地址。不知道我分析的对不对。{这是eclipse环境下的}

回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-23 20:47:01 | 显示全部楼层
正点原子 发表于 2016-4-23 20:21
得仿真找问题了,说不准。

bootloader这段程序运行都OK,跳转至app了,就没有办法跟踪了。
回复

使用道具 举报

13

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2016-4-20
在线时间
162 小时
发表于 2016-4-24 00:07:25 来自手机 | 显示全部楼层
楼主能加微信或者qq么,我也在玩pixhawk,想从头自己写代码,卡在第一步了,代码烧不进去,能指导一下不?
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2013-1-14
在线时间
5 小时
 楼主| 发表于 2016-4-24 21:05:05 | 显示全部楼层
hannuaa 发表于 2016-4-24 00:07
楼主能加微信或者qq么,我也在玩pixhawk,想从头自己写代码,卡在第一步了,代码烧不进去,能指导一下不?

邮件吧,  liangzelang@gmail.com  。   从头写代码……你确定吗???
回复

使用道具 举报

13

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2016-4-20
在线时间
162 小时
发表于 2016-4-24 22:12:04 | 显示全部楼层
看你的帖子 你不是想自己写么
我现在还处于刚开始学习STM32的阶段
PIXHAWK倒是做了一些二次开发
总感觉PIXHAWK自己的代码太乱  想自己做
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 02:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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