shiweilei 发表于 2007-9-23 22:13:54

遇到一个棘手的问题,请教

马老师,我遇到一个棘手的问题,我用m128嵌入ucosII时,发现无法访问高64k flash,在不用操作系统的情况下,我只需要RAMPZ=1就可以访问,一切也都正常,但是有了ucosII却发现只要在某个进程中一用RAMPZ=1或者RAMPZ|=1这种类型的指令,整个系统就会被复位,更别说访问flash了,程序好像都跑没了,这是什么原因呀,如果不访问高64k flash ucos跑的很正常,可是我需要在高64kflash里存放一些固定的数据呀,所以高 64k 必须使用,请问老师 我该怎么做呀 我用的的iccavr6.31

machao 发表于 2007-9-23 23:22:42

使用iccavr时,不是在程序中专门使用RAMPZ=1指令的。

只要是在Compiler Options的Target中将“Use RAMPZ/ELPM”项打勾即可,其它ICCAVR编译系统会自动处理了。

shiweilei 发表于 2007-9-23 23:48:05

谢谢马老师,我试试看

shiweilei 发表于 2007-9-24 09:29:21

不行呀马老师如果再没有操作系统的情况下 只有Compiler Options的Target中将“Use RAMPZ/ELPM”项打勾,没有RAMPZ=1我还是访问不到 高64k flash,再有操作系统的情况下啊,只要使用RAMPZ=1,系统还是复位

machao 发表于 2007-9-24 15:39:08

m128的熔丝位配置了吗?是否配置成128模式?注意确省模式为M103。

shiweilei 发表于 2007-9-24 16:26:43

没错,镕丝位没有配错,要不然写普通程序的时候他也不会好使呀,我还发现一个奇怪的现象,如果我在RAMPZ=1附近加一个向串口发送字符的代码,那就可以访问高64k了,奇怪啦

machao 发表于 2007-9-24 16:56:28

在target选定M128吗?此时使用long call/jmp自动打钩,是灰色的。

首先解决通常情况下访问高64K的FLASH,应该不需要使用RAMPZ=1,系统自己会处理的。

使用UCOSII时,任务切换中要增加RAMPZ的保护和恢复。
页: [1]
查看完整版本: 遇到一个棘手的问题,请教