[an error occurred while processing this directive]
|
1. мулька:
#include void main( int argc, char* argv[] ) if( argc < 2 ) return; hFile = CreateFile( argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL ); 2. батник: del %1.bin 3. внутри асма: clr ZH continue_init: а это в самом конце может проще надо жить, а?
E-mail:
info@telesys.ru
#include
{
HANDLE hFile;
LPBYTE Buf;
DWORD s, Size;
BYTE Sum;
if( hFile != INVALID_HANDLE_VALUE ) {
s = GetFileSize( hFile, NULL );
Buf = LocalAlloc( LMEM_FIXED, s );
if( Buf != NULL ) {
if( ReadFile( hFile, Buf, s, &Size, NULL ) ) {
Sum = 0;
for( s = 0; s < Size; s++ ) Sum += Buf[ s ];
printf( "%02X\n", Sum );
}
LocalFree( Buf );
}
CloseHandle( hFile );
}
}
hexbin %1.hex %1.bin I
checksum %1.bin
clr ZL
clr TEMP
flash_checksum:
lpm
adiw ZL, 1
add TEMP, r0
cpi ZH, high( CodeEnd < < 1 )
brne flash_checksum
cpi ZL, low( CodeEnd < < 1)
brne flash_checksum
lpm
cp TEMP, r0
пока не отлажено окончательно, след. строка раскомментарена
; rjmp continue_init
breq continue_init
FLASH_CHECKSUM_ERROR:
можно помигать светодиодом
rjmp FLASH_CHECKSUM_ERROR
CodeEnd:
.DB 0x9B ; контрольная сумма
Ответы