Implement version information storage and retrieval for the bootrom and the osimage.

Use perl to create the version information (thereby re-creating the perl dependency and adding an svn dependency) but fall back in case of missing perl or svn
This commit is contained in:
henryk@ploetzli.ch 2009-08-28 06:40:44 +00:00
commit 8a6aec16d8
13 changed files with 171 additions and 13 deletions

View file

@ -236,10 +236,28 @@ void ReadMem(int addr)
DbpIntegers(0, data[i], data[i+1]);
}
/* osimage version information is linked in */
extern struct version_information version_information;
void SendVersion(void)
{
char temp[48]; /* Limited data payload in USB packets */
DbpString("Prox/RFID mark3 RFID instrument");
/* Try to find the bootrom version information. For the time being, expect
* to find a pointer at address 0x1001fc, perform slight sanity checks on
* the pointer, then use it.
*/
void *bootrom_version = *(void**)0x1001fc;
if( bootrom_version < (void*)0x100000 || bootrom_version > (void*)0x101000 ) {
DbpString("bootrom version information appears invalid");
} else {
FormatVersionInformation(temp, sizeof(temp), "bootrom: ", bootrom_version);
DbpString(temp);
}
FormatVersionInformation(temp, sizeof(temp), "os: ", &version_information);
DbpString(temp);
FpgaGatherVersion(temp, sizeof(temp));
DbpString(temp);
}