工具/软件:TI-RTOS
您好!
我的配置如下:
Sitara ARM3359
- Code Composer Studio 版本 CCS 6.1.2.00015
-SYS/BIOS 6.45.01.29实时操作系统
- XDC 工具3.32.00.06
-编译器 GNU v4.4.8 (Linaro)
NDK 2.24.3.35
- SYSBIOS SDK 2.1.3.2
-带有 beckoff 补丁 v5.11的德州仪器(TI) ecat_appl应用 软件
为了改进我们的代码、我们需要使运行速度非常快。
因此、我们将研究如何使用缓存来提高执行速度。
MMU 表如下所示:
SYS_MMU_entry applMMUEntry[]=
{
{(void *) 0x08000000、SYS_MMU_cacheable | SYS_MMU_BUFFERABLE}、 //NOR -可缓冲|可高速缓冲
{(void *) 0x08100000、SYS_MMU_cacheable | SYS_MMU_BUFFERABLE}、 //NOR -bufforable| cachable
{(void *) 0x08200000、SYS_MMU_cacheable | SYS_MMU_BUFFERABLE}、 //NOR -可缓冲|可高速缓冲
{(void *) 0x48300000、0}、 //PWM -不可缓冲|不可高速缓冲
{(void *) 0x48200000、0}、 //INTCPS、MPUSS -不可缓冲|不可高速缓冲
{(void *) 0x48100000、0}、 //I2C2、McSPI1、UART3、UART4、UART5、GPIO2、GPIO3、MMC1 -不可缓冲|不可高速缓冲
{(void *) 0x48000000、0}、 //UART1、UART2、I2C1、McSPI0、McASP0 CFG、McASP1 CFG、DMTIMER/GPIO1 -不可缓冲|不可高速缓冲
{(void *) 0x44E00000、0}、 //时钟模块、PRM、GPIO0、 UART0、I2C0、-不可缓冲|不可高速缓冲
{(void *) 0x4A300000、SYS_MMU_sharedable | SYS_MMU_BUFFERABLE}、 //PRUSS1 -Sharedable | Non cachable | Buffable
{(void *) 0x49000000、0}、 //EDMA3 -不可缓冲|不可高速缓冲
{(void *) 0x4A000000、0}、 //L4快速 CFG-不可缓冲|不可高速缓冲
{(void *) 0x4A100000、0}、 // CPSW -不可缓冲|不可高速缓冲
{(void *) 0xFFFFFFFF、0xFFFFFFFF}
};
在用于以下初始化的 utils.c 文件中:
SDKMMUInit (applMMuEntry); //首先需要
cache_lock ((ptr) 0x8000000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80008000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80010000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80018000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80020000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80028000、0x8000);
cache_wait();
cache_lock ((ptr) 0x80030000、0x8000);
cache_wait();
pruIcss1Handle =(PRUICSS_Handle) malloc (sizeof (PRUICSS_Config));
pruIcss1Handle->object =(PRUICSS_V1_Object *) malloc (sizeof (
PRUICSS_V1_Object));
pruIcss1Handle->hwAttrs =(PRUICSS_HwAttrs *) malloc (sizeof (
PRUICSS_HwAttrs);
.
BIOS_start();
在启动 BIOS 之前、我们尝试使用以下代码启用高速缓存:
cache_enable (cache_Type_L2);
cache_enable (cache_Type_L1P);
cache_enable (cache_Type_L1D);
我们已经在 Sitara 输出上连接示波器来测量速度是否有所提高、但似乎没有任何变化!
我们不知道高速缓存是否真正启用、如果不启用、 如何执行!
有人能帮我们吗?
非常感谢!
Laurence