From 6972543e2456430e0834b2bacbb757d5db31a0cc Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Sat, 5 Sep 2015 11:45:57 -0700 Subject: [PATCH] Added CRC32 checksumming to dumping blocks --- .gitignore | 2 + Code/Descriptors.o | Bin 11484 -> 11492 bytes Code/EECommander | 22 +++++++--- Code/EETool.c | 33 +++++++++++++- .../xcshareddata/EETool.xccheckout | 41 ++++++++++++++++++ 5 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 Code/EETool.xcodeproj/project.xcworkspace/xcshareddata/EETool.xccheckout diff --git a/.gitignore b/.gitignore index 802f897..a544753 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,5 @@ Code/LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o Code/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.d Code/LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o Code/test.rom +EETool_pcb.jpg +EETool_sch.jpg diff --git a/Code/Descriptors.o b/Code/Descriptors.o index 5de7f06c3a21ff36b66134f64ee37b233548e50e..b99895fffddaa2ad4e3c1f18633adf6d3ecc8f7b 100644 GIT binary patch delta 1858 zcmYk-drZw?7zgm@RY$}TlB3I6QpfL*Ib)%%j*VQFTSk_&)ljYxPK4piC6~EnughFw z%#68AJ1j$65@T6o8k%g(Z7yLmmo3cq)z{V^o%i#5-{*PX=Y8MbZ#8AV$}a1zK32q) z+5@-jS5<;%ny+A)&$Be&GpcCz@IY6o;J&jsD5^9>q??GS?jrBoiA2zEl+KOo<4*|{ z8N{wL!6L)ysDW48BTFMocwbjv{W;+k!;y(G|gdktRNP z5%ht!qq-KlGy1!t5OaV-;aEBp?LayOvEKjvSYQJE3-jdA8*xGl=p=ZRu^*G}M)Fn; zOvdgH(1($HijKg}F4GfnqqX!yTtNe!fZTVqDfB135Dvkg*+37(^rU|y*YDzk4^=18 zUR0Mx-$D^n={zhvk2VXG(035OnLdkS-$&2I0w-y6LIFAyYt^*cFXo6IaNs(UU(g%S zey7c1HYAxH%tqUTu0|VA??DlR=~GyEB)uNOMFC!A-9P>h?!r~^HA<*x>F~S zZ}eQmw9utECKb$Y=LjYZ!L6FJu`pn#6OkNF=c0|Ii&0Q4eH2@D(O=+1x(*8sqDNri zVe}-#c?1<8FuR5l+I17ud{`inhNo-nZ45A&LEU`kC7i=|UCLIhu^oSsd-I O?fo3;PQcZ#GUzXB=;bp2 delta 1886 zcmYk)e`wWJ7{~GF>)kK6u9{kIy031n+nua+Gvhxc9uyInQ&>bI$or zHjFjwE(#`li=T_TrumC=*WPt!s=9hpYio1*Q2bbs?wa2)H$9#|83YyX#M1WQYFD+a z9rrD(3wm5;VO{W^+syx{J5*Q})VkrqlHi1!E=&eryD&@!M_hH7obz|SYYDFihFmv8 z9qEDarP$KWY_p5aELdnZF~{r@`ATzJi!X~Ra?Mt0=wOD~jdIIev)kmCv&`z{GqjCz zeU8}{c@go=^2SWFHu(;=d`d13%$}8hAZE8&bfK;-6tPzmt103Y`AZTG$~O^nSZ<`C zx8-jbe@EVl-<4~K`9R)F5g*IX#LR}|H!>o#F?A{l`bEy7x*0i>@dXs(FEE8y$SY~D zlJ6n5N{+F??eaA1+$(o*LyySic$;^`qW&b$YodnJ@00hC{F*$Ell95#dC@_6h$k48 zLvl~czR*AAhj2DOe}FhKm&)hJjS}iKQ+0)0Np9Ffl0U(Hw2S4Vv?cNj6mgAwfQ@gK zx3hk|?AO^U7t`*D@&10%T#|QbVi@n2{UQhCzc|60@+TD9D=%QYUoPT?2IO9f_(=Yh z_EWiyXE`Y^k9gOw)X5=vOg_S*6Y>L`;H;dHXErT&5i=uqQc%F#`onayX0}|!xPNm$ zemS{|kKfPHyG&{$uv*pJ%*I zK1pt)%yUH6tWJW3w#$!F^-lRG{ObP+_SUTUWAX?ad?sJdVa8|0pPdzdULGJOPEN3p z_kSIP7dmEpIAxifL-2L-7$44h`FFfYzMq92lzSO}OdcV(Q$EUb?2=#PR`$!cve)5A zofMsZd5YxY^5Z0bA#cE=@YnZbsh0c$WWO$a5XZ{9xR5 zCrc8cKcgS!#cFw_4c_xOAKt9-C*60+B?TiSwrKWyX4^Dd>Efkpf>W-hG{yh6(p2IU zGe0ZRfA@KO;(q;U9LlTR=cP*u2HAbBAK@dtfi-J2yWIW5Y#ybzYPN{kCp0^iE??On F`xkHm*~kC@ diff --git a/Code/EECommander b/Code/EECommander index 51e32eb..9b30d8d 100755 --- a/Code/EECommander +++ b/Code/EECommander @@ -1,6 +1,6 @@ #!/usr/bin/python -import sys, getopt, serial, binascii +import sys, getopt, serial, binascii, struct class Mode: @@ -20,6 +20,7 @@ class Command: PONG = 'PONG' BLOCKSIZE = 512 +CRCSIZE = 4 romfile = '' serialport = '' @@ -149,32 +150,41 @@ def dumpROM(): while 1: numBytes = connection.inWaiting() - if numBytes>=BLOCKSIZE: + if numBytes>=BLOCKSIZE + CRCSIZE: break - if (numBytes!=BLOCKSIZE): + if (numBytes!=BLOCKSIZE + CRCSIZE): print 'ERROR: Block',blockNum,'failed to download. Aborting.' sys.exit(2) response = connection.read(numBytes) + crc = struct.unpack('>=8; + } _delay_ms(10); PULSEC(LEDPIN); @@ -350,6 +359,28 @@ void WriteBlock() } +uint32_t CRC32(uint8_t *buf, size_t size) +{ + // This could be made faster with a table lookup, but it's plenty fast enough for our purposes + int i, j; + uint32_t byte, crc, mask; + + i = 0; + crc = 0xFFFFFFFF; + while (size--) + { + byte = buf[i]; + crc = crc ^ byte; + for (j = 7; j >= 0; j--) + { + mask = -(crc & 1); + crc = (crc >> 1) ^ (0xEDB88320 & mask); + } + i = i + 1; + } + return ~crc; +} + // USB Event Handlers void EVENT_USB_Device_Connect(void) { @@ -372,5 +403,3 @@ void EVENT_USB_Device_ControlRequest(void) { CDC_Device_ProcessControlRequest(&EETool_CDC_Interface); } - - diff --git a/Code/EETool.xcodeproj/project.xcworkspace/xcshareddata/EETool.xccheckout b/Code/EETool.xcodeproj/project.xcworkspace/xcshareddata/EETool.xccheckout new file mode 100644 index 0000000..a319381 --- /dev/null +++ b/Code/EETool.xcodeproj/project.xcworkspace/xcshareddata/EETool.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 95794E8C-031F-41B1-9037-218BC0C75061 + IDESourceControlProjectName + project + IDESourceControlProjectOriginsDictionary + + 922DEEC8B722BFB3865485680EBE965F5270D110 + https://github.com/blondie7575/EETool.git + + IDESourceControlProjectPath + Code/EETool.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + 922DEEC8B722BFB3865485680EBE965F5270D110 + ../../.. + + IDESourceControlProjectURL + https://github.com/blondie7575/EETool.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + 922DEEC8B722BFB3865485680EBE965F5270D110 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 922DEEC8B722BFB3865485680EBE965F5270D110 + IDESourceControlWCCName + EETool + + + +