查看: 1310|回复: 2

[求助] RT1170 emwin刷新率和iap问题

[复制链接]

该用户从未签到

1

主题

4

帖子

0

注册会员

Rank: 2

积分
54
最后登录
2022-7-22
发表于 2021-5-28 10:59:21 | 显示全部楼层 |阅读模式
本帖最后由 eefocus_3708133 于 2021-5-28 11:04 编辑

官网的2.9.1的sdk,RT1170跑emwin,编译器是keil.发现几个没运行到的代码也会影响emwin的frambuf的切换频率(慢的时候只有30hz,快的和屏幕刷新率一样60hz,实际效果也能感觉出来)
这2条语句是在跳转到app时候,关闭SCB_DisableDCache和SCB_DisableICache()。实际上这2个语句并不会运行,但是加了画面刷新就明显慢了。
if(((*(uint32_t*)(FLASH_APP_CODE_ADD+4))&0xFF000000) == 0x30000000)
{
//这里不会运行
                SCB->VTOR = 0;
                __ISB();
                __DSB();
                SCB->VTOR = (uint32_t )FLASH_APP_CODE_ADD;
                SCB_DisableDCache();//加了这2句,不加while(1)会变慢
                SCB_DisableICache();
                appMain = (iapFun)*(uint32_t*)(FLASH_APP_CODE_ADD+4);
                __set_MSP(FLASH_APP_CODE_ADD);
                __set_PSP(FLASH_APP_CODE_ADD);
                appMain();
                while(1);//加了这句,再加SCB_DisableDCache();SCB_DisableICache();也不会变慢。实际这句也不会运行。
}

但是如果不加SCB_DisableDCache();和SCB_DisableICache(); app和boot 不能把rw ro 段设置到同一个地址。
还有时钟设置函数BOARD_BootClockRUN里面的设置也会影响运行的速度,如果app里面加了下面这些也会变慢,这个SKIP_SEMC_INIT
宏是定义在#include "board.h"里面的。官网的2.9.1的sdk并在clock_config.c里面包含这个头文件,导致这个SKIP_SEMC_INIT是一直是未定义的。
#ifndef SKIP_SEMC_INIT
    rootCfg.mux = kCLOCK_SEMC_ClockRoot_MuxSysPll2Pfd1;
    rootCfg.div = 3;
    CLOCK_SetRootClock(kCLOCK_Root_Semc, &rootCfg);
#endif

#if defined(XIP_BOOT_HEADER_ENABLE) && (XIP_BOOT_HEADER_ENABLE == 1)
#if defined(XIP_BOOT_HEADER_DCD_ENABLE) && (XIP_BOOT_HEADER_DCD_ENABLE == 1)
    UpdateSemcClock();
#endif
#endif

而且下一条函数UpdateSemcClock里面CCM->CLOCK_ROOT[kCLOCK_Root_Semc].CONTROL = 0x602;设置的寄存器也是和上面CLOCK_SetRootClock一样的。为什么还有加这个?还有为什么要特意吧UpdateSemcClock定义在内部itcm?


               
回复

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

注册会员

Rank: 2

积分
54
最后登录
2022-7-22
 楼主| 发表于 2021-5-28 18:56:56 | 显示全部楼层
大概找到原因了,s_vram_buffer没32字节对齐,导致frambuffer拷贝慢了很多。因为代码是放到sdram的所以加语句导致s_vram_buffer位置刚好对齐了
回复 支持 反对

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20017
最后登录
2024-4-25
发表于 2021-5-31 14:05:16 | 显示全部楼层
eefocus_3708133 发表于 2021-5-28 18:56
大概找到原因了,s_vram_buffer没32字节对齐,导致frambuffer拷贝慢了很多。因为代码是放到sdram的所以加语 ...

那就是测试结果与你上面所列的发现并无什么关系哦?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-26 06:27 , Processed in 0.108287 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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