Hello,
I'm creating an application which runs on Dallas 89C450 microcontroller. My application uses RTX-51 Full RTOS. The versions of the tools which are integrated into my IDE are like below:
C51 Ver: 7.50 A51 Ver: 7.10
My application used to work fine but I was having problems with my available code space. So, I decided to port my application to LX51 Advanced Linker V4.24 in order to use its code packing feature. But my application started malfunctioning after enabling code packing.
What might be going wrong? How can I solve this problem? Using code packing feature is quite important for me because it seems that it would solve my problems with available code space if it worked fine.
Please send me your opinions and advises. This is an emergency case.
Best regards...
But my application started malfunctioning after enabling code packing.
What might be going wrong?
Everything. That's the best answer possible, given the complete absence of usable detail in your post.
If you don't even bother to tell us what kind of malfunction you observed, how do you expect anyone to be able to help you fix it?
This is an application which runs on a commercial device. I'm using RTX-51 as the real-time kernel to accomplish multitasking purposes. My application is comprised of tasks dedicated to special duties within the system. There are tasks like: serial handlers, display drivers, built-in test, etc.
I put each of my tasks in a seperate C-module. Normally, I used to link my application using BL51 linker. But as the size of my application grows, I needed to change my linker to LX51 in favor of its better code size optimization capabilities. When I activated "code packing" option of this optimizer, my target hardware starts not accomplishing some functionalities like built-in-test.
I use a serial line for debugging purposes. I put some string into the line at a specific location that I want to observe. It seems, after enabling this code packing option, system starts not passing some of the lines in my code which it used to pass in the past.
Does anybody know what might be going wrong? I can't understand it because I don't know exactly what this "code packing" option does. I checked out my assembler code and memory-map output listings but I couldn't observe any abnormalities.
Hopefully, I could make myself clear now. I would be glad, if you answered me as quick as possible.
Thank you. Best regards...
Frequently, this kind of a problem is caused by some kind of time-dependency the previous compilation maintained. Linker code packing, creates micro-subroutines out of identical code sections in your program. As such, some parts of your program will run slightly slower.
If your program depends on some code to execute in a certain time window, this could explain the problems with code packing.
To solve the problem, disable code packing for those sections of code. (See http://www.keil.com/support/docs/2436.htm)
Jon
Yeah, I had seen this article which you send me earlier. And I tried it in my time critical modules. But it didn't work fine. Thank you for your interest.
Any other ideas?
View all questions in Keil forum