Добавлено частичное заполение буфера

This commit is contained in:
sh-sergey 2024-11-01 19:10:58 +03:00
parent b1b3217108
commit 6b8e7d21a9
4 changed files with 179 additions and 170 deletions

View File

@ -3,7 +3,7 @@ from enum import Enum
import os import os
import pathlib import pathlib
import sys import sys
from typing import Dict, List from typing import Dict, List, Tuple
import time import time
from tclrpc import OpenOcdTclRpc from tclrpc import OpenOcdTclRpc
from utils import bytes2words from utils import bytes2words
@ -269,10 +269,14 @@ def wait_halted(openocd: OpenOcdTclRpc, timeout_seconds: float = 2):
def collapse_pages(pages: Dict[int, List[int]]) -> List[int]: def collapse_pages(pages: Dict[int, List[int]]) -> List[int]:
bytes_list: List[int] = [] bytes_list: List[int] = []
found_pages = 0
for page in range(64): for page in range(64):
if found_pages == len(pages):
break
page = pages.get(page * 128) page = pages.get(page * 128)
if page is not None: if page is not None:
bytes_list.extend(page) bytes_list.extend(page)
found_pages += 1
else: else:
bytes_list.extend([0]*128) bytes_list.extend([0]*128)
@ -282,8 +286,11 @@ def collapse_pages(pages: Dict[int, List[int]]) -> List[int]:
def write_memory(pages: Dict[int, List[int]], openocd: OpenOcdTclRpc) -> int: def write_memory(pages: Dict[int, List[int]], openocd: OpenOcdTclRpc) -> int:
result = 0 result = 0
bytes_list = collapse_pages(pages)
max_address = len(bytes_list) - 1
openocd.halt() openocd.halt()
openocd.write_memory(0x02003800, 32, [1]) openocd.write_memory(0x02003800, 32, [1])
openocd.run(f"set_reg {{t6 {max_address}}}")
print("EEPROM Init...") print("EEPROM Init...")
pathname = os.path.dirname(sys.argv[0]) pathname = os.path.dirname(sys.argv[0])
@ -298,7 +305,6 @@ def write_memory(pages: Dict[int, List[int]], openocd: OpenOcdTclRpc) -> int:
# wait_halted(openocd) # wait_halted(openocd)
# print(f"Check page result {openocd.read_memory(0x2003800, 32, 1)}") # print(f"Check page result {openocd.read_memory(0x2003800, 32, 1)}")
bytes_list = collapse_pages(pages)
print("Uploading data...", flush=True) print("Uploading data...", flush=True)
openocd.write_memory(0x02001800, 8, bytes_list) openocd.write_memory(0x02001800, 8, bytes_list)

View File

