Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
Keil RTX and bootloading
Jump...
Cancel
Locked
Locked
Replies
4 replies
Subscribers
119 subscribers
Views
5664 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
Keil RTX and bootloading
Johan Moraal
over 12 years ago
Note: This was originally posted on 25th January 2011 at
http://forums.arm.com
Hi all.
I've recently written a secondary bootloader for NXP LPC17xx devices. The design is relatively simple: All our products have embedded serial flash connected with an SPI bus to the micro. The user application is responsible to load a binary image onto the serial flash. When the bootloader starts, it checks the serial flash for a binary image. If one is not found, it jumps to the user application. If one is found, it verifies the integrity of the image by doing a CRC check. If the check passes it begins to update the LPC's flash from the binary image on the serial flash.
I've confirmed that the bootloader application is working properly. Firstly I checked the LPC's flash with a ULINK Pro and made sure the bootloader is not accidentally overridden. Then I uploaded a small application that reads and verifies a large chunk of flash and blinks a led. All these tests succeeded and I'm confident my bootloader works properly.
The problem arises when I try to upload an application which uses the Keil RL-ARM real time OS. When I upload this type of application, nothing happens. I traced the problem with a ULINK and I found that the trace stops at SVC_Handler in startup_LPC17xx.s.
All our RL-ARM based applications run in privileged mode. I know the RTOS uses SVC to access hardware etc in privileged mode.
Is there something I should do in the bootloader in order to support RL apps?
Parents
Joseph Yiu
over 12 years ago
Note: This was originally posted on 25th January 2011 at
http://forums.arm.com
Hi there,
The Keil RTX Kernel should contain the require SVC handler. For some unknown reasons, the SVC vector in your compiled image might be pointing to the dummy SVC handler in the startup code rather than the OS kernel. You might need to check your compile and linking options to see if anything can affect it.
The dummy SVC handler in the startup code should be declared as [WEAK], which mean it can be overridden by a real SVC handler is it is presented. You can also try remove the dummy SVC handler in the startup code to see if it can solve the problem.
Are you using the source code version or precompiled RTX kernel library?
If using the source version, make sure HAL_CM3.c is included in the project.
This contains the "SVC_Handler".
regards,
Joseph
Cancel
Vote up
0
Vote down
Cancel
Reply
Joseph Yiu
over 12 years ago
Note: This was originally posted on 25th January 2011 at
http://forums.arm.com
Hi there,
The Keil RTX Kernel should contain the require SVC handler. For some unknown reasons, the SVC vector in your compiled image might be pointing to the dummy SVC handler in the startup code rather than the OS kernel. You might need to check your compile and linking options to see if anything can affect it.
The dummy SVC handler in the startup code should be declared as [WEAK], which mean it can be overridden by a real SVC handler is it is presented. You can also try remove the dummy SVC handler in the startup code to see if it can solve the problem.
Are you using the source code version or precompiled RTX kernel library?
If using the source version, make sure HAL_CM3.c is included in the project.
This contains the "SVC_Handler".
regards,
Joseph
Cancel
Vote up
0
Vote down
Cancel
Children
No data