Norimasa Okamoto / Mbed 2 deprecated STM32_IAP_test

Dependencies:   STM32_IAP mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main_L031K6.cpp Source File

main_L031K6.cpp

00001 #if defined(TARGET_NUCLEO_L031K6)
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 == 0x425); 
00020 }
00021 
00022 TEST(erase,page224) {
00023     int r = iap.erase(224, 224);
00024     ASSERT_TRUE(r == CMD_SUCCESS);
00025     uint8_t* p = (uint8_t*)0x08007000;
00026     dump((uint8_t*)0x08007000);
00027     for(int i = 0; i < 128; i++, p++) {
00028         ASSERT_TRUE(*p == 0x00);
00029     }
00030 }
00031 
00032 TEST(erase,page256) {
00033     int r = iap.erase(256, 256);
00034     ASSERT_TRUE(r != CMD_SUCCESS);
00035 }
00036 
00037 TEST(blank_check,page224) {
00038     int r = iap.blank_check(224, 224);
00039     ASSERT_TRUE(r == CMD_SUCCESS);
00040 }
00041 
00042 TEST(blank_check,page256) {
00043     int r = iap.blank_check(256, 256);
00044     ASSERT_TRUE(r != CMD_SUCCESS);
00045 }
00046 
00047 const uint8_t src[128] = {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};
00048     
00049 TEST(write,page224_0x08007000) {
00050     int r = iap.write((char*)src, (char*)0x08007000, sizeof(src));
00051     ASSERT_TRUE(r == CMD_SUCCESS);
00052     if (r == CMD_SUCCESS) {
00053         ASSERT_TRUE(memcmp(src, (void*)0x08007000, sizeof(src)) == 0);
00054     }
00055 }
00056 
00057 TEST(write,page255_0x08007f80) {
00058     int r = iap.erase(255, 255);
00059     ASSERT_TRUE(r == CMD_SUCCESS);    
00060     r = iap.blank_check(255, 255);
00061     ASSERT_TRUE(r == CMD_SUCCESS);
00062     r = iap.write((char*)src, (char*)0x08007f80, sizeof(src));
00063     ASSERT_TRUE(r == CMD_SUCCESS);
00064     if (r == CMD_SUCCESS) {
00065         ASSERT_TRUE(memcmp(src, (void*)0x08007f80, sizeof(src)) == 0);
00066     }
00067 }
00068 
00069 TEST(write,page256_0x08008000) {
00070     int r = iap.prepare(256, 256);
00071     ASSERT_TRUE(r != CMD_SUCCESS); 
00072     r = iap.erase(256, 256);
00073     ASSERT_TRUE(r != CMD_SUCCESS);    
00074     r = iap.write((char*)src, (char*)0x08008000, sizeof(src));
00075     ASSERT_TRUE(r != CMD_SUCCESS);
00076 }
00077 
00078 TEST(erase,page224_225) {
00079     int r = iap.erase(224, 225);
00080     ASSERT_TRUE(r == CMD_SUCCESS);
00081     uint8_t* p = (uint8_t*)0x08007000;
00082     for(int i = 0; i < 128*2; i++, p++) {
00083         ASSERT_TRUE(*p == 0x00);
00084     }
00085 }
00086 
00087 TEST(blank_check,page224_225) {
00088     int r = iap.blank_check(224, 225);
00089     ASSERT_TRUE(r == CMD_SUCCESS);
00090 }
00091 
00092 TEST(write_eeprom,_0x08080000) {
00093     int r = iap.write_eeprom((char*)src, (char*)0x08080000, sizeof(src));
00094     ASSERT_TRUE(r == CMD_SUCCESS);
00095     if (r == CMD_SUCCESS) { 
00096         ASSERT_TRUE(memcmp(src,(char*)0x08080000, sizeof(src)) == 0);
00097     }
00098 }
00099 
00100 TEST(read_eeprom,_0x08080000) {
00101     int r = iap.write_eeprom((char*)src, (char*)0x08080000, sizeof(src));
00102     ASSERT_TRUE(r == CMD_SUCCESS);
00103     uint8_t temp[sizeof(src)];
00104     r = iap.read_eeprom((char*)0x08080000, (char*)temp, sizeof(src));
00105     ASSERT_TRUE(r == CMD_SUCCESS);
00106     if (r == CMD_SUCCESS) {
00107         ASSERT_TRUE(memcmp(temp, src, sizeof(src)) == 0);
00108     }
00109 }
00110 
00111 TEST(eeprom,_0x080803f0) { // 0x0808003ff-0x080803ff
00112     const size_t size = 16;
00113     int r = iap.write_eeprom((char*)src, (char*)0x080803f0, size);
00114     ASSERT_TRUE(r == CMD_SUCCESS);
00115     uint8_t temp[size];
00116     r = iap.read_eeprom((char*)0x080803f0, (char*)temp, sizeof(temp));
00117     ASSERT_TRUE(r == CMD_SUCCESS);
00118     if (r == CMD_SUCCESS) {
00119         ASSERT_TRUE(memcmp(temp, src, sizeof(temp)) == 0);
00120     }
00121 }
00122 
00123 TEST(eeprom,_0x08080400) { // 0x080800400-0x0808040f
00124     const size_t size = 16;
00125     int r = iap.write_eeprom((char*)src, (char*)0x08080400, size);
00126     ASSERT_TRUE(r != CMD_SUCCESS);
00127     uint8_t temp[size];
00128     r = iap.read_eeprom((char*)0x08080400, (char*)temp, sizeof(temp));
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_L031K6