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

8051 ROM mask with different flash application

We are planning to build a ROM mask + flash environment. That is the lower 32K code space will be mapping to ROM-mask and the upper 32K to flash. The lower 32K will check a function table in the upper 32k (flash).
We we put drivers and basic APIs in the ROM-mask which serve as a library (and can't be changed after first release)
By updating the flash (upper 32k), we can have different application.

we are planning to build several projects that share the same 32K ROM-mask source code (which is grouped by userclass) and have different application code. But the lower 32k are different.

Is there any solution??

Parents
  • I have tried to group code into ROM and APP userclass. But the generated binary seems to be different due to different call-tree.
    that's the crux, a piece of separate code can not share the call tree with some 'unknown code'

    the only way I can see is to modify startup.a51 for the code in high mem not to clear whatever RAM the low code uses and then set the high code to have uninitialized RAM storage in the areas that the low code uses. This is easily accomplished with a small assembler module.

    Another problem with your scheme is that, unless you (are ignorant enough to) believe that the low code will never change is that the communication will have to be by indirect pointer call which is not the most efficient use of a '51.

    RE low power: TI has some VERY frugal '51 derivatives and so does SILabs (e.g. the '9' series)

    Erik

Reply
  • I have tried to group code into ROM and APP userclass. But the generated binary seems to be different due to different call-tree.
    that's the crux, a piece of separate code can not share the call tree with some 'unknown code'

    the only way I can see is to modify startup.a51 for the code in high mem not to clear whatever RAM the low code uses and then set the high code to have uninitialized RAM storage in the areas that the low code uses. This is easily accomplished with a small assembler module.

    Another problem with your scheme is that, unless you (are ignorant enough to) believe that the low code will never change is that the communication will have to be by indirect pointer call which is not the most efficient use of a '51.

    RE low power: TI has some VERY frugal '51 derivatives and so does SILabs (e.g. the '9' series)

    Erik

Children
No data