FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [December 2012 Threads] Hard Fault with FreeRTOS+FatFS on STM32Posted by Thomas Jespersen on December 8, 2012 Hi all. I have never really been the RTOS guy but I have decided to give it a try now, especially because of the need of a proper IP stack with Socket integration. So I decided to get the FreeRTOS example with the lwIP stack provided by ST running on my STM32-E407 from Olimex, that contains an STM32F4ZGT6. After successfully adding the FatFS library I was able to both get Ethernet and SD card working great. But then I started making my LCD library and got that working, but when I tried my BMP writing routine, which repeatedly fetches 512 bytes (fills a buffer) from a file the application reads and displays two full buffers but then goes into a Hard Fault. I have tried getting most information out of this Hard Fault exception as possible which can be seen below: [Hard fault handler - all numbers in hex] R0 = 20001158 R1 = 1eaf00b4 R2 = 80031a5 R3 = 80031a5 R12 = 20000cac LR [R14] = a5a5a5a5 subroutine call return address PC [R15] = fffffffd program counter PSR = 80078c2 BFAR = 1eaf00b4 CFSR = 8200 HFSR = 40000000 DFSR = 1 AFSR = 0 SCB_SHCSR = 400
I am using the pvPortMalloc(512) to get a pointer to the required 512 bytes buffer, but that didn't fix the problem. You can download the CoIDE project (IDE for GCC compiler) and have a look for yourself: http://www.tkjelectronics.dk/uploads/TheBlastFootball_FreeRTOS_HardFault.zipI really hope that someone can bring me some suggestions. Best Regards Thomas Jespersen
RE: Hard Fault with FreeRTOS+FatFS on STM32Posted by Dave on December 8, 2012 The registers in your post are strange. The PC looks how I would expect LR to look in an interrupt, and LR looks like it has been loaded from a stack byte that has never been written to since the stack was created.
Do you have stack overflow protection on?
RE: Hard Fault with FreeRTOS+FatFS on STM32Posted by Thomas Jespersen on December 8, 2012 I don't know about the Hard Fault register output either, as I agree with you that the PC looks very odd! No, I haven't enabled stack overflow due to the missing function to make it work -> " undefined reference to `vApplicationStackOverflowHook' "
RE: Hard Fault with FreeRTOS+FatFS on STM32Posted by Thomas Jespersen on December 8, 2012 I mean, I haven't implemented this monitoring function to warn and require a restart.
RE: Hard Fault with FreeRTOS+FatFS on STM32Posted by Thomas Jespersen on December 8, 2012 Thanks a lot - giving that hint to me made me find the reason for the problem! :-) When creating the thread which executes the BMP LCD write function I didn't make the stack for this thread large enough to hold the buffer. The stack was only set to 256 bytes, where the buffer itself takes 512! By increasing the size to 1024 bytes the program works perfectly. xTaskCreate(UserGUI, "UserGUI", 1024, NULL, GUI_TASK_PRIO, NULL); Thanks a lot.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|