In general, the block size is bigger than the size of the temporary buffer.
Therefore, the boot kernel may need to divide the processing of a single
block into multiple steps. The callback routine may also need to be
invoked multiple times—every time the temporary buffer is filled up and
once for the remaining bytes. The boot kernel passes the
ter, so that the callback routines knows whether it is called the first time,
the last time or neither. The
structure is used to store the intermediate results between function calls.
Listing 24-7. XOR Checksum
s32 xor_callback(
ADI_BOOT_DATA* pBS,
ADI_BOOT_BUFFER* pCS,
s32 dFlags)
{
s32 i;
if ((pCS!= NULL) && (pBS->pHeader!= NULL)) {
if (dFlags & CBFLAG_FIRST) {
pBS->dUserLong = 0;
}
for (i=0; i<pCS->dByteCount/sizeof(s32); i++) {
pBS->dUserLong^= ((s32 *)pCS->pSource)[i];
}
if (dFlags & CBFLAG_FINAL) {
if (pBS->dUserLong!= pBS->pHeader->dArgument) {
}
}
}
return 0;
}
ADSP-BF50x Blackfin Processor Hardware Reference
dUserLong
idle ();
System Reset and Booting
dFlags
variable in the
ADI_BOOT_DATA
parame-
24-87
Need help?
Do you have a question about the ADSP-BF506F and is the answer not in the manual?
Questions and answers