zynq ucos系统下lwip优化,降低cpu使用率

2017-01-12 00:56 阅读 582 次 评论 0 条

zynq ucos lwip echo sever优化版中,提到过arm cpu使用率过高的问题,也写了如何降低cpu使用率同时保证lwip的功能正常,可能没有写清楚,也没有帖图片辅助说明。

这里将图片补上,开发环境vivado 2015.1版,使用的ucos 1.30版BSP包(注意bsp包的版本号,后面升级版本1.41版,这样设置也不行了),在ucos bsp的配置中设置zynq_options如下图所示。

image

在ucos的bsp中配置MMU、CACHE配置与使能为false后,在应用程序中是否调用Xil_DCacheDisable();函数,cpu使用率都会下降。

image

上图为通过网口将cpu使用率信息输出,同时也有部分echo server的输入回显内容。

当ucos bsp升级为ucos1.41版,在vivado2015.4版本下时,按照上图中的设置方法进行设置,lwip就不能正常工作了。

在ucos bsp的设置中,ucos1.41版增加了对A53 arm核的支持,但我们使用的zynq为A9核,在A9核下增加了L1的数据与指令cache的使能控制,保持默认false即可。

image

然后比较ucos版本1.30与1.41版本的不同,首先比较UCOS_LowLevelInit()函数,包含关于底层的cache与mmu控制。

两版本的函数内容有所区别,但在ucos bsp中设备mmu、cache为false后,两版本中的函数内容均不参与编译,即两个均为空函数,所以两者没有区别。

然后再比较asm_vectors.S文件,此文件完成arm加载后底层的中断、cache与mmu配置。注意ucos系统使用的asm_vectors.S在ucos\ucos_bsp_0\ps7_cortexa9_0\libsrc\ucos_v1_41\src\ps7目录下的asm_vectors.S文件,而不是/ucos_bsp_1_41/ps7_cortexa9_0/libsrc/ucos_standalone_v1_41/src/profile目录下的。

V1.41增加了equ IRQ_FIQ_DIS 0xC0

Reset_Handler:

增加 CPSID IF @ Disable interrupts

增加

LDR r0, =0xF8F02100 @ Disable the L2 cache

MOV r1, #0

STR r1, [r0]

LDR r0, =0xF8F00208

MOV r1, #0x1

STR r1, [r0]

增加

MOV r0, #IRQ_FIQ_DIS

增加

#if ((ZYNQ_ENABLE_EARLY_L1_I_EN == DEF_ENABLED) && (UCOS_ZYNQ_ENABLE_CACHES == DEF_ENABLED))

MRC p15, 0, r0, c1, c0, 0 @ Read control register

ORR r0, r0, #CTRL_C1_Z @ Enable branch prediction

ORR r0, r0, #CTRL_C1_I @ Enable instruction cache

MCR p15, 0, r0, c1, c0, 0 @ Write control register

#endif

增加

#if ((ZYNQ_ENABLE_EARLY_L1_D_EN == DEF_ENABLED) && (UCOS_ZYNQ_ENABLE_CACHES == DEF_ENABLED))

MRC p15, 0, r0, c1, c0, 0 @ Read control register

ORR r0, r0, #CTRL_C1_C @ Enable data cache

MCR p15, 0, r0, c1, c0, 0 @ Write control register

#endif

区别就在asm_vectors.S文件中,修改asm_vectors.S文件,修改方法如下图所示

image

image

image

可以直接修改ucos_bsp_0中的文件,这样修改在硬件配置发生变化或其它原因重新生成ucos_bsp_0包时,需要重新修改asm_vectors.S文件。

也可以修改ucos源bsp包中的文件,这样重新生成ucos_bsp_0时,不需要更改asm_vectors.S文件,但可能会影响ucos其它功能的运行,未做测试,在lwip及串口等功能下能够正常运行。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:zynq ucos系统下lwip优化,降低cpu使用率 | 起点博客
分类:应用笔记 标签:, ,

发表评论


表情