From: Mark Borgerson on 14 Apr 2010 10:30 In article <ZJadnYsS-e7fXljWnZ2dnUVZ_umdnZ2d(a)giganews.com>, nospam(a)nowhere.com says... > > > Mahesh_Shah wrote: > > > Can any one guide me how to develop pluggable fimrware architecture for > > embedded system. I am developing a product using ARM Cortex-M3 core. I am > > looking for an architecure where there will be a bare minimum functionality > > involved in product. However additional functionalities or modules are > > pluggable which can be added or removed from product any time based on > > requirements. > > > > For example, firmware will have basic 3 modules (M1, M2 and M3). Tomorrow, > > i have to add module M4. So i can add code for that module M4 without > > disturbing M1, M2 and M3 module. M4 code can be added using ethernet or USB > > or simple RS232 or using wireless communication(RF). I dont want to > > download entire new firmware having all 4 modules. Similarly if tomorrow, i > > ahve to add another two modules M5 and M6 and now i want to remove M4, then > > it should support it. > > > > This makes sure that device will not bring back to factory from installed > > location to load new firmware or modules. > > > > Any thought. > > Short answer: don't do that unless you really have to do that. > > There will be a lot of unnecessary work on defining interfaces and > sharing system resources. > > There will be a hell of compatibility issues between different versions > of different modules. > > Modular approach actually makes sense in not too many cases. > I agree with Vladimir. Make M1 a bootloader and send the user whatever combination of M2,M3,M4....they need. You compiler and linker will keep the application smaller and more maintainable. I don't see many attractive waypoints between a single well-crafted application and a Linux install. The time saved in only downloading a portion of the firmware will be exceeded by the engineerng time and tech support time. It may even be independent of product volume. For large volume, the engineering time gets amortized over many units, but the tech support is proportional to the number of units. Mark Borgerson
From: Frank Buss on 14 Apr 2010 10:34 Mahesh_Shah wrote: > For example, firmware will have basic 3 modules (M1, M2 and M3). Tomorrow, > i have to add module M4. So i can add code for that module M4 without > disturbing M1, M2 and M3 module. M4 code can be added using ethernet or USB > or simple RS232 or using wireless communication(RF). I dont want to > download entire new firmware having all 4 modules. Why not? I guess the size of the firmware is not a problem, so compile support for all modules in the firmware and if you develop a new module, add this to the main program, which should be able to detect all modules at runtime. Then the customer needs only one firmware and can always update to the latest version and all his modules are working. If the size is a problem, the solution depens a lot on your system. Are you using an operating system? With Linux it is easy to use a plugin concept with shared libraries, but as Vladimir wrote, the interface, versions and integration in the rest of your program can be difficult. -- Frank Buss, fb(a)frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
From: d_s_klein on 14 Apr 2010 14:26 On Apr 13, 3:42 pm, "Mahesh_Shah" <maheshkumar.shah(a)n_o_s_p_a_m.gmail.com> wrote: > Can any one guide me how to develop plug-able firmware architecture for > embedded system. I am developing a product using ARM Cortex-M3 core. I am > looking for an architecture where there will be a bare minimum functionality > involved in product. However additional functionality or modules are > plug-able which can be added or removed from product any time based on > requirements. > > For example, firmware will have basic 3 modules (M1, M2 and M3). Tomorrow, > i have to add module M4. So i can add code for that module M4 without > disturbing M1, M2 and M3 module. M4 code can be added using Ethernet or USB > or simple RS232 or using wireless communication(RF). I don't want to > download entire new firmware having all 4 modules. Similarly if tomorrow, i > have to add another two modules M5 and M6 and now i want to remove M4, then > it should support it. > > This makes sure that device will not bring back to factory from installed > location to load new firmware or modules. > > Any thought. > > Thanks in advance. > > --------------------------------------- > Posted throughhttp://www.EmbeddedRelated.com What you're trying to invent has been around for a long time. Intel used something similar with their 80130 (OS in a chip) in the early '80s. I built something like that for an 8051 at about the same time. If you think of 'tasks' instead of 'modules' you'll be able to find more of the existing art. RK
From: Jaded Hobo on 14 Apr 2010 15:00 Mahesh_Shah wrote: > Can any one guide me how to develop pluggable fimrware architecture for > embedded system. I am developing a product using ARM Cortex-M3 core. I am > looking for an architecure where there will be a bare minimum functionality > involved in product. However additional functionalities or modules are > pluggable which can be added or removed from product any time based on > requirements. > > For example, firmware will have basic 3 modules (M1, M2 and M3). Tomorrow, > i have to add module M4. So i can add code for that module M4 without > disturbing M1, M2 and M3 module. M4 code can be added using ethernet or USB > or simple RS232 or using wireless communication(RF). I dont want to > download entire new firmware having all 4 modules. Similarly if tomorrow, i > ahve to add another two modules M5 and M6 and now i want to remove M4, then > it should support it. > > This makes sure that device will not bring back to factory from installed > location to load new firmware or modules. > > Any thought. > > Thanks in advance. > > > > --------------------------------------- > Posted through http://www.EmbeddedRelated.com Take a look at the AmigaOS. Antoon
First
|
Prev
|
Pages: 1 2 Prev: CFP Applied Computing 2010: submissions until 28 May 2010 Next: LCP vs Stellaris micro |