The Cygnal f12x has 128k of flash and using code banking defeats the purpose of using Cygnal. The overhead of banking slows the program down as much as using the Cygnal speed it up. Thus: Is there a way in Keil to make all movc a,@a+dptr generated by the compiler/written in assembler access the upper 64k WITHOUT using bankswitching. The Cygnal chip has simple means of data bank select. in advance thanks, Erik
I don't know how the Cygnal (Silicon Labs?) works, but this is quite easy with the Triscend - if I understand you correctly: You use the XCONST option to place items defined as const into the Flash, and then use a Data Mapper to map this into XDATA space - without the need for any (Keil) Bank-switching. String literals can similarly be placed in the Flash to appear in XDATA space. You need the OHX51 Object-to-Hex converter, but I think the version shipping with C51 still has a bug: http://www.keil.com/forum/docs/thread2074.asp You may need to contact Keil direct for the fixed version. Hope that heps, A.
The only method I can think of is to declare your constants as far, write your own far variable handler using Cyngal's ability to fetch constants from the page being different than the one holding the code. But, that's limited to 32K page size anyway... regards Dejan
Hej Erik! A Philips FAE once told me, that Keil tools couldnt acces anything beyond 64kb without using banking. Raisonance tools should be able to adress things straight linear. happy programming! and have a nice weekend Per
View all questions in Keil forum