summaryrefslogtreecommitdiffhomepage
path: root/digital/io-hub/src/apbirthday/hardware.stm32.cc
diff options
context:
space:
mode:
authorNicolas Schodet2013-05-01 12:51:10 +0200
committerNicolas Schodet2013-05-01 12:51:46 +0200
commita90882ab6912fc85436b9a5b5ae51d3b2007ed3e (patch)
treef539044c543b3273359681e511bb8cb1bca68568 /digital/io-hub/src/apbirthday/hardware.stm32.cc
parent13aa76d23158b33a375f87479ffe6d0f577e5d2c (diff)
digital/io-hub/src/apbirthday: compute code CRC
Diffstat (limited to 'digital/io-hub/src/apbirthday/hardware.stm32.cc')
-rw-r--r--digital/io-hub/src/apbirthday/hardware.stm32.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/digital/io-hub/src/apbirthday/hardware.stm32.cc b/digital/io-hub/src/apbirthday/hardware.stm32.cc
index e60ebf78..9c7bb089 100644
--- a/digital/io-hub/src/apbirthday/hardware.stm32.cc
+++ b/digital/io-hub/src/apbirthday/hardware.stm32.cc
@@ -27,6 +27,7 @@
#include <libopencm3/stm32/f4/timer.h>
#include <libopencm3/cm3/scb.h>
#include "ucoolib/hal/gpio/gpio.hh"
+#include "ucoolib/utils/crc.hh"
#include "zb_avrisp.stm32.hh"
@@ -173,3 +174,14 @@ Hardware::bootloader ()
(*(void (**) ()) (bootloader_address + 4)) ();
}
+extern unsigned _data_loadaddr, _data, _edata;
+
+uint32_t
+Hardware::crc ()
+{
+ int binsize = ((int) &_data_loadaddr & 0x1fffff)
+ + (int) &_edata - (int) &_data;
+ const uint8_t *binaddr = (const uint8_t *) 0x08000000;
+ return ucoo::crc32_compute (binaddr, binsize);
+}
+