7213|17

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

难题请教,51从外部flash的FFFD地址启动?怎么做啊 [复制链接]

我有一颗芯片 ip210w由 8051内核和一个MAC组成
芯片手册有一句话:CPU starts up and runs instructions at address 0xFFFD of external Flash.
就是这句话把我郁闷了好久,怎么烧程序都不行。CPU都跑不起来。
请教高手如何让我的CPU跑起来,谢谢了。

这是芯片特性:
Features :

最新回复

谢谢楼上分享 呵呵  详情 回复 发表于 2013-5-8 10:29
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LJMP    ?C_START
JMP 0FFFDh
这怎么行? JMP 0FFFDh这一句永远也执行不了的.

应该修改?C_STARTUP:,将这句话前面的"CSEG    AT      0" 改为"CSEG    AT  0XFFFD"
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是不是要修改 STARTUP.A51?该怎么修改啊。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
中断向量表在哪?和传统的51一样吗?
如果是,那只需要映射interrupt vector address,在Keil C里面是可以设定。这个无非是在给向量表跳转重新赋值,向量表还是在原来的位置,相当于二次跳转。
根据lz提供的信息,应该不是这种情况;那么它的复位向量在哪,这个一般是固定的,芯片手册一定有地方讲到。

另外,看看芯片的官方网页,应该使用什么编译器,有没有现成的例子。


 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 4 楼 schlafenhamster 的回复:
Program starts at bank 0 0xFFFD;//表示该芯片是从高地址复位,(如8086:0xFFFFFFFF)
程序一定要把一个JMP指令写到0xFFFD(如JMP 0000)。


我在建立keil工程的时候将 STARTUP.A51这个汇编文件添加进去了。
我对汇编不是很懂,我在最后的 end 前面添加了一个 jmp 0xfffd,如下面所示。
; This code is required if you use L51_BANK.A51 with Banking Mode 4
; EXTRN CODE (?B_SWITCH0)
;               CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
                LJMP    ?C_START

                                JMP 0FFFDh

                END
然后变了一段c语言的代码,将其烧写在flash的0xfffd处。
不过仍然不行,不知道该怎么做。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
顶上去
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

7
 
按8楼的办法应该是可以的:
。M51中会有:
CODE    FFFDH     0003H     ABSOLUTE
写的时候要写到0xFFFF   
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
顶上去
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
帮顶。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
Program starts at bank 0 0xFFFD;//表示该芯片是从高地址复位,(如8086:0xFFFFFFFF)
程序一定要把一个JMP指令写到0xFFFD(如JMP 0000)。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
还有另外一种硬件办法,就是搞2个8位寄存器,该寄存器的地址是0xFFFD(即片选),内容(即寄存器输出)是你要的启动地址如0(),用它们来构成一个复位地址。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 6 楼 liuchaotao 的回复:
LJMP? ? ?C_START
JMP 0FFFDh
这怎么行? JMP 0FFFDh这一句永远也执行不了的.

应该修改?C_STARTUP:,将这句话前面的"CSEG? ? AT? ? ? 0" 改为"CSEG? ? AT? 0XFFFD"



就这么简单吗?还要在该其他地方吗?
我刚才按照您的说法试过了,还是不行呢?谢谢了啊
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(高级)

13
 
引用 7 楼 schlafenhamster 的回复:
还有另外一种硬件办法,就是搞2个8位寄存器,该寄存器的地址是0xFFFD(即片选),内容(即寄存器输出)是你要的启动地址如0(),用它们来构成一个复位地址。

谢谢 ,硬件不固定的,不能改了。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
  如果那个MCU是从FFFD启动的话,你要想办法在FFFD那个位置放一条跳到0000的指令
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

15
 
CPU starts up and runs instructions at address 0xFFFD of external Flash.
字面意思是CPU每次启动运行的指令为外部FLASE的0xFFFD地址,这样的话CPU启动时肯定到不了
51的复位地址0x0000,也就是说STARTUPA.51是执行不到的。

从这一点讲设计者需要在外部FlASE0小xfffd初编写启动代码。
具体需要看CPU设计手册了。
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

16
 
CPU starts up and runs instructions at address 0xFFFD of external Flash.
外部flash要64K容量,
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

17
 
看了这么久 还是没人回答正确答案
看来用这个ip210W的人确实很少
很不幸我用了

经过艰苦摸索,现在将答案告诉大家:

1.芯片启动和51一样,也是0地址启动

点评

谢谢楼上分享 呵呵  详情 回复 发表于 2013-5-8 10:29
 
 
 

回复

2万

帖子

74

TA的资源

管理员

18
 

回复 17楼 sunisi2008 的帖子

谢谢楼上分享 呵呵
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表