Norimasa Okamoto / Mbed 2 deprecated STM32_IAP_test

Dependencies:   STM32_IAP mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main_F411RE.cpp Source File

main_F411RE.cpp

00001 #if defined(TARGET_NUCLEO_F411RE)
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) {
00011     for(size_t i = 0; i < size; i++) {
00012         if (i%32 == 0) {
00013             printf("%p:", addr);
00014         }
00015         printf(" %02x", *addr);
00016         addr++;
00017         if (i%32 == 31) {
00018             printf("\n");
00019         }
00020     }
00021 }
00022 
00023 TEST(read_ID,_0x431) {
00024     int r = iap.read_ID();
00025     ASSERT_TRUE(r == 0x431); 
00026 }
00027 
00028 TEST(erase,sector2) {
00029     int r = iap.erase(2, 2);
00030     ASSERT_TRUE(r == CMD_SUCCESS);
00031 }
00032 
00033 TEST(blank_check,sector2) {
00034     int r = iap.blank_check(2, 2);
00035     //dump((const uint8_t*)0x8008000, 64);
00036     ASSERT_TRUE(r == CMD_SUCCESS);
00037 }
00038 
00039 TEST(blank_check,sector3_sector2) {
00040     int r = iap.blank_check(3, 2);
00041     ASSERT_TRUE(r != CMD_SUCCESS);
00042 }
00043 
00044 TEST(blank_check,sector8) {
00045     int r = iap.blank_check(8, 8);
00046     ASSERT_TRUE(r != CMD_SUCCESS);
00047 }
00048 
00049 uint8_t src[256];
00050     
00051 TEST(write,sector2_0x08008000) {
00052     for(int i = 0; i < sizeof(src); i++) {
00053         src[i] = i&0xff;
00054     }
00055     int r = iap.write((char*)src, (char*)0x08008000, sizeof(src));
00056     ASSERT_TRUE(r == CMD_SUCCESS);
00057     ASSERT_TRUE(memcmp(src, (void*)0x08008000, sizeof(src)) == 0);
00058 }
00059 
00060 TEST(erase,sector2_sector3) {
00061     int r = iap.erase(2, 3);
00062     ASSERT_TRUE(r == CMD_SUCCESS);
00063 }
00064 
00065 TEST(erase,sector4) {
00066     int r = iap.erase(4, 4);
00067     ASSERT_TRUE(r == CMD_SUCCESS);
00068 }
00069 
00070 TEST(erase,sector5) {
00071     int r = iap.erase(5, 5);
00072     ASSERT_TRUE(r == CMD_SUCCESS);
00073 }
00074 
00075 TEST(erase,sector6) {
00076     int r = iap.erase(6, 6);
00077     ASSERT_TRUE(r == CMD_SUCCESS);
00078 }
00079 
00080 TEST(erase,sector7) {
00081     int r = iap.erase(7, 7);
00082     ASSERT_TRUE(r == CMD_SUCCESS);
00083 }
00084 
00085 TEST(erase,sector8) {
00086     int r = iap.erase(8, 8);
00087     ASSERT_TRUE(r != CMD_SUCCESS);
00088 }
00089 
00090 TEST(blank_check,sector2_sector7) {
00091     int r = iap.blank_check(2, 7);
00092     ASSERT_TRUE(r == CMD_SUCCESS);
00093 }
00094 
00095 TEST(blank_check,sector8_sector9) {
00096     int r = iap.blank_check(8, 9);
00097     ASSERT_TRUE(r != CMD_SUCCESS);
00098 }
00099 
00100 TEST(write,sector2_0x0800bf00) {
00101     const int dst = 0x0800bf00;
00102     for(int i = 0; i < sizeof(src); i++) {
00103         src[i] = i&0xff;
00104     }
00105     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00106     ASSERT_TRUE(r == CMD_SUCCESS);
00107     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00108 }
00109 
00110 TEST(write,sector3_0x0800c000) {
00111     const int dst = 0x0800c000;
00112     for(int i = 0; i < sizeof(src); i++) {
00113         src[i] = i&0xff;
00114     }
00115     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00116     ASSERT_TRUE(r == CMD_SUCCESS);
00117     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00118 }
00119 
00120 TEST(write,sector3_0x0800ff00) {
00121     const int dst = 0x0800ff00;
00122     for(int i = 0; i < sizeof(src); i++) {
00123         src[i] = i&0xff;
00124     }
00125     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00126     ASSERT_TRUE(r == CMD_SUCCESS);
00127     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00128 }
00129 
00130 TEST(write,sector4_0x08010000) {
00131     const int dst = 0x08010000;
00132     for(int i = 0; i < sizeof(src); i++) {
00133         src[i] = i&0xff;
00134     }
00135     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00136     ASSERT_TRUE(r == CMD_SUCCESS);
00137     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00138 }
00139 
00140 TEST(write,sector4_0x0801ff00) {
00141     const int dst = 0x0801ff00;
00142     for(int i = 0; i < sizeof(src); i++) {
00143         src[i] = i&0xff;
00144     }
00145     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00146     ASSERT_TRUE(r == CMD_SUCCESS);
00147     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00148 }
00149 
00150 TEST(write,sector5_0x08020000) {
00151     const int dst = 0x08020000;
00152     for(int i = 0; i < sizeof(src); i++) {
00153         src[i] = i&0xff;
00154     }
00155     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00156     ASSERT_TRUE(r == CMD_SUCCESS);
00157     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00158 }
00159 
00160 TEST(write,sector5_0x0803ff00) {
00161     const int dst = 0x0803ff00;
00162     for(int i = 0; i < sizeof(src); i++) {
00163         src[i] = i&0xff;
00164     }
00165     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00166     ASSERT_TRUE(r == CMD_SUCCESS);
00167     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00168 }
00169 
00170 TEST(write,sector6_0x08040000) {
00171     const int dst = 0x08040000;
00172     for(int i = 0; i < sizeof(src); i++) {
00173         src[i] = i&0xff;
00174     }
00175     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00176     ASSERT_TRUE(r == CMD_SUCCESS);
00177     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00178 }
00179 
00180 TEST(write,sector6_0x0805ff00) {
00181     const int dst = 0x0805ff00;
00182     for(int i = 0; i < sizeof(src); i++) {
00183         src[i] = i&0xff;
00184     }
00185     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00186     ASSERT_TRUE(r == CMD_SUCCESS);
00187     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00188 }
00189 
00190 TEST(write,sector7_0x08060000) {
00191     const int dst = 0x08060000;
00192     for(int i = 0; i < sizeof(src); i++) {
00193         src[i] = i&0xff;
00194     }
00195     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00196     ASSERT_TRUE(r == CMD_SUCCESS);
00197     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00198 }
00199 
00200 TEST(write,sector7_0x0807ff00) {
00201     const int dst = 0x0807ff00;
00202     for(int i = 0; i < sizeof(src); i++) {
00203         src[i] = i&0xff;
00204     }
00205     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00206     ASSERT_TRUE(r == CMD_SUCCESS);
00207     ASSERT_TRUE(memcmp(src, (void*)dst, sizeof(src)) == 0);
00208 }
00209 
00210 TEST(write,sector8_0x08080000) {
00211     const int dst = 0x08080000;
00212     int r = iap.write((char*)src, (char*)dst, sizeof(src));
00213     ASSERT_TRUE(r != CMD_SUCCESS);
00214 }
00215 
00216 int main() {
00217     pc.baud(115200);
00218     printf("%s\n", __FILE__);
00219 
00220     RUN_ALL_TESTS();
00221     for(;;) {
00222         led1 = !led1;
00223         wait_ms(200);
00224     }
00225 }
00226 #endif // TARGET_NUCLEO_F411RE