Firefly开源社区

标题: SLEEP&NVDS [打印本页]

作者: ffl86    时间: 2015-7-16 16:29
标题: SLEEP&NVDS
请问
在开NVDS读写的功能后
进休眠模式就不能唤醒
这是哪边的问题
我有修改  sleep_init
   // power down all unretention memory all the time.
    // if you want to use the unretention memory in the active mode, remove the following snippet.
   // syscon_SetPGCR1WithMask(QN_SYSCON,
                           // (SYSCON_MASK_DIS_MEM1
                           // | SYSCON_MASK_DIS_MEM2
                           // | SYSCON_MASK_DIS_MEM3
                           // | SYSCON_MASK_DIS_MEM4
                           // | SYSCON_MASK_DIS_MEM5
                           // | SYSCON_MASK_DIS_MEM6
                          // | SYSCON_MASK_DIS_MEM7),
                           // QN_MEM_UNRETENTION);

不然会卡在 HardFault_Handler
但现在还是没办法唤醒

可是用J-LINK DEBUG 可以唤醒

这是什么问题?



作者: 安安    时间: 2015-7-16 16:35
我也是开启了NVDS读写啊,什么都没改就可以进入休眠和唤醒:o,你还修改了什么吗?
作者: ffl86    时间: 2015-7-16 19:28
我是用QBLUE1.35B里头的prj_hrps
改了
/// NVDS WRTIE SUPPORT
#define CFG_NVDS_WRITE
就不能用了

仿真调试會卡在HardFault_Handler
作者: xiaolong_ba    时间: 2015-7-16 22:52
ffl86 发表于 2015-7-16 19:28
我是用QBLUE1.35B里头的prj_hrps
改了
/// NVDS WRTIE SUPPORT

有没有跟进代码调试看一下卡在哪里了?还有你的优化等级不要打太高,否则很容易会卡在sleep_init这里;:lol
作者: ffl86    时间: 2015-7-17 11:08
卡在   wakeup_by_sleep_timer(__32K_TYPE); 里的


__STATIC_INLINE void syscon_SetPGCR2WithMask(QN_SYSCON_TypeDef *SYSCON, uint32_t mask, uint32_t value)
{
     __wr_reg_with_msk((uint32_t)&SYSCON->PGCR2, mask, value);
}


优化等级 LEVEL3
作者: xiaolong_ba    时间: 2015-7-17 12:11
ffl86 发表于 2015-7-17 11:08
卡在   wakeup_by_sleep_timer(__32K_TYPE); 里的

你试试降低优化等级看看:)
作者: 安安    时间: 2015-7-17 14:50
ffl86 发表于 2015-7-16 19:28
我是用QBLUE1.35B里头的prj_hrps
改了
/// NVDS WRTIE SUPPORT

我对例程中的prj_hrps仅仅做了的打开NVDS WRTIE SUPPORT的修改,如下图所示,编译后可以正常运行。并没有出现你所说的卡在睡眠中的情况。你是不是还有修改过哪里呢?有没有使用git?使用了的话可以用git查看一下修改,给个补丁我帮你看看。


作者: ffl86    时间: 2015-7-20 10:30
git还不太会用

整包丢上来........
链接:http://pan.baidu.com/s/1i3vlZvR 密码:lwqm


作者: 安安    时间: 2015-7-20 11:13
1.你用的例程不是FireBLE的源码,是SDK中的源码。我只进行了是否可以开机初始化的测试。
2.在usr_config.h中修改以下位置:
/// Memory retention
#define CFG_MEM_RETENTION   (MEM_BLOCK1 | MEM_BLOCK2 | MEM_BLOCK3 | MEM_BLOCK6 | MEM_BLOCK7)
开启MEM_BLOCK3后sleep_init才能过。
3.警告部分,建议如下修改
#if QN_NVDS_WRITE       
        char *test1="Helon";
        uint8_t test2[5]={0};
        nvds_tag_len_t length=strlen(test1);
       
if (NVDS_OK==nvds_put(NVDS_TAG_WR_TESET,length,(uint8_t *)test1))
{
        nvds_get(NVDS_TAG_WR_TESET,&length,test2);
}
#endif

作者: ffl86    时间: 2015-7-20 14:22
可以动了!!!

#define CFG_MEM_RETENTION
请问这是在设定?

作者: 安安    时间: 2015-7-21 11:47
ffl86 发表于 2015-7-20 14:22
可以动了!!!

#define CFG_MEM_RETENTION

SRAM分成8个Block,这个是定义开启哪一些Block的




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1