скрипт-то тут нафиг ненужен - в makefile вставляем генератор CRC после objcopy :
%.bin: %.elf $(OBJCOPY) -j .data -j .text -j .board -O $(FORMAT) $< $@ @gencrc $@
его задача тупо дописать CRC в конец бинарной паршивки. В проге пишем что-то типа :
.... u32 plen = (u32)((&_etext + (&_edata - &__data_start)) - (unsigned long) AT91C_IFLASH); u16 *crc = (u16 *)((unsigned long) AT91C_IFLASH + plen); printf("Bootloader size - %d bytes, crc - 0x%X [ %s ]\r\n", plen, *crc, (compute_csum((unsigned char *) AT91C_IFLASH, plen) == *crc) ? "valid" : "*** invalid ***"); ....
это кусман от арм, но принцип тот же и для AVR. compute_csum - это та-же f() только внутри паршивки
|