专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
请教一下,使用PICC如何自己重定位程序在flash中的位置?
2020-02-10 08:51
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
9049
11
11
主要是想在PIC16F886上实现bootloader,但不知道应该如何实现程序位置的定位。
小弟对PICC编译的过程理解不深,猜测是不是只要更改PICC的某个文件,就可以自行规定LINKER的行为?
请教有经验的朋友,究竟应该如何操作,谢谢
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
joylight
2020-02-11 16:55
.hex文件应该是搞错了,新情况如下:
1、功能程序无偏移时,从0x0000开始可以正常运行。说明功能程序没有问题,也不存在运行过程中堆栈溢出的问题。
2、引导程序,代码如下,跳转和中断重定位经过测试都是正常的。
3、引导程序+功能程序(分别编译,生成两个.hex文件,手工合成后下载),其中功能程序编译时偏移到0x1000,开始功能程序还能运行一段,一旦使能定时器中断,程序就好像复位了,又从头执行。
难道是新增的引导程序加重了堆栈的负担?但引导的代码中也没有CALL和中断啊,应该不会触发压栈啊。
0x0000-0xFFF的代码如下:
0000 MOVLW 0
0001 MOVWF 0xa
0002 GOTO 0x7
0003
0004 BSF 0xa,0x4
0005 BCF 0xa,0x3
0006 GOTO 0x4
0007 BCF 0xa,0x4
0008 BCF 0xa,0x3
0009 GOTO 0x7f9
.
空白
.
07F9 BSF 0xa,0x4
07FA BCF 0xa,0x3
07FB GOTO 0
07FC CLRF 0x3
07FD BCF 0xa,0x4
07FE BCF 0xa,0x3
07FF GOTO 0
.
空白
.
1000 功能程序
加载中...
查看其它11个回答
一周热门
更多
>
相关问题
PIC单片机不同的IO口驱动74HC573驱动共阴极的数码管,有的段不亮
1 个回答
一种简单精确的pic延时方法
21 个回答
谁熟悉PIC的产品发布时间的,帮看看PIC18F47K40啥版本IDE能开发
12 个回答
求AN1078对应的源代码下载地址
5 个回答
PIC单片机应用技巧
4 个回答
相关文章
一种用PIC单片机主时钟驱动的老式挂钟
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
PIC单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
1、功能程序无偏移时,从0x0000开始可以正常运行。说明功能程序没有问题,也不存在运行过程中堆栈溢出的问题。
2、引导程序,代码如下,跳转和中断重定位经过测试都是正常的。
3、引导程序+功能程序(分别编译,生成两个.hex文件,手工合成后下载),其中功能程序编译时偏移到0x1000,开始功能程序还能运行一段,一旦使能定时器中断,程序就好像复位了,又从头执行。
难道是新增的引导程序加重了堆栈的负担?但引导的代码中也没有CALL和中断啊,应该不会触发压栈啊。
0x0000-0xFFF的代码如下:
0000 MOVLW 0
0001 MOVWF 0xa
0002 GOTO 0x7
0003
0004 BSF 0xa,0x4
0005 BCF 0xa,0x3
0006 GOTO 0x4
0007 BCF 0xa,0x4
0008 BCF 0xa,0x3
0009 GOTO 0x7f9
.
空白
.
07F9 BSF 0xa,0x4
07FA BCF 0xa,0x3
07FB GOTO 0
07FC CLRF 0x3
07FD BCF 0xa,0x4
07FE BCF 0xa,0x3
07FF GOTO 0
.
空白
.
1000 功能程序
一周热门 更多>