Hello,

I have a rough design of the reboot log ready along with the code. It consists 
of logging the timestamp, reboot count, image version and reason.

Possible reasons:
Soft reboot: Reboot issued by the developer/user
Hard reboot: Reboot caused by loss in battery power, pulling off the plug, etc. 
Basically any reboot caused by an unknown reason.
Gen core: Reboot caused by core generated either by an assert or a core 
generate command manually by a developer/user(Future use)

Storage mechanism:

Current: Flash using fcb backend
Advantages: 
- Has an interface already, so easy to implement

Disadvantages: 
- The entire sector of the flash needs to be erased when it gets full which 
would clear the reboot log. 
- Different MCUs have different sector sizes which might/might not be available 
for use. Eg: Depending on the availability reserving 64k in the flash     map 
for the system log itself sounds like a waste of flash space. 
- We cannot break the flash space into smaller chunks to be used by the fcb.
- The flash sectors that would be used would have to be specified for each 
BSP(Hard coded).

Possible solutions:

1. Flash using config backend
Advantages: 
- Has an interface as well, somewhat easy.
- Entire sector would not be needed for reserving for reboot/system log.

Disadvantages or work needed:
- New functions supporting reading old config entries(15-20) and keeping them 
around.
- A bit unusual to think about (hacky).

2. Fcb could somehow be more intelligent about underlying sectors. 
Advantages:
- Not too hacky and could be used by anyone who uses fcb.

Disadvantages:
- The way fcb is currently implemented, it takes care of very specific 
functions at a sector level and hence supports read/write/erase at a sector 
level. If we add this, it would do something more than just these basic 
functions.

I am open for both ideas. Any more ideas are welcome.

Regards,
Vipul Rahane

Reply via email to