Исправлено чтение результата проверки, выход по первому несовпадению

This commit is contained in:
sh-sergey 2024-11-02 11:43:43 +03:00
parent b7bdd5fc7d
commit e66c5b0f03
3 changed files with 89 additions and 119 deletions

View File

@ -291,31 +291,27 @@ def write_memory(pages: Dict[int, List[int]], openocd: OpenOcdTclRpc) -> int:
openocd.halt() openocd.halt()
openocd.write_memory(0x02003800, 32, [1]) openocd.write_memory(0x02003800, 32, [1])
openocd.run(f"set_reg {{t6 {max_address}}}") openocd.run(f"set_reg {{t6 {max_address}}}")
print("EEPROM Init...")
pathname = os.path.dirname(sys.argv[0]) pathname = os.path.dirname(sys.argv[0])
openocd.run("wp 0x2003800 4 w") openocd.run("wp 0x2003800 4 w")
print("Loading Driver...", flush=True)
print("Uploading driver...", flush=True)
# openocd.run("load_image {%s}" % pathlib.Path(os.path.join(pathname, "firmware.hex"))) # openocd.run("load_image {%s}" % pathlib.Path(os.path.join(pathname, "firmware.hex")))
openocd.run("load_image {%s}" % pathlib.Path( openocd.run("load_image {%s}" % pathlib.Path(
"C:\\Users\\user\\.platformio\\packages\\tool-mik32-uploader\\upload_drivers\\jtag_eeprom\\.pio\\build\\mik32v2\\firmware.hex" "C:\\Users\\user\\.platformio\\packages\\tool-mik32-uploader\\upload_drivers\\jtag_eeprom\\.pio\\build\\mik32v2\\firmware.hex"
)) ))
# openocd.resume(0x2000000)
# wait_halted(openocd)
# print(f"Check page result {openocd.read_memory(0x2003800, 32, 1)}")
print("Uploading data...", flush=True) print("Uploading data...", flush=True)
openocd.write_memory(0x02001800, 8, bytes_list) openocd.write_memory(0x02001800, 8, bytes_list)
print("Uploading data complete!", flush=True)
print("Run driver...", flush=True) print("Uploading data complete! Run driver...", flush=True)
openocd.resume(0x2000000) openocd.resume(0x2000000)
wait_halted(openocd, 10) wait_halted(openocd, 10)
openocd.run("rwp 0x02003800")
openocd.run("step")
print(f"Check page result {openocd.read_memory(0x2003800, 32, 1)}") print(f"Check page result {openocd.read_memory(0x2003800, 32, 1)}")
if result == 0: if result == 0:
# Прошивка страниц флеш памяти по SPIFI была завершена
print(f"{datetime.datetime.now().time()} EEPROM recording has been completed", flush=True) print(f"{datetime.datetime.now().time()} EEPROM recording has been completed", flush=True)
return 0 return 0

View File

