We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I am using arm fast model tools to build a simple system consisting of R82x1 single core cluster, a RAM, UART and GIC IRI. I can run a simple demo that read/writes to UART and I can see UART prints successfully. What doesn't work is GIC IRI. Somehow the R82 core is unable to read/write to GICIRI over its pvbus and I get bus faults. I can write to UART addresses but not this one. MPU is configured to allow the accesses, but it still does not work. I connect the UART, SRAM, and GIC IRI controller through a decoder with following address map. Any ideas what I maybe missing? pvbusdecoder.pvbus_m_range[0x0..0x7fffff] => ramdevice.pvbus; pvbusdecoder.pvbus_m_range[0x100000000..0x10000ffff] => pl011_uart.pvbus;pvbusdecoder.pvbus_m_range[0x110000000..0x1101fffff] => gic_iri.pvbus_s;Here is full Lisa code:
component r82simple{
composition { base_powercontroller : Base_PowerController("CPU-available-mask"=0x1); gic_iri : GIC_IRI("print-memory-map"=1,"CPU-affinities"="0.0.0.0","reg-base"=0x110000000,"reg-base-per-redistributor"="0.0.0.0=0x110100000","has-two-security-states"=1,"ITS0-base"=0x110020000,"GITS_BASER0-type"=1,"GITS_BASER2-type"=2,"GITS_BASER6-type"=4,"processor-numbers"="0.0.0.0=0","supports-shareability"=1,"A3-affinity-supported"=0,"ITS-TRANSLATE64R"=1,"ARE-fixed-to-one"=0,"wakeup-on-reset"=0,"GICD_CTLR-DS-1-means-secure-only"=1); ambapv2pvbus : AMBAPV2PVBus(); memorymappedcountermodule : MemoryMappedCounterModule("non_arch_start_at_default"=1,"use_real_time"=1); telnetterminal : TelnetTerminal(); clockdivider : ClockDivider("mul"=24000000); pl011_uart : PL011_Uart("uart_enable"=0,"untimed_fifos"=1,"out_file"="","unbuffered_output"=0,"enable_dc4"=0); ramdevice : RAMDevice("size"=0x800000); pvbusdecoder : PVBusDecoder(); Core : ARMCortexR82x1CT("BROADCASTCACHEMAINT"=0,"BROADCASTOUTER"=0,"PA_SIZE"=48,"core_power_on_by_default"=1,"enable_simulation_performance_optimizations"=1,"has_llpp"=0,"has_spp"=0,"memory.has_llram"=0,"memory.llram_base"=0x30000000,"memory.llram_enable_at_reset"=0); Clock100MHz : ClockDivider(mul=100000000); Clock1Hz : MasterClock() }
connection { Clock1Hz.clk_out => Clock100MHz.clk_in; Clock100MHz.clk_out => Core.clk_in; clockdivider.clk_out => pl011_uart.clk_in_ref; pl011_uart.serial_out => telnetterminal.serial; Clock1Hz.clk_out => clockdivider.clk_in; Clock100MHz.clk_out => memorymappedcountermodule.clk_in; memorymappedcountermodule.cntvalueb => Core.cntvalueb; Core.pvbus_m0 => pvbusdecoder.pvbus_s; self.amba_pv_s_utility_bus => ambapv2pvbus.amba_pv_s; ambapv2pvbus.pvbus_m => Core.utility_bus_s; pl011_uart.intr => gic_iri.spi_in[0]; gic_iri.pvbus_m => pvbusdecoder.pvbus_s; pvbusdecoder.pvbus_m_range[0x0..0x7fffff] => ramdevice.pvbus; pvbusdecoder.pvbus_m_range[0x100000000..0x10000ffff] => pl011_uart.pvbus; base_powercontroller.cpuporeset[0] => Core.reset; base_powercontroller.l2reset[0] => Core.presetdbg[0]; base_powercontroller.l2reset[0] => Core.l2reset; base_powercontroller.system_reset => gic_iri.po_reset; base_powercontroller.system_reset => gic_iri.reset; gic_iri.wake_request[0] => base_powercontroller.wakerequest[0]; Core.dbgnopwrdwn[0] => base_powercontroller.dbgnopwrdwn[0]; Core.standbywfi[0] => base_powercontroller.standbywfi[0]; pvbusdecoder.pvbus_m_range[0x110000000..0x1101fffff] => gic_iri.pvbus_s; gic_iri.redistributor_m[0] => Core.gicv3_redistributor_s[0]; } behavior init() { composition.init(); }
behavior reset(int level) { composition.reset(level); }
properties { component_type = "System"; } slave port<AMBAPV> amba_pv_s_utility_bus;}
Please raise an official Arm support case from the support menu above.