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
We have two different projects bootloader(without RTX kernal) and Application code (with RTX Kernal).When we laod the bootlaoder and the application code, part of the RAM data will be corrupted.Please guide to resolve this problem.
Software interrupts is not required for the bootlaoder we have not shifted the interrupt address, we are using the same interrupt address
Meomory mapping is as below Bootloader 0 - 0x2000 Application code starts from 0x2000
Thank you Harish
does it also go wrong if you burn your application at the entry point to flash, hence if you don't use a bootloader?
Hi,
It is working fine if i load the Application code at the entry point to flash.
It will also work fine if i use the LPC2300.s (Copyright 2006) in the bootloader
diff between the startup files...?
maybe you don't configure external RAM (do you use it...?) correctly?
Hi Harish,
Could you confirm that, when your application starts, it is running in the Supervisor mode?
Hi ,
The difference is
1. External memory control functionality is added 2. power control for the pheripherals is added 3. Some part of the startup code is modified
we are not using any external RAM .. External flash is used
Hi John,
The Application starts with the supervisor mode and jumps to the user mode once the control comes to main function
you must make sure that both your bootloader and application start in supervisor mode, otherwise stacks will not be configured correctly. make your jump to application function a SWI function.
"The memory for variables, arrays of both bootloader and Application code are allocated in the same RAM area,"
I did expect that. But I was thinking about their relative location, according to the map file. Is your corrupted variables stored directly before or after a stack or an array/buffer, in which case an overflow/underflow would reach into the corrupted variables?
So, when the application comes to main(), is the R13(SP) of supervisor mode 0x40001570?
Thanks for your reply..
Only 3 bytes of the buffer is getting corrupted. The buffer is of size 200 bytes, it is used for communication between the boards The Corrutped location is alomost at the centre of the buffer,the corruped location is almost at the centre of the buffer.
We have already verified the above in the map file, it is not getting corrupted due to the overflow or underflow of any other variables
=> So, when the application comes to main(), is the R13(SP) of supervisor mode 0x40001570? <=
Sorry for that I made a mistake here. I do need to learn something about Memory Usage.
=> Each task is allocated with its own stack. <=
What does this mean? All tasks are created by os_tsk_create_user() function?
when creating RTX tasks, you can either provide your own buffer to store the stack or rely on the buffer provided by the kernel ('os_tsk_create').
Startup file with/without PRESERVE8. Data Align?