14个职位/ 0个新职位
最后发表
车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
凯尔点击调试按钮后程序下载出的错

嗨对话框
我将编写好的程序进行调试,编译好的文件大小如下:
程序大小:Code=16556 RO-data=1600 RW-data=64 ZI-data=10284
FromELF:创建hex文件…
点击凯尔调试按钮后提示,“0 x…”指令引用的“0 x…”内存,该内存不能为阅读。

将部分程序屏蔽掉,大小如下
程序大小:Code=15796 RO-data=1568 RW-data=64 ZI-data=10248
FromELF:创建hex文件…
点调试按钮程序就可以正常下载调试运行,请问是内存超过了芯片定义范围引起的么?

目标中内存定义:
起始大小
IROM1 0x20000000 0x5000 IRAM1 0x20005100 0x5600
iro2 0x21000 0x13F00 IRAM2 0x8000 0x1000

设备:
Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
暂时没看出什么问题,如果内存超过了芯片定义范围

暂时没看出什么问题,如果内存超过了芯片定义范围,一般编译的时候就会报错了。

另外,你有试过,直接用smartsnippets的引导模式直接下你编译后的本吗?这样可以确认是不是凯尔的问题……

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
使用smartsnippets烧录到外部flash中也是不

使用smartsnippets烧录到外部flash中也是不能运行,出现的问题点很奇怪,就是点击进入调试还没有运行,凯尔就出错了,点击错误提示框就强行退出了,比如我添加官方的文件spi.c spi_flash.c或者其他的app_sec.c等文件并编译以后就不行,感觉是代码量不能超过16000年,去掉这些文件后,代码量小点就正常了

Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
如果方便的话,你能把出错情况下的本文件

如果方便的话,你能把出错情况下的本文件,生成的地图文件,以及用到的scatterfile文件(不确定你用的是不是默认的)传上来吗?

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
就是这个工程文件,屏蔽掉一些文件就能进入调试

就是这个工程文件,屏蔽掉一些文件就能进入调试

Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
你可以比一下,之前不行是因为SECTOR_ERASE

你可以比一下,之前不行是因为SECTOR_ERASE_WRITE这个函数耗时比较长,监督直接启动了。

附件:
车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
你加了这个函数以后是不是也是在下载到ram的时候就出错了

你加了这个函数以后是不是也是在下载到ram的时候就出错了,我之前也是屏蔽这个函数就行,但是搞不懂的是看狗不是应该在程序下载到ram运行之后才起作用么,只是把程序下载到ram还没运行就死掉了,还是说凯尔下载的过程中,看狗是一直保持运行的吗?刚才又尝试出一个奇怪的现象:spi_flash_test()这个函数并没有在任何地方调用的情况下,把它定义出来之后也出相同问题。

Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
不好意思,之前讲错了,我单步跟了一下

之前讲错了。在函数无效SECTOR_ERASE_WRITE (void)里面设置了局部变量的数组,4 k, uint8_t SPI_FLASH_SECTOR_BUF[4096]。
你单步跟的时候,走到spi_flash_read_data函数里面
spi_cs_low ();/ / CS拉低这里的pi_driver_cs_pad。港口,spi_driver_cs_pad.pin值还是对的,P0_3
.................
spi_cs_high ();/ / pi_driver_cs_pad。港口、spi_driver_cs_pad.pin这里已经不对了,被你上面的rd_data_ptr开始的数组内容覆盖了。
不要在单个函数的栈上分配这么大的数组。如果需要,建议在scatterfile里面事先定义好存储空间。

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
等下,你还能进单步调试.....?情况看来和我这边不一样

等下,你还能进单步调试.....?情况看来和我这边不一样,我是无法调试。你一直都能进入调试状态么,你的keil版本是多少

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
打开这个相同路径的工程文件

打开这个相同路径的工程文件,这个是在原来能使用的基础上添加了app_sec.c,并且在da14580_config.h中# define CFG_APP_SEC也出相同错误

Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
你用我给你的工程(已经把狗关看掉

你用我给你的工程(已经把狗关看掉,打开DEVELOPMENT_DEBUG),然后把SECTOR_ERASE_WRITE加回去,设置断点,就可以单步走。

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
我尝试过了你修改过的这个工程文件

我尝试过了你修改过的这个工程文件,但进不了调试的错误还是频繁出现,我考虑换台电脑装基尔试试。后面发给你这个工程呢,它没有使用这么长的函数,我只是在原来能使用的基础上添加了app_sec.c和app_sec_task.c并且在da14580_config.h中# define CFG_APP_SEC也出相同错误,也是看狗引起的么,
还有就是怎样在scatterfile中定义存储空间。

Gongyu_Dialog
离线
最后看到:14小时4分钟前
加入:2016-04-27 07:07
看了你的代码,如果P02是高电平正常。如果是低电平

看了你的代码,如果P02是高电平正常。如果是低电平,就会出错,停在set_pad_functions函数里面的最后设中断输入的地方。和你配置的这句有关SetWord16 (GPIO_IRQ2_IN_SEL_REG 0 x0005);/ /选择IRQ2中断的I / O口,转十进制数和寄存器表中对应

车道
离线
最后看到:19小时22分钟前
加入:2015-07-14 14:21
谢谢,我发现问题了,之前进不了调试是凯尔的软件的问题

谢谢,我发现问题了,之前进不了调试是凯尔的软件的问题,我把软件版本升级到5.18之后就不报错了,至于cpu停止工作我再调试修改下,应该可以的