OpenEdv-开源电子网

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

BootLoader是裸机,APP是UCOSIII,ucosiii如何设置中断向量偏移

[复制链接]

5

主题

63

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-6-15
在线时间
28 小时
发表于 2018-9-14 15:01:36 | 显示全部楼层 |阅读模式
10金钱
求助!!!
BootLoader用裸机,APP如果不带ucosiii操作系统,设置好中断向量偏移,app程序可以正常运行;
BootLoader用裸机,APP如果是带ucosiii操作系统,设置好中断向量偏移,app(ucosiii)程序死机。
这里应该是ucosiii中断偏移设置出了问题,但是ucosiii的中断偏移应该如何设置啊?不是和裸机设置的一样吗?有没有用过的?

最佳答案

查看完整内容[请看2#楼]

ucosiii在APP程序中,在哪里设置中断向量偏移地址呢?这里应该是中断偏移的问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

63

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-6-15
在线时间
28 小时
 楼主| 发表于 2018-9-14 15:01:37 | 显示全部楼层
ucosiii在APP程序中,在哪里设置中断向量偏移地址呢?这里应该是中断偏移的问题
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7462
金钱
7462
注册时间
2015-1-15
在线时间
1367 小时
发表于 2018-9-14 15:05:58 来自手机 | 显示全部楼层
这个跟跑没跑系统没关系
回复

使用道具 举报

5

主题

63

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-6-15
在线时间
28 小时
 楼主| 发表于 2018-9-14 15:08:22 | 显示全部楼层
yklstudent 发表于 2018-9-14 15:05
这个跟跑没跑系统没关系

但是跑了系统,程序运行一会儿就死机了,如果不跑系统就死机,ucosiii系统程序用的原子哥的最简单的一个例程(加了中断地址偏移)
回复

使用道具 举报

5

主题

63

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-6-15
在线时间
28 小时
 楼主| 发表于 2018-9-14 15:09:08 | 显示全部楼层
慕兰 发表于 2018-9-14 15:08
但是跑了系统,程序运行一会儿就死机了,如果不跑系统就死机,ucosiii系统程序用的原子哥的最简单的一个 ...

打错了,不跑系统不死机
回复

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
658
金钱
658
注册时间
2013-11-22
在线时间
131 小时
发表于 2018-9-15 09:50:33 | 显示全部楼层
本帖最后由 zhp 于 2018-9-15 09:52 编辑

有两点要设置:
1.程序起始要重新设置中断向量表地址
2.指明程序编译后存放的起始地址


第1点:
        在程序开始时设置:SCB->VTOR = APP_START_ADDR & 0x1FFFFF80;        // 重定位中断向量表
       APP_START_ADDR  是一个宏,就是你自己定义的app起始地址
第2点:
       在 Project -> Option for Target  -> Target  -> IROM1  的位置中设置 Start 和 Size
       Start 值填入  APP_START_ADDR 定义的“数值”
       Size  =  总的flash大小 - boot大小

重新编译烧写,应该没有问题了
回复

使用道具 举报

5

主题

63

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-6-15
在线时间
28 小时
 楼主| 发表于 2018-9-18 14:18:01 | 显示全部楼层
zhp 发表于 2018-9-15 09:50
有两点要设置:
1.程序起始要重新设置中断向量表地址
2.指明程序编译后存放的起始地址

这两个都设置了,不然APP裸机也不会运行,但是把APP换成ucosiii就不行了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-5-23
在线时间
0 小时
发表于 2019-5-23 19:31:52 | 显示全部楼层
前不久才知道的把SCB->这段代码写在ossart转移控制权的前面才行
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-5-23 19:35:05 | 显示全部楼层
main函数的一开始啊,跟裸机不裸机的没关系。你确定你不用bootloader时,带ucosiii的app可以跑起来吗。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-5-16
在线时间
6 小时
发表于 2019-6-12 12:51:48 | 显示全部楼层
我以前也遇到这个问题,在bootloader跳转之前,加  __set_CONTROL(0);APP就可以正常运行。
我是参考https://blog.csdn.net/xufeixueren/article/details/78334415
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-8-22
在线时间
4 小时
发表于 2019-9-17 19:10:48 | 显示全部楼层
设置没问题,在跳转到APP之后,不能马上调用ucos初始化,需要延时一小会。这跟芯片内部相关说不清。
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-11-25
在线时间
16 小时
发表于 2019-12-12 19:25:15 | 显示全部楼层
老哥,你这个问题解决了吗? 我也遇到类似的问题,UCOSIII的APP程序做个串口IAP,设置中断偏移量以后,程序就跑飞。
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-11-25
在线时间
16 小时
发表于 2019-12-12 19:26:22 | 显示全部楼层
lz781818425 发表于 2019-12-12 19:25
老哥,你这个问题解决了吗? 我也遇到类似的问题,UCOSIII的APP程序做个串口IAP,设置中断偏移量以后,程序 ...

程序直接运行正常的。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-1-30
在线时间
0 小时
发表于 2021-1-30 11:39:58 | 显示全部楼层
请问楼主最后是怎么解决的?
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-12-29
在线时间
20 小时
发表于 2022-5-9 10:19:20 | 显示全部楼层
慕兰 发表于 2018-9-14 15:01
ucosiii在APP程序中,在哪里设置中断向量偏移地址呢?这里应该是中断偏移的问题

最后是怎么解决的 我也碰到这个问题 向量偏移地址 0x8000000  没问题  增加了 boot 程序 后0x8010000  程序跳转就不跑了
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-12-29
在线时间
20 小时
发表于 2022-5-9 10:19:50 | 显示全部楼层
Cary001 发表于 2021-1-30 11:39
请问楼主最后是怎么解决的?

你解决了没
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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