diff --git a/src/fw_downloader.cpp b/src/fw_downloader.cpp
index 872b9f1548555fbbe9887cdff9da22b33e871e1b..f10dc9c3395df656058cd7c9299db729bbf18f37 100755
--- a/src/fw_downloader.cpp
+++ b/src/fw_downloader.cpp
@@ -46,7 +46,7 @@ void show_help(char *name) {
 
 int main(int argc,char *argv[])
 {
-  unsigned int baudrate=57600,left,addr,start_addr=0x00000000,len,base,i;
+  unsigned int baudrate=57600,left,addr,start_addr=0x00000000,len,base;
   size_t data_len;
   unsigned short int erase_pages=0x0000,device_id;
   unsigned char bootloader_ver,buffer[256];
@@ -258,7 +258,7 @@ int main(int argc,char *argv[])
             }
             addr = base;
             std::cout << '\xd';
-            while(offset < data_len) 
+            while(((unsigned int)offset) < data_len) 
             {
               left = data_len-offset;
 	      len = sizeof(buffer) > left ? left : sizeof(buffer);
diff --git a/src/stm32.cpp b/src/stm32.cpp
index 4e05daba142e51c6ef1d15c160d6e7051fe6c34a..90a8252cdf1f0a76593493ad9be78de23b93dce1 100755
--- a/src/stm32.cpp
+++ b/src/stm32.cpp
@@ -621,7 +621,8 @@ bool stm32_get_bootloader_ver(unsigned char *bl_ver)
 bool stm32_get_chip_id(unsigned short int *pid)
 {
   unsigned char cmd[2],answer[5];
-  int written,num,read=0,i;
+  int written,num,read=0;
+  unsigned int i;
 
   cmd[0]=commands.gid;
   cmd[1]=commands.gid ^ 0xFF;
@@ -696,8 +697,8 @@ bool stm32_get_device_info(std::string &device_name,const stm32_dev **info)
 
 bool stm32_read_memory(unsigned int address,unsigned int length,unsigned char *data)
 {
-  unsigned char cmd[5],answer,*mem;
-  unsigned int i,len,written,num,read=0;
+  unsigned char cmd[5],answer;
+  unsigned int written,num,read=0;
   unsigned char cs=0;
 
   if((address%4)!=0)
@@ -975,7 +976,6 @@ bool stm32_write_memory(unsigned int address, unsigned int length, unsigned char
 bool stm32_erase_memory(unsigned short int num_pages)
 {
   unsigned char cmd[3],answer=STM32_NACK,*data;
-  unsigned short int *pages;
   int written,num,i;
 
   // send the erase command
diff --git a/src/stm32.h b/src/stm32.h
index 618bfd8adf9aa6b5da801df24947b541c7a45085..0f9573d0d060bf325420913be16c80194192e553 100755
--- a/src/stm32.h
+++ b/src/stm32.h
@@ -9,8 +9,8 @@
 #define STM32_CMD_INIT  0x7F
 #define STM32_CMD_GET   0x00    /* get the version and command supported */
 
-#define FLASH_START      0x08000000
-#define EEPROM_START     0x08080000
+#define FLASH_START      (unsigned int)0x08000000
+#define EEPROM_START     (unsigned int)0x08080000
 
 typedef struct {
   uint8_t get;