On 12/06/2013 12:56 PM, Thierry Reding wrote: > On Fri, Dec 06, 2013 at 10:35:33AM -0700, Stephen Warren wrote: > [...] >> diff --git a/tegra-uboot-flasher b/tegra-uboot-flasher > [...] >> @@ -125,6 +129,19 @@ def func_flash(): >> if args.debug: >> print 'flash_img_size %d 0x%x' % (flash_img_size, flash_img_size) >> >> + imgf = file(flash_img, 'rb') >> + imgd = imgf.read() >> + imgf.close() >> + flash_img_crc32 = binascii.crc32(imgd) >> + if args.debug: >> + print 'flash_img_crc32 %x' % flash_img_crc32 >> + flash_img_crc32_bs = ( >> + ((flash_img_crc32 & 0xff) << 24) | >> + ((flash_img_crc32 & 0xff00) << 8) | >> + ((flash_img_crc32 & 0xff0000) >> 8) | >> + ((flash_img_crc32 & 0xff000000) >> 24) >> + ) > > I would've thought that Python actually supported byteswapping with some > function, but it seems not (or at least not trivially). One could do > something like this: > > a = array.array('I', [crc]) > a.byteswap() > crc = a[0] > > But with the array module you apparently can't force 32-bit values. 'I' > will be at least 2, but 4 on 32-bit and 64-bit systems, 'L' will be 64 > bits on 64-bit systems and 32 bits on 32-bit systems it seems. You could > check a.itemsize to determine the right type code. I suppose we won't be > running on anything but 32- or 64-bit systems for a while, but it still > said there's no support for sized types there. > > It could possibly be done with the struct module as well, but that would > likely end up much more verbose too, so: Thanks. I did wonder about using the struct module, but I also figured that since I'd already written the conversion, and struct would be more complex, I wouldn't bother. I'll push out the whole 4-patch series in a second. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html