@ -33,181 +33,181 @@
:1001F000C1171D8F3E96E374C3F8A5B75D71130652 :1001F000C1171D8F3E96E374C3F8A5B75D71130652
:1002000080028145280886C6B137BD47230CF1001E :1002000080028145280886C6B137BD47230CF1001E
:100210008947230EF1003ED2E177938707082C0827 :100210008947230EF1003ED2E177938707082C0827
:100220000A85231AF102EF00B00CB64061618280AA :100220000A85231AF102EF00700CB64061618280EA
:10023000557186C7A2C5A6C3CAC152DD56DB5AD9BD :10023000557186C7A2C5A6C3CAC152DD56DB5AD9BD
:100240005ED762D54EDF5D3F371508000147814616 :100240005ED762D54EDF5D3F371508000147814616
:1002500021469305601113050540A12237150002C0 :1002500021469305601113050540912237150002D0
:100260001305C5C3A529614681452800E535372416 :10026000130585C39529614681452800E535372466
:100270000002B70707003715000293870740930570 :100270000002B70707003715000293870740930570
:1002800004801305C5C43EC291290545BD2161679F :100280000480130585C43EC281290545AD216167FF
:100290001307076A8D46130600028145480061690D :100290001307076A8D46130600028145480061690D
:1002A000B129130404808144014C371A0002130958 :1002A000A129130404808144014C371A0002130968
:1002B000096A930A0008370B0001B71B0002228667 :1002B000096A930A0008370B0001B71B000263E9C3
:1002C000A68513050AC693990401092993D9090142 :1002C000F401B7470002054523A087812D2101A035
:1002D000CA870147930600022286CE854800412145 :1002D0002286A6851305CAC593990401F52E93D9E4
:1002E0001306000881450810B535CE854A87930668 :1002E0000901CA870147930600022286CE8548008D
:1002F000000210104800E521A285814718103E97A2 :1002F000AD211306000881450810A93DCE854A8727
:1003000083C60500034707006309D70233866401EB :100300009306000210104800C929A28581471810E1
:100310003E9613850BC8D926094C93840408896737 :100310003E9783C6050003470700630ED700338668
:1003200013040408E39DF4F8B7470002054523A031 :1003200064013E961385CBC7452E094C938404087F
:100330008781E1267300501001A085078505E39FA2 :100330001304040869B785078505E39A57FDFDB7DF
:1003400057FBE1BF0111B717080006CE02C402C671 :100340000111B717080006CE02C402C69387074002
:10035000938707406312F502B70705000947D8CF16 :100350006312F502B70705000947D8CF93070006D7
:10036000930700063EC085473EC28A853745080090 :100360003EC085473EC28A8537450800D921F24004
:10037000D921F24005618280B72708009387078062 :1003700005618280B727080093870780E319F5FE9F
:10038000E319F5FEB70705001147D8CF93070030F2 :10038000B70705001147D8CF930700303EC0374567
:100390003EC03745080085473EC28A8513050540A3 :10039000080085473EC28A8513050540C1BF01118B
:1003A000C1BF011122CC26CA4AC84EC652C42A84F3 :1003A00022CC26CA4AC84EC652C42A8406CE2E89FA
:1003B00006CE2E89B284368ABA896937BD4701458F :1003B000B284368ABA896937BD47014563FE27038F
:1003C00063FE27032320040023262401FD575CCC71 :1003C0002320040023262401FD575CCC2322440172
:1003D0002322440193E714002324340113F744003B :1003D00093E714002324340113F744001CC0A188C0
:1003E0001CC0A1885C4C054501C713D56701058970 :1003E0005C4C054501C713D56701058991CC6DD9D2
:1003F00091CC6DD99396A700E3D606FEF2406244F5 :1003F0009396A700E3D606FEF2406244D2444249F7
:10040000D2444249B249224A0561828061DDFDB78A :10040000B249224A0561828061DDFDB7484D1981FC
:10041000484D198105898280411122C406C62A846B :1004100005898280411122C406C62A842285FD37BF
:100420002285FD3775DDB240224441018280931759 :1004200075DDB240224441018280931705013715E2
:10043000050137150800C183130505401CD5E9BF28 :100430000800C183130505401CD5E9BF411122C442
:10044000411122C406C62A840305040009E5B2400E :1004400006C62A840305040009E5B240224441019E
:100450002244410182800504D93FFDB75971D6CAB3 :1004500082800504D93FFDB75971D6CADAC8DEC615
:10046000DAC8DEC6E2C4E6C2EAC086D6A2D4A6D204 :10046000E2C4E6C2EAC086D6A2D4A6D2CAD0CECE14
:10047000CAD0CECED2CC6EDEAA872E8D930A0003D0 :10047000D2CC6EDEAA872E8D930A0003130BA00246
:10048000130BA002930BC004130C0002A94C0385AC :10048000930BC004130C0002A94C038507006306FC
:100490000700630605221307500213891700631132 :10049000052213075002138917006311E50803852D
:1004A000E5080385170063105509038527001389A4 :1004A0001700631055090385270013893700854419
:1004B000370085446316650B03240D0093074D0038 :1004B0006316650B03240D0093074D00635504007C
:1004C00063550400330480408944030509003E8DD0 :1004C000330480408944030509003E8D0509937774
:1004D00005099377F5FD639777010305090093E418 :1004D000F5FD639777010305090093E444000509DE
:1004E00044000509630D051C13070006AA8763561F :1004E000630D051C13070006AA876356A700930730
:1004F000A700930705FEE207E1871307F00463876F :1004F00005FEE207E1871307F0046387E70C634218
:10050000E70C6342F70613073004638BE70A13070F :10050000F70613073004638BE70A13074004638080
:1005100040046380E70E1307200489466389E70AD5 :10051000E70E1307200489466389E70A3937EA8919
:100520003937EA8949A01307D0026306E500138929 :1005200049A01307D0026306E50013892700814420
:100530002700814441B70385270013893700894488 :1005300041B70385270013893700894495BF3304E9
:1005400095BF3304940305092A940305F9FF1304A6 :10054000940305092A940305F9FF130404FD930796
:1005500004FD930705FD93F7F70FE374F7FE95BFCE :1005500005FD93F7F70FE374F7FE95BF01442547B8
:1005600001442547FDB7130750056384E7081307C7 :10056000FDB7130750056384E7081307800563820E
:1005700080056382E70813073005E393E7FA832DCC :10057000E70813073005E393E7FA832D0D0093098D
:100580000D0093094D0013FA24006E85A9252A8DCC :100580004D0013FA24006E85A9252A8D93041D00C1
:1005900093041D0063150A00636A8D00268D6E8525 :1005900063150A00636A8D00268D6E854535636A92
:1005A0004535636A8D004E8DCA87D5B513050002A7 :1005A0008D004E8DCA87D5B513050002BD3D268D41
:1005B000BD3D268DF1BF13050002953D050DD5B754 :1005B000F1BF13050002953D050DD5B703050D00EC
:1005C00003050D0093094D009D35F1BFA14613F7BA :1005C00093094D009D35F1BFA14613F744009309EF
:1005D000440093094D0015C31306400403270D0082 :1005D0004D0015C31306400403270D006396C702A0
:1005E0006396C702635407023307E04093E40401B3 :1005E000635407023307E04093E4040131A8A946AD
:1005F00031A8A946E9BFC146D9BF13074004639596 :1005F000E9BFC146D9BF130740046395E70003274D
:10060000E70003270D00F9BF03270D00130585F848 :100600000D00F9BF03270D00130585F89D4719E17B
:100610009D4719E193077002100893F5F70F328D8B :1006100093077002100893F5F70F328D8147A548B4
:100620008147A5483378D7023A833385050133578C :100620003378D7023A83338505013357D70263E520
:10063000D70263E5080113158801618513050503D9 :100630000801131588016185130505032300A60031
:100640002300A600938D17006366D3000506639F01 :10064000938D17006366D3000506639F8D05FD47F4
:100650008D05FD4713F7040101CF13870D02140820 :1006500013F7040101CF13870D021408B30DD7005F
:10066000B30DD7001307D0022380EDFE938D270032 :100660001307D0022380EDFE938D270093F714002B
:1006700093F714001305000299C3130500036E8A53 :100670001305000299C3130500036E8A89881307C6
:10068000898813071A0081E463648A023A8AFD1D8F :100680001A0081E463648A023A8AFD1D3307BD01C2
:100690003307BD0103050700593BE39A0DFEE374E0 :1006900003050700593BE39A0DFEE3748AF0130546
:1006A0008AF0130500026133050AD5BFEE879DBFAE :1006A00000026133050AD5BFEE879DBF3AC62AC452
:1006B0003AC62AC4AD3B324722453A8AD9B7B6502A :1006B000AD3B324722453A8AD9B7B65026549654B4
:1006C000265496540659F649664AD64A464BB64BC6 :1006C0000659F649664AD64A464BB64B264C964CD6
:1006D000264C964C064DF25D6561828039712ED2B2 :1006D000064DF25D6561828039712ED24C1006CED6
:1006E0004C1006CE32D436D63AD83EDA42DC46DE5C :1006E00032D436D63AD83EDA42DC46DE2EC6AD33B8
:1006F0002EC6AD33F240216182805DAB1C418E0677 :1006F000F240216182806DAB1C418E0603A8870009
:1007000003A88700B3E6060193E6060894C71449D8 :10070000B3E6060193E6060894C7144999CA8146E0
:1007100099CA814663DDC600CCC323A007003A8591 :1007100063DDC600CCC323A007003A850DE50D4577
:100720000DE50D458280CCC3814663CCC60094475D :100720008280CCC3814663CCC600944793E63600F2
:1007300093E6360094C775D7C8477D17058965FDD0 :1007300094C775D7C8477D17058965FD828023A0BA
:10074000828023A007008506CDB703A8C7007D15CA :1007400007008506CDB703A8C7007D1513781800EC
:1007500013781800E31608FC8506910565BF032889 :10075000E31608FC8506910565BF032805000E0712
:1007600005000E0783288800336717011367070801 :100760008328880033671701136707082324E800EC
:100770002324E800184905C301476353D702131522 :10077000184905C301476353D702131527002322E5
:1007800027002322B800329508412320A8003E8587 :10078000B800329508412320A8003E850DED0D45A7
:100790000DED0D4582802322B8000147634FD7003D :1007900082802322B8000147634FD70003278800D7
:1007A00003278800136757002324E800FDD303259F :1007A000136757002324E800FDD30325C800FD1775
:1007B000C800FD1705897DF9828093152700B29541 :1007B00005897DF9828093152700B2958C41050744
:1007C0008C4105072320B800D1BF8328C8007D15C0 :1007C0002320B800D1BF8328C8007D1593F81800F6
:1007D00093F81800E39E08FA0507910579BF1C49B4 :1007D000E39E08FA0507910579BF1C4989CF814737
:1007E00089CF814763FFD70003280500BA882322F9 :1007E00063FFD70003280500BA882322B80063916D
:1007F000B800639108020D45828008414CC163E452 :1007F00008020D45828008414CC163E4D7000145E1
:10080000D700014582800C411397270032970CC313 :1008000082800C411397270032970CC38507F5B7F8
:100810008507F5B70323C800FD1813731300E31A07 :100810000323C800FD1813731300E31A03FC832895
:1008200003FC83280800139827003298232018011E :1008200008001398270032982320180185079105A6
:100830008507910545BFB7470800938707402A8879 :1008300045BFB7470800938707402A886303F50838
:100840006304F508B7570800938707806304F50A27 :10084000B7570800938707806303F50A3747080006
:1008500037470800630DE50A05458280331E1F01F6 :10085000630CE50A05458280331E1F013376DE01F5
:100860003376DE0129C683A345008843139318001D :1008600039C2C0418843139318003396620013467F
:1008700033966F001346F6FF13F43300718D331473 :10087000F6FF93743400718DB3946400458D88C382
:100880006400418D88C3638B5302638C0302084369 :10088000630B740205CC084303AEC500718D331EA3
:1008900003AEC500718D331E6E003365C50108C3FC :100890006E003365C50108C38842698E88453315EB
:1008A0008842698E884533156500498E90C2850857 :1008A0006500498E90C2850833D51E0155F5324446
:1008B00033D51E0145F53244410182802326C8010B :1008B000A244410182802326C801F1B72324C80144
:1008C000F9B72324C801E1B7B716050037170500AB :1008C000D9B7B716050037170500B7170500938687
:1008D000B7170500938646C1130707C19387C7C0A2 :1008D00046C1130707C19387C7C083AE050081488F
:1008E00083AE05008148054F8D4F914233D51E01DF :1008E000054F8D42914333D51E0105ED8280B71629
:1008F00005ED8280B716050037170500B71705000C :1008F000050037170500B7170500938606C21307D2
:10090000938606C21307C7C1938787C1D1BFB716A5 :10090000C7C1938787C1D1BFB71605003717050048
:10091000050037170500B7170500938686C0130733 :10091000B7170500938686C0130747C0938707C0A3
:1009200047C0938707C06DBF331E1F013376DE01BA :100920006DBF331E1F013376DE0119E2850865BFF6
:1009300019E2850865BF411122C635B70547AA8768 :10093000411122C626C435B70547AA876305E502DB
:100940006305E50209476300E506054591EBB70637 :1009400009476300E506054591EBB7060600DC4A5A
:100950000600DC4A7D771307F73FF98FDCCA0145B3 :100950007D771307F73FF98FDCCA014582807D1749
:1009600082807D1719EB0D4582809306004037A7E2 :1009600019EB0D4582809306004037A70700130757
:10097000070013070712B7050500905D7D8E75D23D :100970000712B7050500905D7D8E75D2370606001B
:10098000370606005C4A7D771307F73FF98FD58F4E :100980005C4A7D771307F73FF98FD58F41115CCA19
:1009900041115CCA02C613073006B2476359F7001B :1009900002C613073006B2476359F700014541010B
:1009A000014541018280856693860680C9B7B247BA :1009A0008280856693860680C9B7B24785073EC6B2
:1009B00085073EC6DDB791476307F50263EAA700E6 :1009B000DDB791476307F50263EAA7008547630A3D
:1009C0008547630AF50489476309F5040545828074 :1009C000F50489476309F50405458280A147E31DC5
:1009D000A147E31DF5FE0947094501A8FD1781EF71 :1009D000F5FE0947094501A8FD1781EFC8D20D456D
:1009E000C8D20D45828005470D45B7A707009387FC :1009E000828005470D45B7A7070093870712B70612
:1009F0000712B7060500905E798E6DD28A05C98D03 :1009F0000500905E798E6DD28A05C98D4111CCD2E9
:100A00004111CCD202C613073006B247635AF70031 :100A000002C613073006B247635AF7000145410199
:100A10000145410182801147C9BF21470145F1B716 :100A100082801147C9BF21470145F1B7B247850719
:100A2000B24785073EC6D5B70547AA876305E502E5 :100A20003EC6D5B70547AA876305E50209476302B5
:100A300009476302E506054591EBB70606009C4AA7 :100A3000E506054591EBB70606009C4A7D7713074E
:100A40007D771307F73FF98F9CCA014582807D1798 :100A4000F73FF98F9CCA014582807D1719EB0D4550
:100A500019EB0D4582809306004037A70700130766 :100A500082809306004037A7070013070712B705E7
:100A60000712B7050500905D7D8E75D23707060029 :100A60000500905D7D8E75D2370706001C4B7D76A4
:100A70001C4B7D761306F63FF18FD58F1CCB854737 :100A70001306F63FF18FD58F1CCB85471CCF411154
:100A80001CCF411102C613073006B2476359F70065 :100A800002C613073006B2476359F700014541011A
:100A90000145410182808566938606807DBFB2470D :100A900082808566938606807DBFB24785073EC605
:100AA00085073EC6DDB711C98547630DF5020545CB :100AA000DDB711C98547630DF50205458280FD1745
:100AB0008280FD1791EB0D4582800946B7A707009C :100AB00091EB0D4582800946B7A70700938707127F
:100AC00093870712B7060500985E718F7DD3411199 :100AC000B7060500985E718F7DD34111C8D602C666
:100AD000C8D602C613073006B2476357F700014570 :100AD00013073006B2476357F70001454101828092
:100AE000410182800546D9BFB24785073EC6EDB7B2 :100AE0000546D9BFB24785073EC6EDB7011126CAF4
:100AF000011126CAB7040600DC4806CE22CC4AC83B :100AF000B7040600DC4806CE22CC4AC84EC652C413
:100B00004EC652C456C2F19BDCC89C482A89C845CF :100B000056C2F19BDCC89C482A89C845F19B9CC809
:100B1000F19B9CC883C7C5012E848A07DCC883C7A4 :100B100083C7C5012E848A07DCC883C7D5018A072D
:100B2000D5018A079CC8193D0C44AA8A0345440094 :100B20009CC8193D0C44AA8A03454400593518480D
:100B300059351848B70705002A8A98C358480850FD :100B3000B70705002A8A98C358480850D8C3184CEC
:100B4000D8C3184C98C7CD35AA894850A93F8347C8 :100B400098C7CD35AA894850A93F834704002A8712
:100B500004002A8793F6170089E6D44893E6260016 :100B500093F6170089E6D44893E62600D4C893F6A6
:100B6000D4C893F6270099E637060600544A93E660 :100B6000270099E637060600544A93E6160054CA51
:100B7000160054CA93F6470099E637060600144A51 :100B700093F6470099E637060600144A93E62600E6
:100B800093E6260014CAA18B99E7B70606009C4A93 :100B800014CAA18B99E7B70606009C4A93E71700A1
:100B900093E717009CCAF2406244232059012322A4 :100B90009CCAF240624423205901232249012324A4
:100BA0004901232439012326E900D244B249224ACB :100BA00039012326E900D244B249224A924A4A85B1
:100BB000924A4A85424905618280B7070500DC53A5 :100BB000424905618280B7070500DC53054721657E
:100BC000054721658D8BF9176376F7003755E801E6 :100BC0008D8BF9176376F7003755E801130505801B
:100BD000130505808280937735002A879DEFB786BD :100BD0008280937735002A879DEFB7867F7F938643
:100BE0007F7F9386F6F7FD5510431107B377D60044 :100BE000F6F7FD5510431107B377D600B697D18FAE
:100BF000B697D18FD58FE389B7FE8346C7FFB3077A :100BF000D58FE389B7FE8346C7FFB307A7408DCAE9
:100C0000A7408DCA8346D7FF9DC20345E7FF333512 :100C00008346D7FF9DC20345E7FF3335A0003E95DD
:100C1000A0003E9579158280F9D283470700050729 :100C100079158280F9D2834707000507937637005C
:100C200093763700F5FB098F1305F7FF8280138554 :100C2000F5FB098F1305F7FF82801385D7FF8280BC
:100C3000D7FF82801385C7FF828000005354415242 :100C30001385C7FF82800000535441525420445210
:100C400054204452495645520A0000004255464637 :100C4000495645520A000000425546464552203D4D
:100C50004552203D203078253038780A00000000C9 :100C5000203078253038780A000000005772697417
:100C6000577269746520506167652030782530348B :100C600065205061676520307825303478206672C1
:100C7000782066726F6D203078253038780A000051 :100C70006F6D203078253038780A00006164647226
:100C8000616464725B3078253034783A307825308E :100C80005B3078253034783A3078253038785D20FC
:100C900038785D206275663A6D656D203D2030784C :100C90006275663A6D656D203D203078253032787A
:100CA0002530327820213D203078253032780A00F6 :100CA00020213D203078253032780A0000000000F5
:100CB000411122C406C62A840937B70705009C43A0 :100CB000411122C406C62A84FD3DB70705009C43A6
:100CC0001307803E8507B357F502B3D7E7020D67D8 :100CC0001307803E8507B357F502B3D7E7020D67D8
:100CD0001307779CB387E7022167130707D0B3D7C1 :100CD0001307779CB387E7022167130707D0B3D7C1
:100CE000E70219C4BE82FD12E39F02FE7D147DF867 :100CE000E70219C4BE82FD12E39F02FE7D147DF867
:100CF000B240224441018280411122C406C62A84A6 :100CF000B240224441018280411122C406C62A84A6
:100D00006D3DB70705009C431307803E8507B35729 :100D00005D3DB70705009C431307803E8507B35739
:100D1000F502B3D7E7022947B387E7022167130734 :100D1000F502B3D7E7022947B387E7022167130734
:100D200007D0B3D7E70219C4BE82FD12E39F02FECB :100D200007D0B3D7E70219C4BE82FD12E39F02FECB
:100D30007D147DF8B2402244410182800000000011 :100D30007D147DF8B2402244410182800000000011

