From e7d500deb725fa3dd88d6ee30f0ad8e515652a01 Mon Sep 17 00:00:00 2001 From: Kinjal Pravinbhai Patel Date: Wed, 26 Aug 2015 17:01:52 +0530 Subject: [PATCH] sw_apps: openamp matrix multiply application is modified This patch changes linker script to keep everything into DDR except vectors. It removes frequent call to enable interrupt and removed disable interrupt in between. It also fixes the order of text carve out entry. Signed-off-by: Kinjal Pravinbhai Patel Acked-for-series: Anirudha Sarangi --- lib/sw_apps/openamp_matrix_multiply/src/baremetal.c | 2 -- lib/sw_apps/openamp_matrix_multiply/src/lscript.ld | 4 ++-- lib/sw_apps/openamp_matrix_multiply/src/lscript_freertos.ld | 4 ++-- lib/sw_apps/openamp_matrix_multiply/src/matrix_multiply.c | 5 +---- lib/sw_apps/openamp_matrix_multiply/src/rsc_table.h | 3 +-- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/sw_apps/openamp_matrix_multiply/src/baremetal.c b/lib/sw_apps/openamp_matrix_multiply/src/baremetal.c index a6a917e9..4ea19525 100644 --- a/lib/sw_apps/openamp_matrix_multiply/src/baremetal.c +++ b/lib/sw_apps/openamp_matrix_multiply/src/baremetal.c @@ -49,8 +49,6 @@ int zynqMP_r5_gic_initialize() { #ifndef USE_FREERTOS u32 Status; - Xil_ExceptionDisable(); - XScuGic_Config *IntcConfig; /* The configuration parameters of the interrupt controller */ /* diff --git a/lib/sw_apps/openamp_matrix_multiply/src/lscript.ld b/lib/sw_apps/openamp_matrix_multiply/src/lscript.ld index 6612d721..76f86356 100644 --- a/lib/sw_apps/openamp_matrix_multiply/src/lscript.ld +++ b/lib/sw_apps/openamp_matrix_multiply/src/lscript.ld @@ -294,7 +294,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); . += _HEAP_SIZE; _heap_end = .; HeapLimit = .; -} > ps8_ocm_ram_1_S_AXI_BASEADDR +} > ps8_ddr_S_AXI_BASEADDR .stack (NOLOAD) : { . = ALIGN(16); @@ -322,7 +322,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); . += _UNDEF_STACK_SIZE; . = ALIGN(16); __undef_stack = .; -} > ps8_ocm_ram_1_S_AXI_BASEADDR +} > ps8_ddr_S_AXI_BASEADDR _end = .; } diff --git a/lib/sw_apps/openamp_matrix_multiply/src/lscript_freertos.ld b/lib/sw_apps/openamp_matrix_multiply/src/lscript_freertos.ld index a2463569..9d98a4c2 100644 --- a/lib/sw_apps/openamp_matrix_multiply/src/lscript_freertos.ld +++ b/lib/sw_apps/openamp_matrix_multiply/src/lscript_freertos.ld @@ -278,7 +278,7 @@ _binary_firmware2_end = 0; *(COMMON) . = ALIGN(4); __bss_end__ = .; -} > ps8_ocm_ram_1_S_AXI_BASEADDR +} > ps8_ddr_S_AXI_BASEADDR _SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 ); @@ -322,7 +322,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); . += _UNDEF_STACK_SIZE; . = ALIGN(16); __undef_stack = .; -} > ps8_ocm_ram_1_S_AXI_BASEADDR +} > ps8_ddr_S_AXI_BASEADDR _end = .; } diff --git a/lib/sw_apps/openamp_matrix_multiply/src/matrix_multiply.c b/lib/sw_apps/openamp_matrix_multiply/src/matrix_multiply.c index 1ed50e97..f8db15b6 100644 --- a/lib/sw_apps/openamp_matrix_multiply/src/matrix_multiply.c +++ b/lib/sw_apps/openamp_matrix_multiply/src/matrix_multiply.c @@ -187,14 +187,13 @@ void communication_task(){ #else env_create_sync_lock(&OpenAMPInstPtr.lock,LOCKED); #endif + env_enable_interrupt(VRING1_IPI_INTR_VECT, 0, 0); while (1) { #ifdef USE_FREERTOS QueueSetMemberHandle_t xActivatedMember; - env_enable_interrupt(VRING1_IPI_INTR_VECT, 0, 0); xActivatedMember = xQueueSelectFromSet( comm_queueset, portMAX_DELAY); if( xActivatedMember == OpenAMPInstPtr.lock ) { env_acquire_sync_lock(OpenAMPInstPtr.lock); - env_disable_interrupt(VRING1_IPI_INTR_VECT); process_communication(OpenAMPInstPtr); } if (xActivatedMember == OpenAMPInstPtr.send_queue) { @@ -202,9 +201,7 @@ void communication_task(){ rpmsg_send(app_rp_chnl, send_data.data, send_data.length); } #else - env_enable_interrupt(VRING1_IPI_INTR_VECT, 0, 0); env_acquire_sync_lock(OpenAMPInstPtr.lock); - env_disable_interrupt(VRING1_IPI_INTR_VECT); process_communication(OpenAMPInstPtr); matrix_mul(); if(pq_qlength(OpenAMPInstPtr.send_queue) > 0) { diff --git a/lib/sw_apps/openamp_matrix_multiply/src/rsc_table.h b/lib/sw_apps/openamp_matrix_multiply/src/rsc_table.h index 5af45cbd..e167051a 100644 --- a/lib/sw_apps/openamp_matrix_multiply/src/rsc_table.h +++ b/lib/sw_apps/openamp_matrix_multiply/src/rsc_table.h @@ -44,9 +44,8 @@ struct remote_resource_table { unsigned int reserved[2]; unsigned int offset[NO_RESOURCE_ENTRIES]; /* text carve out entry */ - - struct fw_rsc_carveout ddr_cout; struct fw_rsc_carveout ocm_1_cout; + struct fw_rsc_carveout ddr_cout; /* rpmsg vdev entry */ struct fw_rsc_vdev rpmsg_vdev; struct fw_rsc_vdev_vring rpmsg_vring0;