Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
大家好、
我正在使用 TDA2xx VAYU EVM XC5777X CPU 板。 我对 IPU (M4)和 DSP (C66)通信感兴趣。 此时、我们将使用在外部存储器中定义的共享存储器区域、如 VISION SDK 2.12中的 IPC 示例中所述。 为了使操作正常、我们创建了自定义平台文件并将 SR_0区域定义为:
["SR_0"、 { 名称:"SR_0"、 基地址:0x8E000000、 Len:0x1000000、 太空:"数据"、 访问:"RW" 、} ]、
配置 文件 c胶囊 ipc.cfg.xs 包含区域说明:
/*共享区域配置*/
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
SharedRegion.translate = false;
/*配置 SharedRegion #0 (IPC)*/
var SR0Mem = Program.cpu.memoryMap["SR_0"];
SharedRegion.setEntryMeta(0、
新建 SharedRegion.entry ({
姓名: "SR_0"、
基址: SR0Mem.base、
长度: SR0Mem.len、
ownerProId:0、
IsValid: 对、
高速缓存行大小:128、
高速缓存启用:sr0_高速 缓存启用
})
);
SR_0归 DSP 所有。
现在、我们希望加快加载并存储到存储器中、因为这会影响我们的性能、所以计划是定义更小的共享区域、但在 OCMC RAM 芯片2和3中、它们总共有2 MIB 的空间。 第一个问题是有可能吗? 我们能否像这样将 SR_0映射为两个区域上的一个区域:
["SR_0"、 { 名称:"SR_0"、 基地址:0x40400000、 Len:0x00200000、 太空:"代码/数据"、 访问:"rwx"、 } ]、
如果是、下一个问题是如何正确配置 IPU 的 AMmu 以使其像这样工作。 由于它仅支持2个大小为256KiB 的介质页条目、因此它们被占用以映射 OCMC RAM1芯片。 和大页面条目仅支持32M 和512M 大小。 我试图这样描述它:
VAR Ammu = xdc.useModule('ti.sysbios.hal.ammu.AMMU');
Ammu.configureAmmu = true;
/******* 小页数 //*
smallPages [0]和 smallPages [1]通过 h/w 自动编程*/*
覆盖 smallPage[1],以便覆盖16K。 H/w 复位值仅配置
* 4K */
Ammu.smallPages [0]。pageEnabled = Ammu.Enable_Yes;
Ammu.smallPages [0];
Ammu.smallPages [0];translateAddress = 0x55020000;
Ammu.smallPages [0];Ammu.translationPages = AMmu.Ammu.translage[0].Ammu.Ammu.Ammu.Amages[0]
;Ammu.Ammu.Ammu.Ammu.Ammu.ales[0]
Ammu.smallPages [0].volatileQualifier = Ammu.volatile_follow;
Ammu.smallPages [0].l1_cacheable = Ammu.cachepolicy_cacheable;
/* smallPage[1],以便覆盖16K。 H/w 复位值仅配置
* 4K */
Ammu.smallPages [1].pageEnabled = Ammu.Enable_Yes;
Ammu.smallPages [1].logicalAddress = 0x40000000;
Ammu.smallPages [1].translateAddress = 0x55080000;
Ammu.smallPages [1].Amages[1]
;Ammu.translations=Ammu.Ammu.Amages[1];Ammu.Ammu.Ammu.translations=Only.Amages[1];Ammu.Ammu.
Ammu.smallPages [1].volatileQualifier = Ammu.volatile_follow;
/******* 中页 //
//* OCMC 空间已映射*//
*使其 L1可高速缓冲*/
Ammu.mediumPages [0]启用= Ammu.Enable_Yes;
Ammu.mediumPages [0]。logicalAddress = 0x00300000;
Ammu.mediumPages [0];translatedAddress = 0x40300000;
Ammu.medium.AmumPages = 0x00300mu.Ammu.Ammu.Ammu.AmumPages = 0x0000.Ammu.Ammu.medium.AmumPages
;Ammu.Ammu.Ammu.Amu.Amu.AmumPages = 0x40
Ammu.mediumPages[0].L1_cacheable = Ammu.csachepolicy_cacheable;
Ammu.mediumPages[0].L1_writepolicy = Ammu.writepolicy_write_back;
Ammu.mediumPages[0].L1_allocates= Ammu.alu.alu.alu.alu.meditagePolicy_posted.Amum.Phyes1.Ammu.Amumages[0].Ammu.Amum.pages].Amum.Amum.Amumpage.Ammu.Amum.Amum
Amable.mediumPages [1].logicalAddress = 0x00340000;
Amachemu.mediumPages [1].translateAddress = 0x40340000;
Ammu.mediumPages [1].translationEnabled = Amachemmu.Enable_Yes;
Amachemu.mediumPages [1].size = Ammu.medium_256k;Amcumu.perature[Amcmu.media.al.alu.alu.alu.alu.e0.1].alges[1];amum.amum.amucmu.medium.
Ammu.mediumPages [0].L1_writepolicy = Ammu.writepolicy_write_back;
Ammu.mediumPages [0].L1_allocate = Ammu.AllocatePolicy_Allocate;
Ammu.mediumPages [0].L1_posted= Ammu.PostedPolicy_posted***
大页数 /
//*代码/数据:大页(32M);可高速缓冲*/
放大器。largePAGE[0]。pageEnabled = Ammu.Enable_Yes;Ammu.largePAGE[0]。logicalAddress = 0x8000000;Amimuler.largePAGE[0]。volatureEnabled = Ammu.ma_no;Ammu.alimu.aturePages[0];Amvolature_volature.amages[0];Amile.volature_volature.amages[0]
1.Ammu.largePages [0].L1_cacheable = Ammu.csachepolicy_cacheable;
Ammu.largePages [0].L1_posted= Ammu.PosedPolicy_posted;
Ammu.Ammu.AmulePages =0].L2_ameages[0].AmuleZu.AmuleZu.Ameages=AmuleZu.AmuleZu.AmuleZu.Amuleages[0].AmuleZu.AmuleZu.AmuleZu.AmuleZu.AmuleZu.AmuleZu.Amages[0].AmuleZu.AmuleZu.AmuleZu.AmuleZu.AmuleZu.AmuleZu.Amages[0].AmuleZu.AmuleZu.AmuleZu.AmuleZu.Amages[0].Amules
Ammu.largePages [1].L1_cacheable = Ammu.cachepolical_non_cachable;
Ammu.largePages [1].L1_posted= Ammu.PostedPolicy_non_posted;
Ammu.AmlargePages [1].L2_cacheable = Ammu.csecolicole_non_postedPolicy[1].Ammu.Ammu.Ammu.Amule.posteages[1].Amules].Amule.poste.posteages[1].Am
但是在 BIOS 启动时、我遇到了以下问题:
[Cortex_M4_IPU1_C0] ti.sysbios.family.arm.m3/hwi:1105行:e_hardFault:Forced
TI.SYSBIOS.family.ARM.m3/Hwi:第1182行:E_BUSFault:PRECISERR:立即总线故障、已知确切地址:4ae0c204
在 PC = 0x8005510e 时的后台线程中发生异常。
内核0:ThreadType_Main 中发生异常。
主名称:main(),句柄:0x0。
主堆栈基地址:0x800。
主堆栈大小:0x2000。
R0 = 0x4ae0c204 R8 = 0x00000000
R1 = 0x800b3a84 R9 = 0x00000000
R2 = 0x00000010 R10 = 0x00000000
R3 = 0x000027c4 R11 = 0x00000000
R4 = 0x00000000 R12 = 0x00002764
R5 = 0x00000000 SP (R13)= 0x00002758
R6 = 0x00000000 LR (R14)= 0x80055133
R7 = 0x00002800 PC (R15)= 0x8005510e
PSR = 0x01000000
ICSR = 0x00400803
MMFSR = 0x00
BFSR = 0x82
UFSR = 0x0000
HFSR = 0x40000000
DFSR = 0x00000001
MMAR = 0x4ae0c204
BFAR = 0x4ae0c204
AFSR = 0x00000000
很抱歉这篇长文章、但它有很多值得描述的东西。 有人能帮我们解决这个问题吗?
此致、
帕夫洛!