@ -1,13 +1,13 @@
:020000040200F8 :020000040200F8
:10000000FD62938202400100FD12E39E02FE374131 :10000000FD62938202400100FD12E39E02FE374131
:10001000000213010100B70100029381016CB705D2 :10001000000213010100B70100029381016AB705D4
:1000200000029385056C370600021306066CB706BE :1000200000029385056A370600021306066AB706C2
:1000300000029386066C39A083A2050023A0560017 :1000300000029386066A39A083A2050023A0560019
:1000400091059106E3EAC5FEB70500029385056CAC :1000400091059106E3EAC5FEB70500029385056AAE
:100050003706000213060675B70600029386066C83 :10005000370600021306066AB70600029386066A90
:1000600039A083A2050023A0560091059106E3EA7A :1000600039A083A2050023A0560091059106E3EA7A
:10007000C5FEB70500029385056C3706000213061E :10007000C5FEB70500029385056A37060002130620
:10008000066C21A023A005009105E3EDC5FEB70095 :10008000066A21A023A005009105E3EDC5FEB70097
:100090000002E780C00AB7000002E780C00AB7008C :100090000002E780C00AB7000002E780C00AB7008C
:1000A0000002E780E02273005010F5BF828000005C :1000A0000002E780E02273005010F5BF828000005C
:1000B0000000000000000000000000000000000040 :1000B0000000000000000000000000000000000040
@ -33,88 +33,77 @@
:1001F000C1171D8F3E96E374C3F8A5B75D71130652 :1001F000C1171D8F3E96E374C3F8A5B75D71130652
:1002000080028145280886C6B137BD47230CF1001E :1002000080028145280886C6B137BD47230CF1001E
:100210008947230EF1003ED2E177938707082C0827 :100210008947230EF1003ED2E177938707082C0827
:100220000A85231AF102552EB64061618280317130 :100220000A85231AF1026526B64061618280317128
:1002300006DF22DD26DB4AD952D556D34ED77D3F85 :1002300006DF22DD26DB4AD952D54ED7C1376146CB
:100240006146814528003937B70707009387074083 :1002400081452800013FB707070061679387074092
:1002500005453EC2592861671307076A8D46130694 :100250001307076A8D4613060002814548003724BC
:1002600000028145480037240002616941201304DF :10026000000261693EC2130404809D288144130981
:1002700004808144014A1309096A930A000863E96A :10027000096A130A000863E4F4018147A9A093996D
:10028000F40105459D20B747000223A0478101A046 :10028000040193D90901CA87014793060002228617
:100290009399040193D90901CA8701479306000283 :10029000CE8548007D2013060008814508105D3D8D
:1002A0002286CE8548006520130600088145081087 :1002A0004A87930600021010CE854800192A01479C
:1002B00055354A87930600021010CE854800012A62 :1002B0001410B3078700BA9683C6060083C70700E9
:1002C00001471410B3078700BA9683C6060083C798 :1002C0006388F6008947374700022320F78001A0A2
:1002D0000700639AF6000507E31557FF93840408A7 :1002D0000507E31F47FD938404081304040861BF66
:1002E0001304040869BF094AD5BFD9AE1C418E0664 :1002E0001C418E0603A88700B3E6060193E60608C4
:1002F00003A88700B3E6060193E6060894C71449ED :1002F00094C7144999CA814663DDC600CCC323A0C4
:1003000099CA814663DDC600CCC323A007003A85A5 :1003000007003A850DE50D458280CCC3814663CC5C
:100310000DE50D458280CCC3814663CCC600944771 :10031000C600944793E6360094C775D7C8477D1743
:1003200093E6360094C775D7C8477D17058965FDE4 :10032000058965FD828023A007008506CDB703A857
:10033000828023A007008506CDB703A8C7007D15DE :10033000C7007D1513781800E31608FC85069105A3
:1003400013781800E31608FC8506910565BF03289D :1003400065BF032805000E0783288800336717015F
:1003500005000E0783288800336717011367070815 :10035000136707082324E800184905C301476353BE
:100360002324E800184905C301476353D702131536 :10036000D702131527002322B80032950841232015
:1003700027002322B800329508412320A8003E859B :10037000A8003E850DED0D4582802322B80001477F
:100380000DED0D4582802322B8000147634FD70051 :10038000634FD70003278800136757002324E80032
:1003900003278800136757002324E800FDD30325B3 :10039000FDD30325C800FD1705897DF982809315DB
:1003A000C800FD1705897DF9828093152700B29555 :1003A0002700B2958C4105072320B800D1BF8328D0
:1003B0008C4105072320B800D1BF8328C8007D15D4 :1003B000C8007D1593F81800E39E08FA050791051B
:1003C00093F81800E39E08FA0507910579BF1C49C8 :1003C00079BF1C4989CF814763FFD7000328050007
:1003D00089CF814763FFD70003280500BA8823220D :1003D000BA882322B800639108020D458280084143
:1003E000B800639108020D45828008414CC163E466 :1003E0004CC163E4D700014582800C41139727007C
:1003F000D700014582800C411397270032970CC328 :1003F00032970CC38507F5B70323C800FD181373A4
:100400008507F5B70323C800FD1813731300E31A1B :100400001300E31A03FC832808001398270032988E
:1004100003FC832808001398270032982320180132 :10041000232018018507910545BF0547AA87630575
:100420008507910545BF0547AA876305E50209478A :10042000E50209476300E506054591EBB7060600BE
:100430006300E506054591EBB7060600DC4A7D77CB :10043000DC4A7D771307F73FF98FDCCA01458280DC
:100440001307F73FF98FDCCA014582807D1719EB4E :100440007D1719EB0D4582809306004037A7070002
:100450000D4582809306004037A707001307071257 :1004500013070712B7050500905D7D8E75D237062C
:10046000B7050500905D7D8E75D2370606005C4AA3 :1004600006005C4A7D771307F73FF98FD58F41115E
:100470007D771307F73FF98FD58F41115CCA02C60C :100470005CCA02C613073006B2476359F70001454C
:1004800013073006B2476359F700014541018280E6 :1004800041018280856693860680C9B7B247850799
:10049000856693860680C9B7B24785073EC6DDB735 :100490003EC6DDB791476307F50263EAA7008547CB
:1004A00091476307F50263EAA7008547630AF504ED :1004A000630AF50489476309F50405458280A1477D
:1004B00089476309F50405458280A147E31DF5FEE0 :1004B000E31DF5FE0947094501A8FD1781EFC8D2E4
:1004C0000947094501A8FD1781EFC8D20D45828073 :1004C0000D45828005470D45B7A7070093870712A2
:1004D00005470D45B7A7070093870712B706050024 :1004D000B7060500905E798E6DD28A05C98D4111EF
:1004E000905E798E6DD28A05C98D4111CCD202C63B :1004E000CCD202C613073006B247635AF700014563
:1004F00013073006B247635AF70001454101828075 :1004F000410182801147C9BF21470145F1B7B24789
:100500001147C9BF21470145F1B7B24785073EC62C :1005000085073EC6D5B70547AA876305E5020947B3
:10051000D5B70547AA876305E50209476302E506E3 :100510006302E506054591EBB70606009C4A7D7728
:10052000054591EBB70606009C4A7D771307F73F18 :100520001307F73FF98F9CCA014582807D1719EBAD
:10053000F98F9CCA014582807D1719EB0D45828099 :100530000D4582809306004037A707001307071276
:100540009306004037A7070013070712B7050500F9 :10054000B7050500905D7D8E75D2370706001C4B00
:10055000905D7D8E75D2370706001C4B7D761306A5 :100550007D761306F63FF18FD58F1CCB85471CCFD8
:10056000F63FF18FD58F1CCB85471CCF411102C6BA :10056000411102C613073006B2476359F70001452F
:1005700013073006B2476359F700014541018280F5 :10057000410182808566938606807DBFB2478507EC
:100580008566938606807DBFB24785073EC6DDB788 :100580003EC6DDB711C98547630DF502054582807A
:1005900011C98547630DF50205458280FD1791EB72 :10059000FD1791EB0D4582800946B7A707009387A9
:1005A0000D4582800946B7A7070093870712B70653 :1005A0000712B7060500985E718F7DD34111C8D63A
:1005B0000500985E718F7DD34111C8D602C613071E :1005B00002C613073006B2476357F70001454101F1
:1005C0003006B2476357F700014541018280054676 :1005C00082800546D9BFB24785073EC6EDB7011107
:1005D000D9BFB24785073EC6EDB7011126CAB70499 :1005D00026CAB7040600DC4806CE22CC4AC84EC65E
:1005E0000600DC4806CE22CC4AC84EC652C456C2CB :1005E00052C456C2F19BDCC89C482A89C845F19B7D
:1005F000F19BDCC89C482A89C845F19B9CC883C7ED :1005F0009CC883C7C5012E848A07DCC883C7D50180
:10060000C5012E848A07DCC883C7D5018A079CC828 :100600008A079CC8193D0C44AA8A03454400593501
:10061000193D0C44AA8A0345440059351848B707C8 :100610001848B70705002A8A98C358480850D8C315
:1006200005002A8A98C358480850D8C3184C98C760 :10062000184C98C7CD35AA894850A93F8347040084
:10063000CD35AA894850A93F834704002A8793F6FD :100630002A8793F6170089E6D44893E62600D4C8A3
:10064000170089E6D44893E62600D4C893F627001D :1006400093F6270099E637060600544A93E616000B
:1006500099E637060600544A93E6160054CA93F604 :1006500054CA93F6470099E637060600144A93E613
:10066000470099E637060600144A93E6260014CAA6 :10066000260014CAA18B99E7B70606009C4A93E7B7
:10067000A18B99E7B70606009C4A93E717009CCA2E :1006700017009CCAF24062442320590123224901F9
:10068000F2406244232059012322490123243901E5 :10068000232439012326E900D244B249224A924A5E
:100690002326E900D244B249224A924A4A85424975 :100690004A85424905618280000000000000000098
:1006A00005618280B7070500DC53054721658D8B06
:1006B000F9176376F7003755E80113050580828046
:1006C000411122C406C62A84F13FB70705009C43A6
:1006D0001307803E8507B357F502B3D7E7020D67CE
:1006E0001307779CB387E7022167130707D0B3D7B7
:1006F000E70219C4BE82FD12E39F02FE7D147DF85D
:10070000B240224441018280411122C406C62A849B
:10071000513FB70705009C431307803E8507B35739
:10072000F502B3D7E7022947B387E702216713072A
:1007300007D0B3D7E70219C4BE82FD12E39F02FEC1
:100740007D147DF8B2402244410182800000000007
:0400000502000000F5 :0400000502000000F5
:00000001FF :00000001FF

