Norimasa Okamoto / Mbed 2 deprecated STM32_IAP_test

Dependencies:   STM32_IAP mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main_L152RE.cpp Source File

main_L152RE.cpp

00001 #if defined(TARGET_NUCLEO_L152RE)
00002 #include "mbed.h"
00003 #include "mytest.h"
00004 #include "IAP.h"
00005 
00006 DigitalOut led1(LED1);
00007 RawSerial pc(USBTX,USBRX);
00008 IAP iap;
00009 
00010 void dump(const uint8_t* addr, size_t size = 32) {
00011     for(size_t i = 0; i < size; i++) {
00012         if (i%32 == 0) { printf("%p:", addr); }
00013         printf(" %02x%s", *addr++, i%32 == 31 ? "\n" : "");
00014     }
00015 }
00016 
00017 TEST(read_ID,test1) {
00018     int r = iap.read_ID();
00019     ASSERT_TRUE(r == 0x437); 
00020 }
00021 
00022 TEST(erase,page480) {
00023     int r = iap.erase(480, 480);
00024     ASSERT_TRUE(r == CMD_SUCCESS);
00025     uint8_t* p = (uint8_t*)0x801e000;
00026     dump((uint8_t*)0x801e000);
00027     for(int i = 0; i < 256; i++, p++) {
00028         ASSERT_TRUE(*p == 0x00);
00029     }
00030 }
00031 
00032 TEST(erase,page2047) {
00033     int r = iap.erase(2047, 2047);
00034     ASSERT_TRUE(r == CMD_SUCCESS);
00035     uint8_t* p = (uint8_t*)0x0807ff00;
00036     dump((uint8_t*)0x0807ff00);
00037     for(int i = 0; i < 256; i++, p++) {
00038         ASSERT_TRUE(*p == 0x00);
00039     }
00040 }
00041 
00042 TEST(erase,page2048) {
00043     int r = iap.erase(2048, 2048);
00044     ASSERT_TRUE(r != CMD_SUCCESS);
00045 }
00046 
00047 TEST(blank_check,page480) {
00048     int r = iap.blank_check(480, 480);
00049     ASSERT_TRUE(r == CMD_SUCCESS);
00050 }
00051 
00052 TEST(blank_check,page2047) {
00053     int r = iap.blank_check(2047, 2047);
00054     ASSERT_TRUE(r == CMD_SUCCESS);
00055 }
00056 
00057 TEST(blank_check,page2048) {
00058     int r = iap.blank_check(2048, 2048);
00059     ASSERT_TRUE(r != CMD_SUCCESS);
00060 }
00061 
00062 const uint8_t src[256] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28};
00063     
00064 TEST(write,page480_0x0801e000) {
00065     ASSERT_TRUE(FLASH_PAGE_SIZE == sizeof(src));
00066     int r = iap.write((char*)src, (char*)0x0801e000, sizeof(src));
00067     ASSERT_TRUE(r == CMD_SUCCESS);
00068     ASSERT_TRUE(memcmp(src, (void*)0x0801e000, sizeof(src)) == 0);
00069 }
00070 
00071 TEST(erase,page480_481) {
00072     int r = iap.erase(480, 481);
00073     ASSERT_TRUE(r == CMD_SUCCESS);
00074     uint8_t* p = (uint8_t*)0x801e000;
00075     for(int i = 0; i < 256*2; i++, p++) {
00076         ASSERT_TRUE(*p == 0x00);
00077     }
00078 }
00079 
00080 TEST(blank_check,page480_481) {
00081     int r = iap.blank_check(480, 481);
00082     ASSERT_TRUE(r == CMD_SUCCESS);
00083 }
00084 
00085 TEST(write_eeprom,_0x08080000) {
00086     int r = iap.write_eeprom((char*)src, (char*)0x08080000, sizeof(src));
00087     ASSERT_TRUE(r == CMD_SUCCESS);
00088     ASSERT_TRUE(memcmp(src,(char*)0x08080000, sizeof(src)) == 0);
00089 }
00090 
00091 TEST(read_eeprom,_0x08080000) {
00092     int r = iap.write_eeprom((char*)src, (char*)0x08080000, sizeof(src));
00093     ASSERT_TRUE(r == CMD_SUCCESS);
00094     uint8_t temp[sizeof(src)];
00095     r = iap.read_eeprom((char*)0x08080000, (char*)temp, sizeof(src));
00096     ASSERT_TRUE(r == CMD_SUCCESS);
00097     ASSERT_TRUE(memcmp(temp, src, sizeof(src)) == 0);
00098 }
00099 
00100 TEST(write_eeprom,_0x08082000) {
00101     int r = iap.write_eeprom((char*)src, (char*)0x08082000, sizeof(src));
00102     ASSERT_TRUE(r == CMD_SUCCESS);
00103 }
00104 
00105 TEST(read_eeprom,_0x08082000) {
00106     uint8_t temp[sizeof(src)];
00107     int r = iap.read_eeprom((char*)0x08082000, (char*)temp, sizeof(src));
00108     ASSERT_TRUE(r == CMD_SUCCESS);
00109     ASSERT_TRUE(memcmp(temp, src, sizeof(src)) == 0);
00110 }
00111 
00112 TEST(read_eeprom,_0x08084000) {
00113     uint8_t temp[sizeof(src)];
00114     int r = iap.read_eeprom((char*)0x08084000, (char*)temp, sizeof(src));
00115     ASSERT_TRUE(r != CMD_SUCCESS);
00116 }
00117 
00118 TEST(eeprom,_0x08083f00) {
00119     int r = iap.write_eeprom((char*)src, (char*)0x08083f00, sizeof(src));
00120     ASSERT_TRUE(r == CMD_SUCCESS);
00121     uint8_t temp[sizeof(src)];
00122     r = iap.read_eeprom((char*)0x08083f00, (char*)temp, sizeof(temp));
00123     ASSERT_TRUE(r == CMD_SUCCESS);
00124     ASSERT_TRUE(memcmp(temp, src, sizeof(temp)) == 0);
00125 }
00126 
00127 TEST(write_eeprom,_0x08084000) {
00128     int r = iap.write_eeprom((char*)src, (char*)0x08084000, sizeof(src));
00129     ASSERT_TRUE(r != CMD_SUCCESS);
00130 }
00131         
00132 int main() {
00133     pc.baud(115200);
00134     printf("%s", __FILE__);
00135 
00136     RUN_ALL_TESTS();
00137     for(;;) {
00138         led1 = !led1;
00139         wait_ms(200);
00140     }
00141 }
00142 #endif // TARGET_NUCLEO_L152RE