工具与软件:
空 MMUConfigAndEnable (void)
{
/*
**定义 AM335x 的 DDR 内存区域。 DDR 可配置为正常
**在用户/特权模式下具有 R/W 访问权限的内存。 高速缓存属性
**在此处指定、
**内部-直写、无写分配
**外部-回写、写分配
*/
region regionDdr ={
MMU_PGTYPE_SECTION、START_ADDR_DDR、NUM_SECTIONS _DDR
MMU_MEMTYPE_NORMAL_NON_SHARELED (MMU_CACHE_WT_NOWA、
MMU_CACHE_WB_WA)、
MMU_REGION_NON_SECURE、MMU_AP_PRV_RW_USR_RW
(unsigned int*) pageTable
};
/*
**定义 AM335x 的 OCMC RAM 区域。 给定的 DDR 区域属性相同。
*/
region regionocmc ={
MMU_PGTYPE_SECTION、START_ADDR_OCMC、NUM_SECTIONS _OCMC
MMU_MEMTYPE_NORMAL_NON_SHARELED (MMU_CACHE_WT_NOWA、
MMU_CACHE_WB_WA)、
MMU_REGION_NON_SECURE、MMU_AP_PRV_RW_USR_RW
(unsigned int*) pageTable
};
/*
**定义设备内存区域。 OCMC 和 DDR 之间的区域为
**配置为设备内存、在用户/特权模式下具有 R/W 访问权限。
**此外,该区域被标记为'执行从不'。
*/
Region regionDev ={
MMU_PGTYPE_SECTION、START_ADDR_DEV、NUM_SECTIONS
MMU_MEMTYPE_NORMAL_SHARELED (MMU_CACHE_WT_NOVA、
MMU_CACHE_WB_WA)、
MMU_REGION_NON_SECURE、
MMU_AP_PRV_RW_USR_RW | MMU_SECTION_EXEC_Never、
(unsigned int*) pageTable
};
/*初始化 PAGE 表和 MMU */
MMUInit (unsigned int*) pageTable);
/*映射定义的区域*/
MMUMemRegionMap (®ionDdr);
MMUMemRegionMap (®ionOcmc);
MMUMemRegionMap (®ionDev);
/*现在可以安全启用 MMU */
MMUEnable((unsigned int*)pageTable);
}
#define START_ADDR_DDR (0x80000000)
#define START_ADDR_DEV (0x44000000)
#define START_ADDR_OCMC (0x40300000)
#define NUM_SECTIONS _DDR (512)
#define NUM_SECTIONS _DEV (960)
#define NUM_SECTIONS_OCMC (1)
MMU 如上所述配置、启用高速缓存、读取寄存器时间通过 IO 端口开关进行监控。 程序如下
TEST_4.12.10_SET Speed_By (0);
DMA_DFD =*(volatile unsigned int *)(0x49800000 + 0x288);//* PR_DMA_DFDSTBREF;
// DMA_DFD =*(volatile unsigned int *)(0x44E07000);
TEST_4.12.10_SET Speed_By (1);
示波器测量的时间为230ns、请问这个时间是否可以优化?