View File

@ -4,16 +4,10 @@
#include "uart_lib.h" #include "uart_lib.h"
#include "xprintf.h" #include "xprintf.h"
/**
* @file main.c
*
* @brief Пример демонстрирует чтение и запись значений во внешнюю флеш память Winbond W25 по Standard (Single) SPI
*/
// extern char __HEAP_START[];
const int BUFFER_SIZE = 8 * 1024; const int BUFFER_SIZE = 8 * 1024;
extern uint8_t *BUFFER[]; extern uint8_t *BUFFER[];
extern uint32_t *BUFFER_STATUS[]; extern uint32_t BUFFER_STATUS[];
#define EEPROM_OP_TIMEOUT 100000 #define EEPROM_OP_TIMEOUT 100000
#define USART_TIMEOUT 1000 #define USART_TIMEOUT 1000
@ -29,7 +23,6 @@ HAL_EEPROM_HandleTypeDef heeprom;
int main() int main()
{ {
// *BUFFER_STATUS = 1;
SystemClock_Config(); SystemClock_Config();
#ifdef UART_DEBUG #ifdef UART_DEBUG
@ -39,17 +32,8 @@ int main()
HAL_EEPROM_HandleTypeDef heeprom = { HAL_EEPROM_HandleTypeDef heeprom = {
.Instance = EEPROM_REGS, .Instance = EEPROM_REGS,
}; };
// *BUFFER_STATUS = 1;
HAL_DelayMs(1);
// asm ("wfi");
// *BUFFER_STATUS = 1;
HAL_EEPROM_Erase(&heeprom, 0, EEPROM_PAGE_WORDS, HAL_EEPROM_WRITE_ALL, EEPROM_OP_TIMEOUT); HAL_EEPROM_Erase(&heeprom, 0, EEPROM_PAGE_WORDS, HAL_EEPROM_WRITE_ALL, EEPROM_OP_TIMEOUT);
int result = 0; int result = 0;
@ -80,12 +64,13 @@ int main()
xprintf("addr[0x%04x:0x%08x] buf:mem = 0x%02x != 0x%02x\n", (uint32_t)BUFFER + ad + b, 0x01000000 + ad + b, ebuf, rb[b]); xprintf("addr[0x%04x:0x%08x] buf:mem = 0x%02x != 0x%02x\n", (uint32_t)BUFFER + ad + b, 0x01000000 + ad + b, ebuf, rb[b]);
#endif #endif
result = 2; result = 2;
break; goto error_exit;
} }
} }
} }
HAL_DelayMs(1); error_exit:
*BUFFER_STATUS = result; *BUFFER_STATUS = result;
// asm ("wfi"); // asm ("wfi");