Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Real time embedded FreeRTOS mailing list 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training




Loading

Cortex A9 port: The access to portICCPMR_PRIORITY_MASK_REGISTER causes data abort

Posted by stephenwwu on March 24, 2014

I am porting FreeRTOS 8.0.0 to other ARMv7 platforms based on the .../portable/GCC/ARMCA9. I found the system generates data abort when accessing portICCPMRPRIORITYMASKREGISTER.

portICCPMRPRIORITYMASKREGISTER is defined as ( *( ( volatile uint8t * ) ( portINTERRUPTCONTROLLERCPUINTERFACEADDRESS + portICCPMRPRIORITYMASK_OFFSET ) ) ) in portmacro.h. According to ARM IHI0048B GIC Architecture Specification, section 4.1.4, all registers support 32-bit access. Some registers support 8-bit access. All other accesses are implementation dependent.

I changed portICCPMRPRIORITYMASK_REGISTER to 32-bit wide register, the data abort goes away.

Does the register width change make sense? Is there any side effect of the width change?


Cortex A9 port: The access to portICCPMR_PRIORITY_MASK_REGISTER causes data abort

Posted by rtel on March 24, 2014

To be honest, I'm not sure.

The ICCPMR register is a 32-bit register, but only the least significant byte is implemented. The other three bytes are "Reserved", and should be read as zero with writes ignored. Therefore I would not have thought it made any difference, but evidently it does. I think you would have to look at the assembly code generated to work out what the problem is.

Please report back what you find.

Out of interest, which chip are you porting to?

Regards.


Cortex A9 port: The access to portICCPMR_PRIORITY_MASK_REGISTER causes data abort

Posted by stephenwwu on March 25, 2014

The assembly code was 8-bit load 'ldrb' when it is declared as (uint8t *). The ldrb instruction causes data abort. After changing the definition to (uint32t *), the assembly code becomes 'ldr'. No more data abort.


Cortex A9 port: The access to portICCPMR_PRIORITY_MASK_REGISTER causes data abort

Posted by rtel on March 25, 2014

I have updated all 3 Cortex-A port layers to ensure only 32-bit accesses are made to both the ICCPMR and ICCRPR registers.

Regards.


Cortex A9 port: The access to portICCPMR_PRIORITY_MASK_REGISTER causes data abort

Posted by stephenwwu on March 25, 2014

Thanks for the confirmation.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.

Latest News:

FreeRTOS V9.0.0 is now available for download.


Free TCP/IP and file system demos for the RTOS


Sponsored Links

⇓ Now With No Code Size Limit! ⇓
⇑ Free Download Without Registering ⇑


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Renesas Electronics Gold Alliance RTOS Partner.jpg

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Atmel RTOS partner supporting ARM Cortex-M3 and AVR32 microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Xilinx Microblaze and Zynq partner

Silicon Labs low power RTOS partner

Altera RTOS partner for Nios II and Cortex-A9 SoC

Freescale Alliance RTOS Member supporting ARM and ColdFire microcontrollers

Infineon ARM Cortex-M microcontrollers

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

Cypress RTOS partner supporting ARM Cortex-M3

Fujitsu RTOS partner supporting ARM Cortex-M3 and FM3

Microsemi (previously Actel) RTOS partner supporting ARM Cortex-M3

Atollic Partner

IAR Partner

Keil ARM Partner

Embedded Artists