artem
Advanced Member level 4

avr with ram
My appliaction on avr atmega uses ucos and can have 2 operation modes :
- gui mode where text based widget alike menu is running
- and traffic mode where all port scanning connectivity .. are executing
These 2 moduloes are not executing at the same time - when gui active traffic module does not work and vice versa . These modules are communicating through eeprom - gui stores data to , traffic module retrives data from eeprom .
To get one hex file i have to compile them both but it means that there will be unnecessary ram usage as ram for gui and traffic modules occupy noncrossing sram locations .
Atmega has bootloader feature so may be this can be used to divide program into 2 integal independent parts .
My question - is there any other than bootloader like way to put 2 independent application to the atmega to reduce system requirements ? or in other words is it possible to compile modules as their flash positions will be assigned different memory locations assuming they share same sram, interrupt vectors for both modules are not crossed and absolute jump can be used to switch between modules .
Issue could also be usefull if bigger than 64 kb external sram is used - if modules can work independently being loaded into one program space each one of them can have its own 64 kb sram page switchable via gpio port .
My appliaction on avr atmega uses ucos and can have 2 operation modes :
- gui mode where text based widget alike menu is running
- and traffic mode where all port scanning connectivity .. are executing
These 2 moduloes are not executing at the same time - when gui active traffic module does not work and vice versa . These modules are communicating through eeprom - gui stores data to , traffic module retrives data from eeprom .
To get one hex file i have to compile them both but it means that there will be unnecessary ram usage as ram for gui and traffic modules occupy noncrossing sram locations .
Atmega has bootloader feature so may be this can be used to divide program into 2 integal independent parts .
My question - is there any other than bootloader like way to put 2 independent application to the atmega to reduce system requirements ? or in other words is it possible to compile modules as their flash positions will be assigned different memory locations assuming they share same sram, interrupt vectors for both modules are not crossed and absolute jump can be used to switch between modules .
Issue could also be usefull if bigger than 64 kb external sram is used - if modules can work independently being loaded into one program space each one of them can have its own 64 kb sram page switchable via gpio port .