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.
Does anyone knows a methode, to declare a function in a specific CODE address in C51? Something lika a org xxxx in assembler !
Let me try to explain you what I'm trying to do: I'm working with uPSD3212 from ST electronics. In this processor I have two flashes and I can configure PSEN to active Flash one or Flash two and the some for RD signal, in other word I can use one flash as a code and the other as a Data and vice-versa. Take a look what I'm doing: 1. I record a simple program in the flash one and a simple program in the flash two. 2. When I reset my device the second Flash is configured as code (PSEN access it) and the second as a Data (RD access it). 3. In my code, on second flash, I change PSEN to access my fist flash and RD to access my second flash. In other words I change my code from the second flash to the first (I'm trying to make a bootloader). When I make it, my "program count" stay with the same value, and, of course, my program in the first flash doesn't work fine. There is a way to jump to same particular adress (ljmp XXXX) and put a function in this adress (org XXX) using C?
What you're doing with your two functions is a combination of traditional C51 techniques "code banking" and "xdata banking". Neither would strictly need any knowledge about absolute memory locations for functions if you had let the C compiler help you doing it. If you insist doing it on your own, you'll have to investigate the suggestions you already got: put functions in separate segments, let the linker place those segments at fixed locations.