f133跑rtt测试了下memcpy速度那么慢的吗,cpu是1.2g的,比1.5g的f1c100s慢10倍以上,是哪里有问题啊
最近编辑记录 smiletiger (2022-01-23 18:45:32)
离线
是不是没有平台优化哦,你用newlib的汇编试一下哇
离线
是不是没有平台优化哦,你用newlib的汇编试一下哇
其实我用的说for循环赋值测试fb 结果发现液晶屏居然刷一屏幕需要2秒 之前用f1c100只要10ms就够了 好不容易搞定f133的fb 结果发现速度还不如100s 是不是现在f133的开发环境特别是裸机还没有完善啊
离线
可以对比下这个贴子 https://whycan.com/t_7592.html
离线
没有那么夸张,我裸机操作f133 lcd驱动刷新,从memcpy到刷新lcd,差不多3ms,如果采用纯c语言的memcpy,差不多一帧图形是17ms。
lcd 尺寸 800*480
bpp 32
最近编辑记录 bigmagic (2022-01-24 10:04:23)
离线
https://whycan.com/files/members/459/lcd.mp4
没有那么夸张,我裸机操作f133 lcd驱动刷新,从memcpy到刷新lcd,差不多3ms,如果采用纯c语言的memcpy,差不多一帧图形是17ms。
lcd 尺寸 800*480
bpp 32
大佬 我用的就是你开源的那个rtt移植代码。你能帮我分析下是哪里的问题吗 开rtt和裸机都是这么慢 cpu寄存器什么的打印出来的确是1008m 没有分频
离线
f133 lcd 相关的测试,你慢慢测试一下,我都开源了
离线
F133 全志不是还有meli系统嘛,去找代理拿资源嘛
离线
f133 lcd 相关的测试,你慢慢测试一下,我都开源了
好的,谢谢哦,唉我自己根据xboot移植了好几个晚上的fb,你这里居然都更新了,哈哈哈,大佬感谢,我晚上测试下
离线
f133 lcd 相关的测试,你慢慢测试一下,我都开源了
我用你最新的程序编译了一下,并且点了个灯,测试程序如下,测试结果点灯的频率为看图
int main(void)
{
printf("Hello RISC-V!\n");
int led_pin = rt_pin_get("PG.13");
rt_pin_mode(led_pin, PIN_MODE_OUTPUT);
while(1)
{
uint32_t len;
uint16_t *pbuf=0x42000000;
for(len=0;len<1280*720;len++)
{
*(pbuf+len)=0x00f0;
}
rt_pin_write(led_pin, 1);
for(len=0;len<1280*720;len++)
{
*(pbuf+len)=0x00f0;
}
rt_pin_write(led_pin, 0);
}
while(1)
{
rt_pin_write(led_pin, 1);
rt_thread_mdelay(500);
rt_pin_write(led_pin, 0);
rt_thread_mdelay(500);
}
return 0;
}
问题在哪里?????????????
离线
f133 lcd 相关的测试,你慢慢测试一下,我都开源了
当然我用的是windows下面的编译器,用的你百度云盘里面那个\riscv64-unknown-elf
离线
f133 lcd 相关的测试,你慢慢测试一下,我都开源了
出于好奇,特地跑了一下xboot,在xboot里面用同样的代码,测试了一下发现速度是rtt中的几十倍,,大佬是否可以看看是不是rtt移植上的问题,因为你说你在裸机里面跑是正常的,但是我都是在你开源rtt上跑的,发现了问题
可以看到这个速度才是正常的刷屏速度,只要1.8ms,,1280*720 16位刷一屏幕只要1.8ms
一个要400ms一个只要1.8ms,这个性能差200倍啊
这个是xboot里面的测试代码
while(1)
{
uint32_t len;
uint16_t *pbuf=0x42000000;
for(len=0;len<1280*720;len++)
{
*(pbuf+len)=0x00f0;
}
gpio_set_value(F133_GPIOG13,1);//bl
for(len=0;len<1280*720;len++)
{
*(pbuf+len)=0x00f0;
}
gpio_set_value(F133_GPIOG13,0);//bl
}
用led高低电平配合逻辑分析仪来测试的
最近编辑记录 smiletiger (2022-01-24 21:17:41)
离线
rtt目前没有开cache,你可以开启cache测试一下
离线
rtt目前没有开cache,你可以开启cache测试一下
你裸机里面开了cache吗?
离线
我在lcd驱动里面,无效了cache所有内存,另外,进行点灯测试时,可不用rt pin框架,直接调用gpio底层接口,目前180ms写内存肯定是不合理的
离线
我在lcd驱动里面,无效了cache所有内存,另外,进行点灯测试时,可不用rt pin框架,直接调用gpio底层接口,目前180ms写内存肯定是不合理的
应该不是cache的原因,也不会是rtt io框架的问题,我直接write32一样的结果,哪怕我把内存操作去掉,直接while里面操作io高低操作,测试下来都有都有2ms多,
离线
有可能DDR2要重新初始化吧,不晓得是不是xfel初始化DDR速率没有最高,如果在sram中测试,不知道会不会好一点,看有没有人能够分析一下问题,我也弄不懂了
离线
有可能DDR2要重新初始化吧,不晓得是不是xfel初始化DDR速率没有最高,如果在sram中测试,不知道会不会好一点,看有没有人能够分析一下问题,我也弄不懂了
我打印过ddr寄存器的时钟配置,的确是500多m的配置,也不会是这个问题把,我试试看能不能跑ram里面试试看
离线
确实是cache的问题,需要开启dcache后,内存访问速度可以大幅提高
离线
确实是cache的问题,需要开启dcache后,内存访问速度可以大幅提高
我这里不是dcache的问题哦,你可以试试,在xboot里面开启dcache的时间是2.xms,关闭dcache的时间是4.xms,性能大概差一倍左右而已,
离线