View File

@ -13,3 +13,4 @@ platform = MIK32
board = mik32v2 board = mik32v2
framework = framework-mik32v2-sdk framework = framework-mik32v2-sdk
board_debug.ldscript = ram board_debug.ldscript = ram
build_flags = -ffixed-x31 -D MIK32V2

View File

@ -20,6 +20,8 @@ extern uint32_t *BUFFER_STATUS[];
#define EEPROM_PAGE_WORDS 32 #define EEPROM_PAGE_WORDS 32
#define EEPROM_PAGE_COUNT 64 #define EEPROM_PAGE_COUNT 64
register uint32_t max_address_reg asm("x31");
void SystemClock_Config(void); void SystemClock_Config(void);
void EEPROM_Init(void); void EEPROM_Init(void);
@ -53,7 +55,7 @@ int main()
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;
for (int ad = 0; ad < BUFFER_SIZE; ad += (EEPROM_PAGE_WORDS * 4)) for (int ad = 0; ad < max_address_reg; ad += (EEPROM_PAGE_WORDS * 4))
{ {
xprintf("Write Page 0x%04x from 0x%08x\n", ad, (uint8_t *)((uint32_t)BUFFER + ad)); xprintf("Write Page 0x%04x from 0x%08x\n", ad, (uint8_t *)((uint32_t)BUFFER + ad));