OpenEdv-开源电子网

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

求助,f767用sdram缓存图片总是进入hardfault

[复制链接]

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-3-14 13:54:12 | 显示全部楼层 |阅读模式
50金钱
如题,历程用的是原子哥的ucosII网络摄像头实验,在用sdram缓存实时获得的摄像头图片,sdram测试32M都可用没有问题,但是在我写存储程序时一执行就进入hardfault,困扰了好几天,第一次用f7和sdram,新人求助@正点原子

最佳答案

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

感谢大神帮顶,现在已经成功应用sdram了,因为粗心大意,没注意到sdram的空间都被malloc这个给审请了,所以自己在审请,就越界进入hardfault了,发现了这个问题之后再修改一番就完美运用啦
qq1950361006,互帮互助,共同进步。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 13:54:13 | 显示全部楼层

感谢大神帮顶,现在已经成功应用sdram了,因为粗心大意,没注意到sdram的空间都被malloc这个给审请了,所以自己在审请,就越界进入hardfault了,发现了这个问题之后再修改一番就完美运用啦
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 14:00:04 | 显示全部楼层
现在就是想实现把一幅图的数据缓存在sdram中,然后需要的时候在读出来,不需要的时候就一直缓存覆盖,下面是我测试的语句,大神给指点一下迷津,感激不尽
u32 sdram_array[320][480] __attribute__((at(0XC2000000)));//定义一个缓存在sdram里

sdram_array[curline][i]=dcmi_line_buf[0][i];        //这个dcmi_line_buf是实时刷新的行数据,我想将他存到定义的sdram缓存区里,curline是随图片刷新一直增加的行数目
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 14:16:47 | 显示全部楼层
换了种写法,u32 *sdram_array[NETCAM_FIFO_NUM] __attribute__((at(0XC2000000)));定义完之后按照写fifo的方法
u8 fifo_read(u32 **buf)
{
        if(netcamfifordpos==netcamfifowrpos)return 0;
        netcamfifordpos++;                //¶áλÖüó1
        if(netcamfifordpos>=NETCAM_FIFO_NUM)netcamfifordpos=0;//1éáã
        *buf=sdram_array[netcamfifordpos];
        return 1;
}
u8 fifo_write(u32 *buf)
{
        u16 i;
        u16 temp=netcamfifowrpos;        //¼Ç¼μ±Ç°D′λÖÃ
        netcamfifowrpos++;                        //D′λÖüó1
        if(netcamfifowrpos>=NETCAM_FIFO_NUM)netcamfifowrpos=0;//1éáã  
        if(netcamfifordpos==netcamfifowrpos)
        {
                netcamfifowrpos=temp;        //»1Ô-Ô-à′μÄD′λÖÃ,′Ë′ÎD′èëê§°ü
                //printf("shit:%d\r\n",temp);
                return 1;       
        }
        for(i=0;i<NETCAM_LINE_SIZE;i++)sdram_array[netcamfifowrpos][i]=buf[i];//&#191;&#189;±′êy&#190;Y
        return 0;
}  

在回调函数用               
       if(DMA2_Stream1->CR&(1<<19))
        {
                pbuf=(u16*)dcmi_line_buf[0];       
                fifo_write(dcmi_line_buf[0]);       
        }
        else                                                
        {
                pbuf=(u16*)dcmi_line_buf[1];        
                fifo_write(dcmi_line_buf[1]);
        }

还是执行到这立马进入进入hardfault
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 16:11:48 | 显示全部楼层
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 16:12:01 | 显示全部楼层

大神求助
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 16:12:34 | 显示全部楼层
@zuozhongkai 大神
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
 楼主| 发表于 2018-3-14 16:12:59 | 显示全部楼层
@lycreturn 大神
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5140
金钱
5140
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-14 18:29:32 | 显示全部楼层
帮顶。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 18:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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