📄 fwflash.c
字号:
#include "fwflash.h"/******************************************************** this routine performs a firmware update.* data structure is as following:** artalb[0]: sectors per cluster* artalb[2]: # of clusters in file* artalb[2-5]: (ulong) start of data (lba encoding)* artalb[6-x]: (uint) cluster containing firmware.bin********************************************************/void flash_firmware(void){ register unsigned int i; register unsigned char sec; unsigned long flashed, ccl; unsigned int baddr, pcl, cl; cl = artalb[0] | artalb[1] << 8; sec = 0; pcl = 0; for (flashed = 0; flashed < 0x3b00;) { ccl = 0; for (i = 0; i < secpercluster;i++) { ccl += cl; } while (CFReadSector((unsigned long) data + (unsigned long) ccl + sec)); for (i=0; i<4; i++) { boot_page_erase((unsigned long) flashed); for (baddr = 0; baddr < 128; baddr+=2) { boot_page_fill(baddr, secbuf[(i*128)+baddr] | secbuf[(i*128)+baddr+1] << 8); } boot_page_write((unsigned long) flashed); while (boot_rww_busy()) { boot_rww_enable(); } flashed += 128; } sec++; if (sec == secpercluster) { sec = 0; pcl += 2; cl = artalb[pcl] | (unsigned int) artalb[pcl+1] << 8; } } wdt_enable(1); // re-enable watchdog while (1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -