Refs #789, #1874. Improved timer accuracy and added Modbus RTU support to the Infineon XMC1 port.

git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@1149 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
Frank Voorburg 2023-12-19 21:09:00 +00:00
parent dc390def6d
commit 19c23de442
14 changed files with 1310 additions and 399 deletions

View File

@ -5,11 +5,11 @@ S31510001020134B00F01AF8134880471349134A144B10
S3151000103000F013F81349144A144B00F00EF8144933
S31510001040144A0020521A02DD043A8850FCDC124879
S31510001050804712488047124880479B1A03DD043B9D
S31510001060C858D050FBDC7047542C00100C000020E0
S315100010705001002035110010982D00105009002045
S31510001080540900209C2D00105409002054090020FA
S3151000109058090020580D0020A51000106D290010C9
S315100010A0992800107047FEE70121024A936E8B4380
S31510001060C858D050FBDC7047A42C00100C00002090
S315100010705001002035110010E82D001050090020F5
S3151000108054090020EC2D00105409002054090020AA
S3151000109058090020600D0020A5100010BD29001071
S315100010A0E92800107047FEE70121024A936E8B4330
S315100010B0936670470000014000487047002D3101CB
S315100010C0F8B5164F164E3B68164C1B041B0E3360B4
S315100010D01AD003223868F969C0B20A401202124DBA
@ -18,7 +18,7 @@ S315100010F006E0FFF7E1FF31682B6889028001C91805
S3151000110000F0AAFB000107E0FB699B0502D4084B1F
S31510001110236002E0FFF7D0FF2060F8BD0003014016
S315100011205C090020FC3F00205809002000001BB776
S31510001130006CDC0208B5FFF7B7FF01F007FC08BD2D
S31510001130006CDC0208B5FFF7B7FF01F02FFC08BD05
S31510001140C021034A890193880B4393807047C04698
S3151000115000000540014B188880B27047000005401A
S3151000116008B58223021C5B00081C1B68111C9847DB
@ -211,24 +211,24 @@ S31510001D0000100450E107000080090020670600005B
S31510001D102010045038B50023104C2173DAB28A42D1
S31510001D2004D2C55CE21815740133F7E7201CFFF7DF
S31510001D309FFC02222368201CDA61FFF701FD00F0E8
S31510001D40FFFA3230051C2368DB699B0705D500F0C6
S31510001D50C6FB00F0F5FAA842F5D938BD6009002097
S31510001D4025FB3230051C2368DB699B0705D500F09F
S31510001D50EEFB00F01BFBA842F5D938BD6009002048
S31510001D60F8B50F4C00262368DB69DB0716D5051C72
S31510001D70201C0F1CFFF7F2FCB0420CD1237B3B70EA
S31510001D80331C227B9A4206D9E218127C0126EA54A9
S31510001D900133DBB2F5E701222368DA61301CF8BDA6
S31510001DA08009002008B5FFF710FF08BD10B500F038
S31510001DB0C1F900280DD000F01DFD002809D000F053
S31510001DC04FFB00F093FA00F0B9F94468FFF7FFFEF5
S31510001DB0C1F900280DD000F045FD002809D000F02B
S31510001DC077FB00F093FA00F0B9F94468FFF7FFFECD
S31510001DD0A04710BDF8B5061C0F1C151C0024AC42FC
S31510001DE005D0E35DA35500F07AFB0134F7E7F8BDA3
S31510001DF038B5051C002400F072FB0C236343084918
S31510001DE005D0E35DA35500F0A2FB0134F7E7F8BD7B
S31510001DF038B5051C002400F09AFB0C2363430849F0
S31510001E005A58954206D3CB1859685218954201D2A2
S31510001E10187A03E00134302CEDD1FF2038BDC046CE
S31510001E20B829001038B5041C0068FFF7E1FFFF2839
S31510001E3001D1002025E0FFF783F900F081FA211D7A
S31510001E20082A001038B5041C0068FFF7E1FFFF28E8
S31510001E3001D1002025E0FFF783F900F0A7FA211D54
S31510001E40451D2068FFF7B3F9FFF784F9C30706D5D8
S31510001E5000F076FAA842ECD800F041FBF4E7FFF761
S31510001E5000F09CFAA842ECD800F069FBF4E7FFF713
S31510001E6079F90028E5D1231C611C2068FF31021B7B
S31510001E70D21812781D799542DBD101338B42F6D1F7
S31510001E80012038BD38B5114B041C0D1C984207D0E3
@ -240,7 +240,7 @@ S31510001ED000300010A40A0020F7B5019303680E0A1B
S31510001EE0041C0D1C00923602013305D1802240C01D
S31510001EF0311C5200FFF76EFF2368B34207D0201C37
S31510001F00311CFFF7BFFF041E01D100201CE023681F
S31510001F10009FED1A6519043500F0E1FA231DEB1A3E
S31510001F10009FED1A6519043500F009FB231DEB1A15
S31510001F20FF2B07D9711C201CFF31FFF7ABFF041ED6
S31510001F30EBD0051D3B78009A2B70019B01370135BC
S31510001F40FB1A9342E8D10120FEBD00000123034A8B
@ -253,14 +253,14 @@ S31510001FA02B1CFFF799FF70BDFF2F03100030001098
S31510001FB0A0090020A40A0020F8B5254B4A1E1B1ABA
S31510001FC09A4201D9002042E0051C0E1CFFF710FFB3
S31510001FD0013D041CA819FFF70BFF061C8442F1D81B
S31510001FE0E31EDBB2FB2BEDD83228EBD800F077FAE4
S31510001FF0002500F074FA0C236B43164AD118097A9F
S31510001FE0E31EDBB2FB2BEDD83228EBD800F09FFABC
S31510001FF0002500F09CFA0C236B43164AD118097A77
S31510002000A1420CD19D586B1CDCD0FFF799F800F05B
S3151000201097F90A30071C281CFFF7C4F809E00135A8
S31510002020302DE6D1CEE700F08BF9B842CAD800F0D1
S3151000203056FAFFF78FF801252842F4D1FFF78AF8F0
S31510002010BDF90A30071C281CFFF7C4F809E0013582
S31510002020302DE6D1CEE700F0B1F9B842CAD800F0AB
S315100020307EFAFFF78FF801252842F4D1FFF78AF8C8
S315100020400028BFD16419E4B2B442CFD9281CF8BD18
S31510002050FF2F0310B82900100C4B07B51A68012082
S31510002050FF2F0310082A00100C4B07B51A68012031
S31510002060013211D09A68596809485118DA688918E6
S315100020701A6989185A6989189A698B185B4204215A
S3151000208001AA0193FFF76EFF0EBDC046A0090020FE
@ -277,202 +277,207 @@ S3151000212015FF08BD08B5FFF71DFF08BD08B5FFF779
S3151000213043FF08BD08B5FFF7ADFF08BD08B5FFF7AB
S31510002140E9FF08BD08B5FFF787FF002801D0FFF7A4
S31510002150C7FF08BDF8B50E4D0024AB69DB0415D4D6
S3151000216081B20C48FFF7EAFB00F0EAF80A30071CC8
S315100021708026AC697600344006D100F0B0F900F044
S31510002180DFF8B842F4D900E00124EE61201CF8BD56
S3151000216081B20C48FFF7EAFB00F010F90A30071CA1
S315100021708026AC697600344006D100F0D8F900F01C
S3151000218005F9B842F4D900E00124EE61201CF8BD2F
S31510002190FC02004800020048E123F0B51B0285B09E
S315100021A0012501931027082300260F4C01A9201C96
S315100021B02A1C4B718B71CD710F724E81FFF77CFB10
S315100021C0201C391C2B1C0422FFF790FC2B1C201CF6
S315100021D0311C0422FFF79EFC0F22236C93430D3A09
S315100021E01343236405B0F0BD0002004870B5061C09
S315100021F00D1E812D03D91048782100F0A9F8281C4E
S31510002200FFF7A8FF012803D00B487C2100F0A0F8A7
S31510002210341CA31B9BB2AB420CD200F060F92078A1
S31510002220FFF798FF012803D00348852100F090F8A6
S315100022300134EEE770BDC046F82B0010F7B5254CFB
S315100021F00D1E812D03D91048782100F0CFF8281C28
S31510002200FFF7A8FF012803D00B487C2100F0C6F881
S31510002210341CA31B9BB2AB420CD200F088F9207879
S31510002220FFF798FF012803D00348852100F0B6F880
S315100022300134EEE770BDC046482C0010F7B5254CAA
S31510002240071C25780191244B002D17D19B691B077C
S3151000225001D500253CE02148FFF787FB204BC0B293
S3151000226018700138C0B28028F3D800F069F81D4BF9
S3151000226018700138C0B28028F3D800F08FF81D4BD3
S3151000227018601D4B1D700123237029E09E690823E9
S31510002280194D1E402A780092002E18D11348FFF7D8
S315100022906CFB1349009BCB1858702B780A780133C6
S315100022A0DBB22B709A42D4D192B20131381CFFF7AF
S315100022B091FD2B78019A26701370012508E000F025
S315100022C03FF8084B1B68C8339842C2D900252570C1
S315100022C065F8084B1B68C8339842C2D9002525709B
S315100022D0281CFEBD2F0C0020FC02004800020048FE
S315100022E0AC0B0020A80B00202E0C00200022024B65
S315100022F01A605A609A60704710E000E008B5FFF760
S31510002300F5FF054B054A05215A6000229A601960AF
S31510002310034B1A6008BDC04610E000E07FBB00000A
S31510002320300C0020044B1B68DB0303D5034A1368EB
S31510002330013313607047C04610E000E0300C0020F7
S3151000234008B5FFF7EFFF014B186808BD300C0020E9
S3151000235008B500F0C4F8FCE710B500F0B5F8012890
S3151000236012D00A4C2378012B0ED1FFF7E9FF084B48
S315100023701A68084B1B68D318F533FF33984203D3FA
S3151000238000232370FFF712FD10BDC046380C002045
S31510002390340C00203C0C002008B5044B1B78012B94
S315100023A003D1FFF7CDFF024B186008BD380C002093
S315100023B03C0C0020012208B5034B1A70FFF7ECFF06
S315100023C0FFF7CAFF08BDC046380C002008B5FFF756
S315100023D0E9FC00F080F8FFF791FFFFF79FFE00F091
S315100023E00DF8FFF7E7FF08BD08B500F078F8FFF71E
S315100023F099FF00F013F8FFF7AFFF08BD10B500F016
S3151000240089F8FFF7E7FB0123034C2370FFF7C4FE9F
S315100024100023237010BDC0465009002037B56B4607
S315100024200D4CDD1D201C291CFFF79AFC012805D137
S315100024300A4B29781870201C00F094F8201C291CCF
S31510002440FFF7FCFE012806D10022044B2978201C38
S315100024501A7000F087F837BD400C00205009002094
S315100024607047000070B5094D061C2B780C1C012B0B
S3151000247002D1C9B2FFF74EFC2B78002B03D1E1B283
S31510002480301CFFF7B3FE00F065F870BD5009002050
S31510002490044B81201B78013BDBB2022B01D8024A88
S315100024A0D05C704750090020332C0010044B81205B
S315100024B01B78013BDBB2022B01D8024AD05C704775
S315100024C050090020362C001008B500F039F8431ECC
S315100024D09841C0B208BD08B500F098F908BD08B516
S315100024E000F099F908BD0000FE22034B1A705870CF
S315100024F0FC3A86331A807047C40C0020021C4378BD
S31510002500180293781B04034310781843D3781B06DC
S3151000251018437047094B0022191C81310A70191C87
S3151000252088310A60191C84310A70191C86310A8098
S31510002530191C823383310A701A707047C40C00203C
S31510002540034B81331878431E9841C0B27047C0467A
S31510002550C40C00200022024B84331A707047C04608
S31510002560C40C0020F7B50378051CA04CFF2B1ED118
S31510002570211C002282310A70211C01258131237011
S31510002580EF3B6370A2700D70FFF782FFE070FFF7EC
S315100025908DFF2071FFF78AFF231C0822000A86335D
S315100025A06071A571E5711A80FFF7B8FD07E1221C6D
S315100025B081321678671C012E00D016E1F32B66D0F7
S315100025C021D8CF2B00D1EDE006D8C92B00D1A3E03E
S315100025D0CC2B00D1EEE0EFE0D12B00D1D5E000D22C
S315100025E0B0E0D22B00D0E7E00025FF236570237002
S315100025F0A570FFF74DFF231CE07025716571A5715D
S3151000260086330722BFE0FA2B61D00ED8F52B15D0F2
S3151000261021D3F62B00D0CFE0FF2304302370FFF731
S315100026206DFF231C88331860C0E0FD2B5FD0FE2B96
S315100026306CD0FC2B00D0BFE00020BEE0FFF728FFD7
S315100026406A78904201DC2220B7E0261C883692B2C6
S31510002650381C31680DE0FFF71BFF6B789842F2DDEE
S31510002660281D261CFFF74AFF88363060011C381CCF
S315100026706A78FFF7AFFBFF2323706B7832689B18DD
S31510002680221C33606B7886320133138097E0FF2368
S3151000269004302370FFF732FF231C002688331D6891
S315100026A04719BD4206D02B780135F618F6B2FFF75A
S315100026B016FFF6E701236370002326716371A37179
S315100026C0E371A370E370231C082286335BE0FF23BB
S315100026D02370231C464A88331A600023072263702E
S315100026E0A370E37022716371A371E371EBE7FF23AB
S315100026F0221C23700023823263701278E3702371D8
S315100027006371231CA270863306223CE000231370EB
S31510002710221C8232137047E0271C88373B680193CE
S31510002720FFF7B6FE6A1C411E0198FFF7FBFC002856
S3151000273040D0FF232370FFF7ABFE3B680138C0186B
S31510002740386033E0FFF7A4FE6B780138984200DC5E
S3151000275079E7FF232370231C86331E8069780029AE
S3151000276004D1FFF7EFFC002829D123E0261C883678
S31510002770AA1C3068FFF7D6FC00281BD06B7832688D
S315100027809B1833601BE01A8019E0231C0430883331
S315100027901F68FFF7B3FE011C381CFFF7C7FC0028A3
S315100027A002D107E0FFF702FBFF232370231C8633B9
S315100027B01E8004E0312000E02020FFF795FE231C48
S315100027C084331B78012B02D11020FFF78DFE231CBA
S315100027D0863319880BB2002B07DD231C01228433A4
S315100027E089B2201C1A70FFF73DFEF7BDC40C0020FD
S315100027F0392C001008B5044B00205B6A5B0702D524
S3151000280000F044F8012008BD0002044008B5642019
S3151000281000F006F808BD08B500F014F808BD000071
S3151000282038B5064C051C0021201C8022FFF702F843
S3151000283001236360024B1D8038BDC046000404406E
S31510002840540D002010B5FFF77BFD0C4C2368984201
S3151000285013D30B4B012118780A4A002804D119709A
S3151000286080235B02536002E0002018705160FFF76E
S3151000287067FD054B1B88C018206010BD500D002049
S31510002880560D002000040440540D00200122014B77
S315100028905A60704700040440F0B58BB00024FEF770
S315100028A00FFCFFF793FD082308AA2348022108947A
S315100028B05460137000940194029403940494059444
S315100028C006940794FEF778FC6B461C4803216A466B
S315100028D01C70FEF771FC9C2302AF3A1C17480221AC
S315100028E03B70FEF769FC50210727154B04AEDA69D9
S315100028F014488A43DA61DA694839BA43DA61321C14
S315100029003470FEF759FCA42306AD0E4809212A1C83
S315100029102B70FEF751FC402102200B4B1A680A431C
S315100029201A60DA68BA430243DA601A688A431A6090
S31510002930FFF75AFDFCE7C0460002044000010440C0
S3151000294000020048000404400003045030B585B06E
S315100029506A46054B684632CB32C21B681360FEF7D7
S31510002960F5FC05B030BDC046442C00100E4B70B5BA
S3151000297000251E1C0D4CE41AA410A54204D0AB0071
S31510002980F35898470135F8E7FFF71EF9084B00256D
S315100029901E1C084CE41AA410A54204D0AB00F35830
S315100029A098470135F8E770BD5409002054090020F6
S315100029B054090020540900200030001000100000B7
S315100029C0030000000040001000100000040000008A
S315100029D000500010001000000500000000600010FC
S315100029E0001000000600000000700010001000002B
S315100029F00700000000800010001000000800000012
S31510002A0000900010001000000900000000A0001047
S31510002A10001000000A00000000B0001000100000B6
S31510002A200B00000000C00010001000000C00000099
S31510002A3000D00010001000000D00000000E0001093
S31510002A40001000000E00000000F000100010000042
S31510002A500F00000000000110001000001000000020
S31510002A6000100110001000001100000000200110DD
S31510002A7000100000120000000030011000100000CD
S31510002A8013000000004001100010000014000000A8
S31510002A900050011000100000150000000060011029
S31510002AA00010000016000000007001100010000059
S31510002AB01700000000800110001000001800000030
S31510002AC000900110001000001900000000A0011075
S31510002AD0001000001A00000000B0011000100000E5
S31510002AE01B00000000C00110001000001C000000B8
S31510002AF000D00110001000001D00000000E00110C1
S31510002B00001000001E00000000F001100010000070
S31510002B101F0000000000021000100000200000003E
S31510002B20001002100010000021000000002002100A
S31510002B3000100000220000000030021000100000FB
S31510002B4023000000004002100010000024000000C6
S31510002B500050021000100000250000000060021056
S31510002B600010000026000000007002100010000087
S31510002B70270000000080021000100000280000004E
S31510002B8000900210001000002900000000A00210A2
S31510002B90001000002A00000000B002100010000013
S31510002BA02B00000000C00210001000002C000000D6
S31510002BB000D00210001000002D00000000E00210EE
S31510002BC0001000002E00000000F00210001000009F
S31510002BD02F0000000000031000100000300000005D
S31510002BE00010031000100000310000000020031038
S31510002BF00010000032000000433A2F576F726B2FFF
S31510002C00736F6674776172652F4F70656E424C54A0
S31510002C102F5461726765742F536F757263652F41F8
S31510002C20524D434D305F584D43312F72733233320C
S31510002C302E63000800000800004F70656E424C5469
S31510002C400000000000000100000000030000010069
S30910002C50000000006A
S31510002C542C4800470000000000000000000000009F
S31510002C64000000000000000000000000000000004A
S31510002C7425480047000000000000000023480047D4
S31510002C842348004723480047234800472348004762
S31510002C942348004723480047234800472348004752
S31510002CA42348004723480047234800472348004742
S31510002CB42348004723480047234800472348004732
S31510002CC42348004723480047234800472348004722
S315100022F01A605A609A60704710E000E038B5FFF730
S31510002300F5FF0B4C0B4B002563600523FA21A560E6
S315100023102360094B89001868FFF79EFA074B084A95
S315100023201860084B1D60A3681B021B0A136038BD9A
S3151000233010E000E0FFFFFF00FC3F0020300C002003
S31510002340380C0020340C002070B50C4B0C4D9868DE
S315100023502C680C4B201A1E680002000AB0420BD3E0
S31510002360311CFFF779FA4643074AA41B1368240267
S31510002370C318240A13602C6070BDC04610E000E03C
S31510002380380C0020300C0020340C002008B5FFF764
S31510002390DBFF014B186808BD340C002008B500F0AF
S315100023A0C6F8FCE710B500F0B7F8012812D00A4CB1
S315100023B02378012B0ED1FFF7E9FF084B1A68084B5B
S315100023C01B68D318F533FF33984203D300232370C9
S315100023D0FFF7ECFC10BDC046400C00203C0C002062
S315100023E0440C002008B5044B1B78012B03D1FFF7D2
S315100023F0CDFF024B186008BD400C0020440C002095
S31510002400012208B5034B1A70FFF7ECFFFFF7CAFF5E
S3151000241008BDC046400C002008B5FFF7C3FC00F00D
S3151000242082F8FFF76BFFFFF779FE00F00DF8FFF764
S31510002430E7FF08BD08B500F07AF8FFF785FF00F052
S3151000244013F8FFF7AFFF08BD10B500F08BF8FFF7D4
S31510002450C1FB0223034C2370FFF79EFE002323705B
S3151000246010BDC0465009002037B56B460E4CDD1D19
S31510002470201C291CFFF774FC012806D102220B4BE5
S315100024802978201C1A7000F095F8201C291CFFF7DB
S31510002490D5FE012806D10022044B2978201C1A707B
S315100024A000F088F837BDC046480C002050090020BF
S315100024B07047000070B5094D061C2B780C1C022BBA
S315100024C002D1C9B2FFF726FC2B78002B03D1E1B25B
S315100024D0301CFFF78BFE00F065F870BD5009002028
S315100024E0044B81201B78013BDBB2032B01D8024A37
S315100024F0D05C704750090020832C0010044B8120BB
S315100025001B78013BDBB2032B01D8024AD05C704723
S3151000251050090020872C001008B500F039F8431E2A
S315100025209841C0B208BD08B500F098F908BD08B5C5
S3151000253000F099F908BD0000FE22034B1A7058707E
S31510002540FC3A86331A807047CC0C0020021C437864
S31510002550180293781B04034310781843D3781B068C
S3151000256018437047094B0022191C81310A70191C37
S3151000257088310A60191C84310A70191C86310A8048
S31510002580191C823383310A701A707047CC0C0020E4
S31510002590034B81331878431E9841C0B27047C0462A
S315100025A0CC0C00200022024B84331A707047C046B0
S315100025B0CC0C0020F7B50378051CA04CFF2B1ED1C0
S315100025C0211C002282310A70211C012581312370C1
S315100025D0EF3B6370A2700D70FFF782FFE070FFF79C
S315100025E08DFF2071FFF78AFF231C0822000A86330D
S315100025F06071A571E5711A80FFF790FD07E1221C45
S3151000260081321678671C012E00D016E1F32B66D0A6
S3151000261021D8CF2B00D1EDE006D8C92B00D1A3E0ED
S31510002620CC2B00D1EEE0EFE0D12B00D1D5E000D2DB
S31510002630B0E0D22B00D0E7E00025FF2365702370B1
S31510002640A570FFF74DFF231CE07025716571A5710C
S3151000265086330722BFE0FA2B61D00ED8F52B15D0A2
S3151000266021D3F62B00D0CFE0FF2304302370FFF7E1
S315100026706DFF231C88331860C0E0FD2B5FD0FE2B46
S315100026806CD0FC2B00D0BFE00020BEE0FFF728FF87
S315100026906A78904201DC2220B7E0261C883692B276
S315100026A0381C31680DE0FFF71BFF6B789842F2DD9E
S315100026B0281D261CFFF74AFF88363060011C381C7F
S315100026C06A78FFF787FBFF2323706B7832689B18B5
S315100026D0221C33606B7886320133138097E0FF2318
S315100026E004302370FFF732FF231C002688331D6841
S315100026F04719BD4206D02B780135F618F6B2FFF70A
S3151000270016FFF6E701236370002326716371A37128
S31510002710E371A370E370231C082286335BE0FF236A
S315100027202370231C464A88331A60002307226370DD
S31510002730A370E37022716371A371E371EBE7FF235A
S31510002740221C23700023823263701278E370237187
S315100027506371231CA270863306223CE0002313709B
S31510002760221C8232137047E0271C88373B6801937E
S31510002770FFF7B6FE6A1C411E0198FFF7D3FC00282E
S3151000278040D0FF232370FFF7ABFE3B680138C0181B
S31510002790386033E0FFF7A4FE6B780138984200DC0E
S315100027A079E7FF232370231C86331E80697800295E
S315100027B004D1FFF7C7FC002829D123E0261C883650
S315100027C0AA1C3068FFF7AEFC00281BD06B78326865
S315100027D09B1833601BE01A8019E0231C04308833E1
S315100027E01F68FFF7B3FE011C381CFFF79FFC00287B
S315100027F002D107E0FFF7DAFAFF232370231C863392
S315100028001E8004E0312000E02020FFF795FE231CF7
S3151000281084331B78012B02D11020FFF78DFE231C69
S31510002820863319880BB2002B07DD231C0122843353
S3151000283089B2201C1A70FFF73DFEF7BDCC0C0020A4
S315100028408B2C001008B5044B00205B6A5B0702D581
S3151000285000F044F8012008BD0002044008B56420C9
S3151000286000F006F808BD08B500F014F808BD000021
S3151000287038B5064C051C0021201C8022FEF7DAFF15
S3151000288001236360024B1D8038BDC046000404401E
S315100028905C0D002010B5FFF779FD0C4C23689842AB
S315100028A013D30B4B012118780A4A002804D119704A
S315100028B080235B02536002E0002018705160FFF71E
S315100028C065FD054B1B88C018206010BD580D0020F3
S315100028D05E0D0020000404405C0D00200122014B17
S315100028E05A60704700040440F0B58BB00024FEF720
S315100028F0E7FBFFF791FD082308AA23480221089455
S3151000290054601370009401940294039404940594F3
S3151000291006940794FEF750FC6B461C4803216A4642
S315100029201C70FEF749FC9C2302AF3A1C1748022183
S315100029303B70FEF741FC50210727154B04AEDA69B0
S3151000294014488A43DA61DA694839BA43DA61321CC3
S315100029503470FEF731FCA42306AD0E4809212A1C5B
S315100029602B70FEF729FC402102200B4B1A680A43F4
S315100029701A60DA68BA430243DA601A688A431A6040
S31510002980FFF758FDFCE7C046000204400001044072
S3151000299000020048000404400003045030B585B01E
S315100029A06A46054B684632CB32C21B681360FEF787
S315100029B0CDFC05B030BDC046942C00100E4B70B542
S315100029C000251E1C0D4CE41AA410A54204D0AB0021
S315100029D0F35898470135F8E7FFF7F6F8084B002546
S315100029E01E1C084CE41AA410A54204D0AB00F358E0
S315100029F098470135F8E770BD5409002054090020A6
S31510002A005409002054090020003000100010000066
S31510002A100300000000400010001000000400000039
S31510002A2000500010001000000500000000600010AB
S31510002A3000100000060000000070001000100000DA
S31510002A4007000000008000100010000008000000C1
S31510002A5000900010001000000900000000A00010F7
S31510002A60001000000A00000000B000100010000066
S31510002A700B00000000C00010001000000C00000049
S31510002A8000D00010001000000D00000000E0001043
S31510002A90001000000E00000000F0001000100000F2
S31510002AA00F000000000001100010000010000000D0
S31510002AB0001001100010000011000000002001108D
S31510002AC0001000001200000000300110001000007D
S31510002AD01300000000400110001000001400000058
S31510002AE000500110001000001500000000600110D9
S31510002AF00010000016000000007001100010000009
S31510002B0017000000008001100010000018000000DF
S31510002B1000900110001000001900000000A0011024
S31510002B20001000001A00000000B001100010000094
S31510002B301B00000000C00110001000001C00000067
S31510002B4000D00110001000001D00000000E0011070
S31510002B50001000001E00000000F001100010000020
S31510002B601F000000000002100010000020000000EE
S31510002B7000100210001000002100000000200210BA
S31510002B8000100000220000000030021000100000AB
S31510002B902300000000400210001000002400000076
S31510002BA00050021000100000250000000060021006
S31510002BB00010000026000000007002100010000037
S31510002BC027000000008002100010000028000000FE
S31510002BD000900210001000002900000000A0021052
S31510002BE0001000002A00000000B0021000100000C3
S31510002BF02B00000000C00210001000002C00000086
S31510002C0000D00210001000002D00000000E002109D
S31510002C10001000002E00000000F00210001000004E
S31510002C202F0000000000031000100000300000000C
S31510002C3000100310001000003100000000200310E7
S31510002C400010000032000000433A2F576F726B2FAE
S31510002C50736F6674776172652F4F70656E424C5450
S31510002C602F5461726765742F536F757263652F41A8
S31510002C70524D434D305F584D43312F7273323332BC
S31510002C802E630000080000000800004F70656E42B9
S31510002C904C54000000000100000000030000010079
S30910002CA0000000001A
S31510002CA42C4800470000000000000000000000004F
S31510002CB400000000000000000000000000000000FA
S31510002CC42548004700000000000000002348004784
S31510002CD42348004723480047234800472348004712
S31510002CE42348004723480047234800472348004702
S31510002CF423480047234800472348004723480047F2
S31510002D0423480047A7100010A7100010A7100010A2
S31510002D14A7100010A7100010A7100010A71000107D
S31510002D24A7100010A7100010A7100010A71000106D
S31510002D34A7100010A7100010A7100010A71000105D
S31510002D44A7100010A7100010A7100010A71000104D
S31510002D54A7100010A7100010A7100010A71000103D
S31510002D0423480047234800472348004723480047E1
S31510002D1423480047234800472348004723480047D1
S31510002D2423480047234800472348004723480047C1
S31510002D3423480047234800472348004723480047B1
S31510002D4423480047234800472348004723480047A1
S31510002D5423480047A7100010A7100010A710001052
S31510002D64A7100010A7100010A7100010A71000102D
S31510002D74A7100010A7100010A7100010A71000101D
S31510002D84A7100010A7100010A7100010A71000100D
S30910002D94A71000105E
S30910002D98040000001D
S31510002D94A7100010A7100010A7100010A7100010FD
S31510002DA4A7100010A7100010A7100010A7100010ED
S31510002DB4A7100010A7100010A7100010A7100010DD
S31510002DC4A7100010A7100010A7100010A7100010CD
S31510002DD4A7100010A7100010A7100010A7100010BD
S30910002DE4A71000100E
S30910002DE805000000CC
S7051000101DBD

View File

@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.general.xcl" --backend -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.driver.xcl"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.general.xcl" --backend -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.driver.xcl"
@echo off
goto end
@ -34,7 +34,7 @@ goto end
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.driver.xcl"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\settings\xmc1400.Debug.driver.xcl"
@echo off
:end

View File

@ -6,7 +6,7 @@
"-p"
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\CONFIG\debugger\Infineon\XMC1404-Q064x0200.ddf"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\Infineon\XMC1404-Q064x0200.ddf"
"--semihosting"

View File

@ -1,14 +1,14 @@
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armPROC.dll"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armPROC.dll"
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armJLINK.dll"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armJLINK.dll"
"C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\..\bin\openblt_xmc1400.out"
--plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armbat.dll"
--plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armbat.dll"
--device_macro="C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\debugger\Infineon\XMC1x00.dmac"
--device_macro="C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm/config/debugger/Infineon/XMC1x00.dmac"
--flash_loader="C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\config\flashloader\Infineon\FlashXMC1000_200K.board"
--flash_loader="C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm/config/flashloader/Infineon/FlashXMC1000_200K.board"

File diff suppressed because one or more lines are too long

View File

@ -201,9 +201,18 @@
<ColumnWidth0>24</ColumnWidth0>
<ColumnWidth1>1863</ColumnWidth1>
<FilterLevel>2</FilterLevel>
<DebugLogLevel>2</DebugLogLevel>
<LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
<col-names>
<item>Log</item>
<item>_I0</item>
</col-names>
<col-widths>
<item>1870</item>
<item>20</item>
</col-widths>
</IarPane-34048>
<IarPane-34049>
<ToolBarCmdIds>
@ -267,7 +276,7 @@
</IarPane-34063>
<ControlBarVersion>
<Major>14</Major>
<Minor>32</Minor>
<Minor>36</Minor>
</ControlBarVersion>
<MFCToolBarParameters>
<Tooltips>1</Tooltips>
@ -277,16 +286,16 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>02000000050010860000010000000C8100000100000014810000010000000E810000010000004681000001000000</CommandsUsage>
<CommandsUsage>03000000050010860000010000000C8100000100000014810000010000000E810000020000004681000001000000</CommandsUsage>
</MFCToolBarParameters>
<CommandManager>
<CommandsWithoutImages>21000D8400000F84000008840000FFFFFFFF54840000328100001C8100000984000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D9200002CDE0000778400000784000086840000808C000044D50000</CommandsWithoutImages>
<MenuUserImages>1800048400004D000000318400005400000000900000580000000F81000026000000208100002E0000000C81000023000000068400004F000000038400004C0000000E840000510000003084000053000000449200000E0000001F9200000B0000000E810000250000001F8100002D0000000B810000220000002D9200000D000000058400004E000000D18400000A000000028400004B000000328400005500000010840000520000000D810000240000000A840000500000002C9200000C000000</MenuUserImages>
<MenuUserImages>1800048400004D0000003184000054000000208100002E0000000F8100002600000000900000580000000C81000023000000068400004F000000038400004C000000449200000E00000030840000530000000E840000510000001F8100002D0000000E810000250000001F9200000B0000002D9200000D0000000B8100001E000000D18400000A000000058400004E000000028400004B000000108400005200000032840000550000000A840000500000000D810000200000002C9200000C000000</MenuUserImages>
</CommandManager>
<Pane-59393>
<ID>0</ID>
<RectRecentFloat>0A0000000A0000006E0000006E000000</RectRecentFloat>
<RectRecentDocked>00000000F00300008007000003040000</RectRecentDocked>
<RectRecentDocked>00000000F20300008007000003040000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -312,8 +321,8 @@
<IarPane-34051 />
<Pane--1>
<ID>4294967295</ID>
<RectRecentFloat>00000000740300008007000025040000</RectRecentFloat>
<RectRecentDocked>000000003F03000080070000F0030000</RectRecentDocked>
<RectRecentFloat>00000000760300008007000027040000</RectRecentFloat>
<RectRecentDocked>000000004103000080070000F2030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -326,7 +335,7 @@
<Pane-34052>
<ID>34052</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -349,20 +358,20 @@
<item>_I0</item>
</col-names>
<col-widths>
<item>610</item>
<item>607</item>
<item>40</item>
<item>1220</item>
<item>1222</item>
<item>20</item>
</col-widths>
<BuildLogLevel>2</BuildLogLevel>
<LiveFile>C:\Work\software\OpenBLT\Target\Demo\ARMCM0_XMC1_XMC1400_Boot_Kit_IAR\Boot\ide\BuildLog.log</LiveFile>
<LiveFile>$WS_DIR$\BuildLog.log</LiveFile>
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34052>
<Pane-34048>
<ID>34048</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -375,7 +384,7 @@
<Pane-34056>
<ID>34056</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -389,7 +398,7 @@
<Pane-34057>
<ID>34057</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -403,7 +412,7 @@
<Pane-34058>
<ID>34058</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -417,7 +426,7 @@
<Pane-34059>
<ID>34059</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -431,7 +440,7 @@
<Pane-34062>
<ID>34062</ID>
<RectRecentFloat>000000003500000022010000E6000000</RectRecentFloat>
<RectRecentDocked>04000000570300007C070000D6030000</RectRecentDocked>
<RectRecentDocked>04000000590300007C070000D8030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -515,7 +524,7 @@
<Pane-34063>
<ID>34063</ID>
<RectRecentFloat>00000000350000000601000096010000</RectRecentFloat>
<RectRecentDocked>00000000320000008A0100003B030000</RectRecentDocked>
<RectRecentDocked>00000000320000008A0100003D030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -526,11 +535,11 @@
<IsVisible>1</IsVisible>
</BasePane-34063>
<DockingManager-256>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFF8A010000320000008E0100003B0300000100000002000010040000000100000091FFFFFF710600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF000000003B030000800700003F030000010000000100001004000000010000000000000000000000FFFFFFFF07000000048500000085000008850000098500000A8500000B8500000E850000FFFF02000B004354616262656450616E65008000000100000000000000740300008007000025040000000000003F03000080070000F0030000000000004080005607000000FFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0485000001000000FFFFFFFF04850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFF8A010000320000008E0100003D0300000100000002000010040000000100000091FFFFFF710600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF000000003D0300008007000041030000010000000100001004000000010000000000000000000000FFFFFFFF07000000048500000085000008850000098500000A8500000B8500000E850000FFFF02000B004354616262656450616E65008000000100000000000000760300008007000027040000000000004103000080070000F2030000000000004080005607000000FFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFF0485000001000000FFFFFFFF04850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
</DockingManager-256>
<MFCToolBar-34049>
<Name>CMSIS-Pack</Name>
<Buttons>00200000010000000100FFFF01001100434D4643546F6F6C426172427574746F6ED1840000020000000A000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B0018000000</Buttons>
<Buttons>00200000010000000100FFFF01001100434D4643546F6F6C426172427574746F6ED184000002000000DC000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF0A43004D005300490053002D005000610063006B0018000000</Buttons>
</MFCToolBar-34049>
<Pane-34049>
<ID>34049</ID>
@ -601,7 +610,7 @@
</IarPane-34064>
<MFCToolBar-34064>
<Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000036000000FFFEFF000000000000000000000000000100000001000000018001E100000000000037000000FFFEFF000000000000000000000000000100000001000000018003E100000000000039000000FFFEFF000000000000000000000000000100000001000000018000810000000000001D000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000003C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018025E100000000040040000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040043000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040044000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002F000000FFFEFF000000000000000000000000000100000001000000018024E10000000000003F000000FFFEFF000000000000000000000000000100000001000000018028E100000000040041000000FFFEFF000000000000000000000000000100000001000000018029E100000000000042000000FFFEFF000000000000000000000000000100000001000000018002810000000000001E000000FFFEFF0000000000000000000000000001000000010000000180298100000000000033000000FFFEFF0000000000000000000000000001000000010000000180278100000000000031000000FFFEFF0000000000000000000000000001000000010000000180288100000000000032000000FFFEFF00000000000000000000000000010000000100000001801D810000000000002B000000FFFEFF00000000000000000000000000010000000100000001801E810000000004002C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000200000022000000FFFEFF00000000000000000000000000010000000100000001800C8100000200000023000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000035000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000200000025000000FFFEFF00000000000000000000000000010000000100000001800F8100000200000026000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000000D010000FFFEFF000000000000000000000000000100000001000000018001E10000000000000E010000FFFEFF000000000000000000000000000100000001000000018003E100000000040010010000FFFEFF00000000000000000000000000010000000100000001800081000000000000ED000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040013010000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040015010000FFFEFF000000000000000000000000000100000001000000018022E100000000040014010000FFFEFF000000000000000000000000000100000001000000018025E100000000040016010000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040017010000FFFEFF00000000000000000000000000010000000100000001802CE100000000040018010000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01000D005061737465436F6D626F426F784281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF009600000000000000000001802181000000000400FF000000FFFEFF000000000000000000000000000100000001000000018024E100000000040008010000FFFEFF000000000000000000000000000100000001000000018028E100000000040007010000FFFEFF000000000000000000000000000100000001000000018029E100000000040009010000FFFEFF00000000000000000000000000010000000100000001800281000000000400EE000000FFFEFF0000000000000000000000000001000000010000000180298100000000040003010000FFFEFF0000000000000000000000000001000000010000000180278100000000040001010000FFFEFF0000000000000000000000000001000000010000000180288100000000040002010000FFFEFF00000000000000000000000000010000000100000001801D81000000000400FB000000FFFEFF00000000000000000000000000010000000100000001801E81000000000400FC000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B81000002000400F2000000FFFEFF00000000000000000000000000010000000100000001800C81000002000000F3000000FFFEFF00000000000000000000000000010000000100000001805F8600000200000006010000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E81000002000000F5000000FFFEFF00000000000000000000000000010000000100000001800F81000002000000F6000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34064>
<Pane-34064>
<ID>34064</ID>
@ -638,7 +647,7 @@
</ChildIdMap>
<MDIWindows>
<MDIClientArea-0>
<MDITabsState>01000000030000000100000000000000000000000100000001000000FFFFFFFF00000000010000000100000000000000280000002800000001000000010000000000000001000000FFFEFF122400570053005F0044004900520024005C002E002E005C006D00610069006E002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00330035003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0032003500300038003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0032003500300038003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF066D00610069006E002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000001000000020000008E010000670000008007000070030000</MDITabsState>
<MDITabsState>01000000030000000100000000000000000000000100000001000000FFFFFFFF00000000010000000100000000000000280000002800000001000000010000000000000001000000FFFEFF122400570053005F0044004900520024005C002E002E005C006D00610069006E002E00630001000000FFFF010017004966436F6E74656E7453746F726167654D6663496D706CFFFEFF00FFFEFFFF27013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E00330033003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0032003800320038003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0032003800320038003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF066D00610069006E002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000001000000020000008E010000670000008007000072030000</MDITabsState>
</MDIClientArea-0>
</MDIWindows>
</WindowStorage>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<fileVersion>3</fileVersion>
<fileVersion>4</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
@ -11,7 +11,7 @@
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>32</version>
<version>33</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -44,7 +44,7 @@
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\debugger\Infineon\XMC1404-Q064x0200.ddf</state>
<state>$TOOLKIT_DIR$\config\debugger\Infineon\XMC1404-Q064x0200.ddf</state>
</option>
<option>
<name>RunToEnable</name>
@ -88,7 +88,7 @@
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>9.10.2.39304</state>
<state>9.40.2.67586</state>
</option>
<option>
<name>UseFlashLoader</name>
@ -112,7 +112,7 @@
</option>
<option>
<name>FlashLoadersV3</name>
<state>$TOOLKIT_DIR$\config\flashloader\Infineon\FlashXMC1000_200K.board</state>
<state>$TOOLKIT_DIR$/config/flashloader/Infineon/FlashXMC1000_200K.board</state>
</option>
<option>
<name>OCImagesSuppressCheck1</name>
@ -222,6 +222,38 @@
<name>OCTpiuBaseOption</name>
<state>1</state>
</option>
<option>
<name>OCOverrideSlave</name>
<state>0</state>
</option>
<option>
<name>OCOverrideSlavePath</name>
<state></state>
</option>
<option>
<name>C_32_64Device</name>
<state>1</state>
</option>
<option>
<name>AuthEnable</name>
<state>0</state>
</option>
<option>
<name>AuthSdmSelection</name>
<state>1</state>
</option>
<option>
<name>AuthSdmManifest</name>
<state></state>
</option>
<option>
<name>AuthSdmExplicitLib</name>
<state></state>
</option>
<option>
<name>AuthEnforce</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
@ -457,6 +489,39 @@
</option>
</data>
</settings>
<settings>
<name>E2_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>E2PowerFromProbe</name>
<state>1</state>
</option>
<option>
<name>CE2UsbSerialNo</name>
<state></state>
</option>
<option>
<name>CE2IdCodeEditB</name>
<state>0xFFFF'FFFF'FFFF'FFFF'FFFF'FFFF'FFFF'FFFF</state>
</option>
<option>
<name>CE2LogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CE2LogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>GDBSERVER_ID</name>
<archiveVersion>2</archiveVersion>
@ -1072,7 +1137,7 @@
<name>STLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>7</version>
<version>8</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1187,9 +1252,17 @@
</option>
<option>
<name>CCSTLinkProbeList</name>
<version>1</version>
<version>2</version>
<state>2</state>
</option>
<option>
<name>CCSTLinkTargetVccEnable</name>
<state>1</state>
</option>
<option>
<name>CCSTLinkTargetVoltage</name>
<state>###Uninitialized###</state>
</option>
</data>
</settings>
<settings>
@ -1292,7 +1365,7 @@
<name>XDS100_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>8</version>
<version>9</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1417,7 +1490,7 @@
</option>
<option>
<name>CCXds100ResetList</name>
<version>0</version>
<version>1</version>
<state>0</state>
</option>
<option>
@ -1466,6 +1539,10 @@
<name>OCXDSDigitalStatesConfigFile</name>
<state>1</state>
</option>
<option>
<name>OCSelectedCoreName</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
@ -1502,17 +1579,25 @@
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin</file>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
@ -1537,7 +1622,7 @@
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>32</version>
<version>33</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -1748,6 +1833,38 @@
<name>OCTpiuBaseOption</name>
<state>1</state>
</option>
<option>
<name>OCOverrideSlave</name>
<state>0</state>
</option>
<option>
<name>OCOverrideSlavePath</name>
<state></state>
</option>
<option>
<name>C_32_64Device</name>
<state>1</state>
</option>
<option>
<name>AuthEnable</name>
<state>0</state>
</option>
<option>
<name>AuthSdmSelection</name>
<state>1</state>
</option>
<option>
<name>AuthSdmManifest</name>
<state></state>
</option>
<option>
<name>AuthSdmExplicitLib</name>
<state></state>
</option>
<option>
<name>AuthEnforce</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
@ -1983,6 +2100,39 @@
</option>
</data>
</settings>
<settings>
<name>E2_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>E2PowerFromProbe</name>
<state>1</state>
</option>
<option>
<name>CE2UsbSerialNo</name>
<state></state>
</option>
<option>
<name>CE2IdCodeEditB</name>
<state>0xFFFF'FFFF'FFFF'FFFF'FFFF'FFFF'FFFF'FFFF</state>
</option>
<option>
<name>CE2LogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CE2LogFileEditB</name>
<state>$PROJ_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>GDBSERVER_ID</name>
<archiveVersion>2</archiveVersion>
@ -2598,7 +2748,7 @@
<name>STLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>7</version>
<version>8</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -2713,9 +2863,17 @@
</option>
<option>
<name>CCSTLinkProbeList</name>
<version>1</version>
<version>2</version>
<state>2</state>
</option>
<option>
<name>CCSTLinkTargetVccEnable</name>
<state>1</state>
</option>
<option>
<name>CCSTLinkTargetVoltage</name>
<state>###Uninitialized###</state>
</option>
</data>
</settings>
<settings>
@ -2818,7 +2976,7 @@
<name>XDS100_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>8</version>
<version>9</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -2943,7 +3101,7 @@
</option>
<option>
<name>CCXds100ResetList</name>
<version>0</version>
<version>1</version>
<state>0</state>
</option>
<option>
@ -2992,6 +3150,10 @@
<name>OCXDSDigitalStatesConfigFile</name>
<state>1</state>
</option>
<option>
<name>OCSelectedCoreName</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
@ -3028,17 +3190,25 @@
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin</file>
<file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
<loadFlag>0</loadFlag>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<fileVersion>3</fileVersion>
<fileVersion>4</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
@ -11,7 +11,7 @@
<name>General</name>
<archiveVersion>3</archiveVersion>
<data>
<version>33</version>
<version>36</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -70,7 +70,7 @@
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>9.10.2.39304</state>
<state>9.40.2.67586</state>
</option>
<option>
<name>OGChipSelectEditMenu</name>
@ -98,7 +98,7 @@
</option>
<option>
<name>GBECoreSlave</name>
<version>30</version>
<version>33</version>
<state>34</state>
</option>
<option>
@ -115,7 +115,7 @@
</option>
<option>
<name>CoreVariant</name>
<version>30</version>
<version>33</version>
<state>34</state>
</option>
<option>
@ -138,7 +138,7 @@
</option>
<option>
<name>GFPUCoreSlave2</name>
<version>30</version>
<version>33</version>
<state>34</state>
</option>
<option>
@ -199,13 +199,30 @@
<name>OG_32_64Device</name>
<state>0</state>
</option>
<option>
<name>BuildFilesPath</name>
<state>Debug</state>
</option>
<option>
<name>PointerAuthentication</name>
<state>0</state>
</option>
<option>
<name>FPU64</name>
<state>1</state>
</option>
<option>
<name>OG_32_64DeviceCoreSlave</name>
<version>33</version>
<state>34</state>
</option>
</data>
</settings>
<settings>
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>37</version>
<version>38</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -453,13 +470,21 @@
<name>CCStackProtection</name>
<state>0</state>
</option>
<option>
<name>CCPointerAutentiction</name>
<state>0</state>
</option>
<option>
<name>CCBranchTargetIdentification</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>AARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>11</version>
<version>12</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -619,6 +644,10 @@
<name>PreInclude</name>
<state></state>
</option>
<option>
<name>A_32_64Device</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -661,19 +690,11 @@
<buildSequence>inputOutputBased</buildSequence>
</data>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>1</archiveVersion>
<data>
<prebuild></prebuild>
<postbuild></postbuild>
</data>
</settings>
<settings>
<name>ILINK</name>
<archiveVersion>0</archiveVersion>
<data>
<version>25</version>
<version>27</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
@ -1025,6 +1046,22 @@
<name>IlinkDemangle</name>
<state>0</state>
</option>
<option>
<name>IlinkWrapperFileEnable</name>
<state>0</state>
</option>
<option>
<name>IlinkWrapperFile</name>
<state></state>
</option>
<option>
<name>IlinkProcessor</name>
<state>1</state>
</option>
<option>
<name>IlinkFpuProcessor</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -1048,6 +1085,11 @@
</option>
</data>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>2</archiveVersion>
<data />
</settings>
</configuration>
<configuration>
<name>Release</name>
@ -1059,7 +1101,7 @@
<name>General</name>
<archiveVersion>3</archiveVersion>
<data>
<version>33</version>
<version>36</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -1118,7 +1160,7 @@
</option>
<option>
<name>OGLastSavedByProductVersion</name>
<state>7.40.5.9734</state>
<state>9.40.2.67586</state>
</option>
<option>
<name>OGChipSelectEditMenu</name>
@ -1146,7 +1188,7 @@
</option>
<option>
<name>GBECoreSlave</name>
<version>30</version>
<version>33</version>
<state>1</state>
</option>
<option>
@ -1163,7 +1205,7 @@
</option>
<option>
<name>CoreVariant</name>
<version>30</version>
<version>33</version>
<state>0</state>
</option>
<option>
@ -1186,7 +1228,7 @@
</option>
<option>
<name>GFPUCoreSlave2</name>
<version>30</version>
<version>33</version>
<state>0</state>
</option>
<option>
@ -1247,13 +1289,30 @@
<name>OG_32_64Device</name>
<state>0</state>
</option>
<option>
<name>BuildFilesPath</name>
<state>Release</state>
</option>
<option>
<name>PointerAuthentication</name>
<state>0</state>
</option>
<option>
<name>FPU64</name>
<state>1</state>
</option>
<option>
<name>OG_32_64DeviceCoreSlave</name>
<version>33</version>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ICCARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>37</version>
<version>38</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -1495,13 +1554,21 @@
<name>CCStackProtection</name>
<state>0</state>
</option>
<option>
<name>CCPointerAutentiction</name>
<state>0</state>
</option>
<option>
<name>CCBranchTargetIdentification</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>AARM</name>
<archiveVersion>2</archiveVersion>
<data>
<version>11</version>
<version>12</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -1661,6 +1728,10 @@
<name>PreInclude</name>
<state></state>
</option>
<option>
<name>A_32_64Device</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -1703,19 +1774,11 @@
<buildSequence>inputOutputBased</buildSequence>
</data>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>1</archiveVersion>
<data>
<prebuild></prebuild>
<postbuild></postbuild>
</data>
</settings>
<settings>
<name>ILINK</name>
<archiveVersion>0</archiveVersion>
<data>
<version>25</version>
<version>27</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
@ -2067,6 +2130,22 @@
<name>IlinkDemangle</name>
<state>0</state>
</option>
<option>
<name>IlinkWrapperFileEnable</name>
<state>0</state>
</option>
<option>
<name>IlinkWrapperFile</name>
<state></state>
</option>
<option>
<name>IlinkProcessor</name>
<state>1</state>
</option>
<option>
<name>IlinkFpuProcessor</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
@ -2090,6 +2169,11 @@
</option>
</data>
</settings>
<settings>
<name>BUILDACTION</name>
<archiveVersion>2</archiveVersion>
<data />
</settings>
</configuration>
<group>
<name>Boot</name>
@ -2353,6 +2437,9 @@
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\flash.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\mbrtu.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\nvm.c</name>
</file>
@ -2408,6 +2495,12 @@
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\file.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\mb.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\mb.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\net.c</name>
</file>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<fileVersion>3</fileVersion>
<fileVersion>4</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
@ -9,9 +9,9 @@
<debug>1</debug>
<settings>
<name>C-STAT</name>
<archiveVersion>515</archiveVersion>
<archiveVersion>517</archiveVersion>
<data>
<version>515</version>
<version>517</version>
<cstatargs>
<useExtraArgs>0</useExtraArgs>
<extraArgs></extraArgs>
@ -25,7 +25,7 @@
<outputDir>Debug\C-STAT</outputDir>
</cstatargs>
<cstat_settings>
<cstat_version>2.3.1</cstat_version>
<cstat_version>2.5.2</cstat_version>
<checks_tree>
<package enabled="true" name="STDCHECKS">
<group enabled="true" name="ARR">
@ -356,6 +356,7 @@
<check enabled="true" name="CERT-ERR30-C_b" />
<check enabled="true" name="CERT-ERR30-C_c" />
<check enabled="true" name="CERT-ERR30-C_d" />
<check enabled="true" name="CERT-ERR30-C_e" />
<check enabled="true" name="CERT-ERR32-C" />
<check enabled="true" name="CERT-ERR33-C_a" />
<check enabled="true" name="CERT-ERR33-C_b" />
@ -798,6 +799,7 @@
<check enabled="false" name="MISRAC2012-Dir-4.11_h" />
<check enabled="false" name="MISRAC2012-Dir-4.11_i" />
<check enabled="false" name="MISRAC2012-Dir-4.12" />
<check enabled="false" name="MISRAC2012-Dir-4.13_a" />
<check enabled="true" name="MISRAC2012-Dir-4.13_b" />
<check enabled="true" name="MISRAC2012-Dir-4.13_c" />
<check enabled="true" name="MISRAC2012-Dir-4.13_d" />
@ -830,6 +832,7 @@
<check enabled="true" name="MISRAC2012-Rule-1.3_i" />
<check enabled="true" name="MISRAC2012-Rule-1.3_j" />
<check enabled="true" name="MISRAC2012-Rule-1.3_k" />
<check enabled="true" name="MISRAC2012-Rule-1.3_l" />
<check enabled="true" name="MISRAC2012-Rule-1.3_m" />
<check enabled="true" name="MISRAC2012-Rule-1.3_n" />
<check enabled="true" name="MISRAC2012-Rule-1.3_o" />
@ -840,7 +843,8 @@
<check enabled="true" name="MISRAC2012-Rule-1.3_t" />
<check enabled="true" name="MISRAC2012-Rule-1.3_u" />
<check enabled="true" name="MISRAC2012-Rule-1.3_v" />
<check enabled="true" name="MISRAC2012-Rule-1.3_w" />
<check enabled="true" name="MISRAC2012-Rule-1.4_a" />
<check enabled="true" name="MISRAC2012-Rule-1.4_b" />
</group>
<group enabled="true" name="MISRAC2012-Rule-2">
<check enabled="true" name="MISRAC2012-Rule-2.1_a" />
@ -946,6 +950,7 @@
<check enabled="false" name="MISRAC2012-Rule-12.1" />
<check enabled="true" name="MISRAC2012-Rule-12.2" />
<check enabled="false" name="MISRAC2012-Rule-12.3" />
<check enabled="false" name="MISRAC2012-Rule-12.4" />
<check enabled="true" name="MISRAC2012-Rule-12.5" />
</group>
<group enabled="true" name="MISRAC2012-Rule-13">
@ -1063,6 +1068,7 @@
<check enabled="true" name="MISRAC2012-Rule-21.19_a" />
<check enabled="true" name="MISRAC2012-Rule-21.19_b" />
<check enabled="true" name="MISRAC2012-Rule-21.20" />
<check enabled="true" name="MISRAC2012-Rule-21.21" />
</group>
<group enabled="true" name="MISRAC2012-Rule-22">
<check enabled="true" name="MISRAC2012-Rule-22.1_a" />
@ -1428,9 +1434,9 @@
<debug>0</debug>
<settings>
<name>C-STAT</name>
<archiveVersion>515</archiveVersion>
<archiveVersion>517</archiveVersion>
<data>
<version>515</version>
<version>517</version>
<cstatargs>
<useExtraArgs>0</useExtraArgs>
<extraArgs></extraArgs>
@ -1444,7 +1450,7 @@
<outputDir>Release\C-STAT</outputDir>
</cstatargs>
<cstat_settings>
<cstat_version>2.3.1</cstat_version>
<cstat_version>2.5.2</cstat_version>
<checks_tree>
<package enabled="true" name="STDCHECKS">
<group enabled="true" name="ARR">
@ -1775,6 +1781,7 @@
<check enabled="true" name="CERT-ERR30-C_b" />
<check enabled="true" name="CERT-ERR30-C_c" />
<check enabled="true" name="CERT-ERR30-C_d" />
<check enabled="true" name="CERT-ERR30-C_e" />
<check enabled="true" name="CERT-ERR32-C" />
<check enabled="true" name="CERT-ERR33-C_a" />
<check enabled="true" name="CERT-ERR33-C_b" />
@ -2217,6 +2224,7 @@
<check enabled="false" name="MISRAC2012-Dir-4.11_h" />
<check enabled="false" name="MISRAC2012-Dir-4.11_i" />
<check enabled="false" name="MISRAC2012-Dir-4.12" />
<check enabled="false" name="MISRAC2012-Dir-4.13_a" />
<check enabled="true" name="MISRAC2012-Dir-4.13_b" />
<check enabled="true" name="MISRAC2012-Dir-4.13_c" />
<check enabled="true" name="MISRAC2012-Dir-4.13_d" />
@ -2249,6 +2257,7 @@
<check enabled="true" name="MISRAC2012-Rule-1.3_i" />
<check enabled="true" name="MISRAC2012-Rule-1.3_j" />
<check enabled="true" name="MISRAC2012-Rule-1.3_k" />
<check enabled="true" name="MISRAC2012-Rule-1.3_l" />
<check enabled="true" name="MISRAC2012-Rule-1.3_m" />
<check enabled="true" name="MISRAC2012-Rule-1.3_n" />
<check enabled="true" name="MISRAC2012-Rule-1.3_o" />
@ -2259,7 +2268,8 @@
<check enabled="true" name="MISRAC2012-Rule-1.3_t" />
<check enabled="true" name="MISRAC2012-Rule-1.3_u" />
<check enabled="true" name="MISRAC2012-Rule-1.3_v" />
<check enabled="true" name="MISRAC2012-Rule-1.3_w" />
<check enabled="true" name="MISRAC2012-Rule-1.4_a" />
<check enabled="true" name="MISRAC2012-Rule-1.4_b" />
</group>
<group enabled="true" name="MISRAC2012-Rule-2">
<check enabled="true" name="MISRAC2012-Rule-2.1_a" />
@ -2365,6 +2375,7 @@
<check enabled="false" name="MISRAC2012-Rule-12.1" />
<check enabled="true" name="MISRAC2012-Rule-12.2" />
<check enabled="false" name="MISRAC2012-Rule-12.3" />
<check enabled="false" name="MISRAC2012-Rule-12.4" />
<check enabled="true" name="MISRAC2012-Rule-12.5" />
</group>
<group enabled="true" name="MISRAC2012-Rule-13">
@ -2482,6 +2493,7 @@
<check enabled="true" name="MISRAC2012-Rule-21.19_a" />
<check enabled="true" name="MISRAC2012-Rule-21.19_b" />
<check enabled="true" name="MISRAC2012-Rule-21.20" />
<check enabled="true" name="MISRAC2012-Rule-21.21" />
</group>
<group enabled="true" name="MISRAC2012-Rule-22">
<check enabled="true" name="MISRAC2012-Rule-22.1_a" />
@ -3101,6 +3113,9 @@
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\flash.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\mbrtu.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM0_XMC1\nvm.c</name>
</file>
@ -3156,6 +3171,12 @@
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\file.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\mb.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\mb.h</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\Source\net.c</name>
</file>

View File

@ -1420,6 +1420,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\Source\mb.c</PathWithFileName>
<FilenameWithoutPath>mb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>101</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\Source\mb.h</PathWithFileName>
<FilenameWithoutPath>mb.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -1430,7 +1454,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>102</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1442,7 +1466,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>101</FileNumber>
<FileNumber>103</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1454,7 +1478,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>102</FileNumber>
<FileNumber>104</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1466,7 +1490,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>103</FileNumber>
<FileNumber>105</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1478,7 +1502,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>104</FileNumber>
<FileNumber>106</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1490,7 +1514,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>105</FileNumber>
<FileNumber>107</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1502,7 +1526,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>106</FileNumber>
<FileNumber>108</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1514,7 +1538,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>107</FileNumber>
<FileNumber>109</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1526,7 +1550,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>108</FileNumber>
<FileNumber>110</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1536,6 +1560,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>111</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\..\..\Source\ARMCM0_XMC1\mbrtu.c</PathWithFileName>
<FilenameWithoutPath>mbrtu.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>

View File

@ -898,6 +898,16 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\xcp.h</FilePath>
</File>
<File>
<FileName>mb.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\mb.c</FilePath>
</File>
<File>
<FileName>mb.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\mb.h</FilePath>
</File>
</Files>
</Group>
<Group>
@ -948,6 +958,11 @@
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\ARMCM0_XMC1\Keil\cpu_comp.c</FilePath>
</File>
<File>
<FileName>mbrtu.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\ARMCM0_XMC1\mbrtu.c</FilePath>
</File>
</Files>
</Group>
</Groups>

View File

@ -0,0 +1,540 @@
/************************************************************************************//**
* \file Source/ARMCM0_XMC1/mbrtu.c
* \brief Bootloader Modbus RTU communication interface source file.
* \ingroup Target_ARMCM0_XMC1
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2023 by Feaser http://www.feaser.com All rights reserved
*
*----------------------------------------------------------------------------------------
* L I C E N S E
*----------------------------------------------------------------------------------------
* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You have received a copy of the GNU General Public License along with OpenBLT. It
* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
#if (BOOT_COM_MBRTU_ENABLE > 0)
#include "xmc_uart.h" /* UART driver header */
/****************************************************************************************
* Macro definitions
****************************************************************************************/
/** \brief Timeout for transmitting a byte in milliseconds. */
#define MBRTU_BYTE_TX_TIMEOUT_MS (10u)
/** \brief Macro for accessing the UART channel handle in the format that is expected
* by the XMClib UART driver.
*/
#define MBRTU_CHANNEL ((XMC_USIC_CH_t *)(mbrtuChannelMap[BOOT_COM_MBRTU_CHANNEL_INDEX]))
/****************************************************************************************
* Local constant declarations
****************************************************************************************/
/** \brief Helper array to quickly convert the channel index, as specific in the boot-
* loader's configuration header, to the associated channel handle that the
* XMClib's UART driver requires.
*/
static const XMC_USIC_CH_t *mbrtuChannelMap[] =
{
XMC_UART0_CH0, /* BOOT_COM_MBRTU_CHANNEL_INDEX = 0 */
XMC_UART0_CH1, /* BOOT_COM_MBRTU_CHANNEL_INDEX = 1 */
XMC_UART1_CH0, /* BOOT_COM_MBRTU_CHANNEL_INDEX = 2 */
XMC_UART1_CH1 /* BOOT_COM_MBRTU_CHANNEL_INDEX = 3 */
};
/****************************************************************************************
* Local data declarations
****************************************************************************************/
/** \brief Stores the number of free running counter ticks that represents the 3.5
* character delay time (T3_5) for Modbus RTU.
*/
static blt_int16u mbRtuT3_5Ticks;
/****************************************************************************************
* Function prototypes
****************************************************************************************/
static blt_bool MbRtuReceiveByte(blt_int8u *data);
static void MbRtuTransmitByte(blt_int8u data, blt_bool end_of_packet);
/************************************************************************************//**
** \brief Initializes the Modbus RTU communication interface.
** \attention It is the application's responsibility to initialize a timer peripheral
** to have an upwards counting free running counter, which runs at 100 kHz.
** \return none.
**
****************************************************************************************/
void MbRtuInit(void)
{
blt_int16u startTimeTicks;
blt_int16u deltaTimeTicks;
blt_int16u currentTimeTicks;
blt_int8u rxDummy;
XMC_UART_CH_CONFIG_t uart_config;
/* the current implementation supports XMC_UART0_CH0 to XMC_UART1_CH1. throw an
* assertion error in case a different UART channel is configured.
*/
ASSERT_CT((BOOT_COM_MBRTU_CHANNEL_INDEX >= 0) && (BOOT_COM_MBRTU_CHANNEL_INDEX <= 3));
/* calculate the 3.5 character delay time in free running counter ticks. note that
* the free running counter runs at 100 kHz, so one tick is 10 us. For baudrates >
* 19200 bps, it can be fixed to 1750 us.
*/
if (BOOT_COM_MBRTU_BAUDRATE > 19200)
{
/* set T3_5 time to a fixed value of 1750 us. */
mbRtuT3_5Ticks = 175;
}
/* calculate the T3_5 time, because the baudrate is <= 19200 bps. */
else
{
/* T3_5 [us * 10] = 3.5 * Tchar = 3.5 * 11 * 100000 / baudrate = 3850000 / baudrate.
* make sure to do integer round up though. Make sure to add 1 to adjust for 10us
* timer resolution inaccuracy.
*/
mbRtuT3_5Ticks = (blt_int16u)(((3850000UL + (BOOT_COM_MBRTU_BAUDRATE - 1U)) /
BOOT_COM_MBRTU_BAUDRATE) + 1);
}
/* set configuration and initialize UART channel */
uart_config.baudrate = BOOT_COM_MBRTU_BAUDRATE;
uart_config.data_bits = 8;
uart_config.frame_length = 8;
uart_config.stop_bits = BOOT_COM_MBRTU_STOPBITS;
uart_config.oversampling = 16;
uart_config.parity_mode = XMC_USIC_CH_PARITY_MODE_NONE;
/* odd parity enabled? */
#if (BOOT_COM_MBRTU_PARITY == 1)
uart_config.parity_mode = XMC_USIC_CH_PARITY_MODE_ODD;
#endif
/* even parity enabled? */
#if (BOOT_COM_MBRTU_PARITY == 2)
uart_config.parity_mode = XMC_USIC_CH_PARITY_MODE_EVEN;
#endif
XMC_UART_CH_Init(MBRTU_CHANNEL, &uart_config);
/* configure small transmit and receive FIFO */
XMC_USIC_CH_TXFIFO_Configure(MBRTU_CHANNEL, 16U, XMC_USIC_CH_FIFO_SIZE_16WORDS, 1U);
XMC_USIC_CH_RXFIFO_Configure(MBRTU_CHANNEL, 0U, XMC_USIC_CH_FIFO_SIZE_16WORDS, 1U);
/* configure RCIM bits to make sure it detects the parity error (PERR) as RCI[4]. */
MBRTU_CHANNEL->RBCTR |= USIC_CH_RBCTR_RCIM_Msk;
/* start UART */
XMC_UART_CH_Start(MBRTU_CHANNEL);
/* enable the receiver output to be able to receive. */
MbRtuDriverOutputControlHook(BLT_FALSE);
/* wait for idle line detection. This is T3_5 time after reception of the last byte. */
startTimeTicks = MbRtuFreeRunningCounterGet();
do
{
/* service the watchdog. */
CopService();
/* get the current value of the free running counter. */
currentTimeTicks = MbRtuFreeRunningCounterGet();
/* check if a byte was received while waiting for the idle line. */
if (MbRtuReceiveByte(&rxDummy) == BLT_TRUE)
{
/* restart the idle line detection. */
startTimeTicks = currentTimeTicks;
}
/* calculate the number of ticks that elapsed since the start or since the last
* byte reception. Note that this calculation works, even if the free running counter
* overflowed.
*/
deltaTimeTicks = currentTimeTicks - startTimeTicks;
}
while (deltaTimeTicks < mbRtuT3_5Ticks);
} /*** end of MbRtuInit ***/
/************************************************************************************//**
** \brief Transmits a packet formatted for the communication interface.
** \param data Pointer to byte array with data that it to be transmitted.
** \param len Number of bytes that are to be transmitted.
** \return none.
**
****************************************************************************************/
void MbRtuTransmitPacket(blt_int8u *data, blt_int8u len)
{
blt_int16u data_index;
blt_int16u checksum;
blt_bool endOfPacket = BLT_FALSE;
/* Made static to lower stack load and +5 for Modbus RTU packet overhead. */
static blt_int8u txPacket[BOOT_COM_MBRTU_TX_MAX_DATA + 5];
/* On Modbus RTU, there must always be a T3_5 time separation between packet trans-
* missions.
*
* This bootloader uses XCP packets embedded in Modbus RTU packets. The XCP
* communication is always request / response based. That means that this packet is
* a response packet and it will only be sent, after the reception of a request packet.
*
* A response packet is only deemed valid, after the T3_5 idle time. This module
* implements the T3_5 end-of-packet time event detection. Consequently, it is already
* guaranteed that there is T3_5 between subsequent packet transmissions. As such, no
* further T3_5 wait time is needed here.
*/
/* verify validity of the len-parameter */
ASSERT_RT(len <= BOOT_COM_MBRTU_TX_MAX_DATA);
/* construct the Modbus RTU packet. start by adding the slave address. */
txPacket[0] = BOOT_COM_MBRTU_NODE_ID;
/* add the user-defined function code for embedding XCP packets. */
txPacket[1] = BOOT_COM_MBRTU_FCT_CODE_USER_XCP;
/* add the XCP packet length. */
txPacket[2] = len;
/* copy the XCP packet data. */
CpuMemCopy((blt_int32u)&txPacket[3], (blt_int32u)data, len);
/* calculate the checksum for the packet, including slave address, function code and
* extra XCP length.
*/
checksum = MbRtuCrcCalculate(&txPacket[0], len + 3);
/* add the checksum at the end of the packet */
txPacket[len + 3] = (blt_int8u)(checksum & 0xff);
txPacket[len + 4] = (blt_int8u)(checksum >> 8);
/* enable the driver output to be able to send. just make sure to wait a little around
* the togglng of the DE/NRE pin.
*/
MbRtuDelay(BOOT_COM_MBRTU_DRIVER_OUTPUT_ENABLE_DELAY_US);
MbRtuDriverOutputControlHook(BLT_TRUE);
MbRtuDelay(BOOT_COM_MBRTU_DRIVER_OUTPUT_ENABLE_DELAY_US);
/* transmit all the packet bytes one-by-one */
for (data_index = 0; data_index < (len + 5); data_index++)
{
/* keep the watchdog happy */
CopService();
/* last byte of the packet? */
if (data_index == ((len + 5) - 1))
{
/* update the end of packet flag. */
endOfPacket = BLT_TRUE;
}
/* write byte */
MbRtuTransmitByte(txPacket[data_index], endOfPacket);
}
/* enable the receiver output to be able to receive again. just make sure to wait a
* little around the togglng of the DE/NRE pin.
*/
MbRtuDelay(BOOT_COM_MBRTU_DRIVER_OUTPUT_DISABLE_DELAY_US);
MbRtuDriverOutputControlHook(BLT_FALSE);
MbRtuDelay(BOOT_COM_MBRTU_DRIVER_OUTPUT_DISABLE_DELAY_US);
} /*** end of MbRtuTransmitPacket ***/
/************************************************************************************//**
** \brief Receives a communication interface packet if one is present.
** \param data Pointer to byte array where the data is to be stored.
** \param len Pointer where the length of the packet is to be stored.
** \return BLT_TRUE if a packet was received, BLT_FALSE otherwise.
**
****************************************************************************************/
blt_bool MbRtuReceivePacket(blt_int8u *data, blt_int8u *len)
{
blt_bool result = BLT_FALSE;
blt_int8u rxByte;
blt_int16u currentTimeTicks;
blt_int16u deltaTimeTicks;
blt_int16u checksumCalculated;
blt_int16u checksumReceived;
/* Made static to lower stack load and +5 for Modbus RTU packet overhead. */
static blt_int8u rxPacket[BOOT_COM_MBRTU_RX_MAX_DATA + 5];
static blt_int8u rxLength = 0;
static blt_bool packetRxInProgress = BLT_FALSE;
static blt_int16u lastRxByteTimeTicks = 0;
/* get the current value of the free running counter. */
currentTimeTicks = MbRtuFreeRunningCounterGet();
/* check for a newly received byte. */
if (MbRtuReceiveByte(&rxByte) == BLT_TRUE)
{
/* store the time at which the byte was received. */
lastRxByteTimeTicks = currentTimeTicks;
/* is this the potential start of a new packet? */
if (packetRxInProgress == BLT_FALSE)
{
/* initialize the reception of a new packet. */
rxLength = 0;
packetRxInProgress = BLT_TRUE;
}
/* store the newly received byte in the buffer, with buffer overrun protection. */
if (rxLength < (sizeof(rxPacket)/sizeof(rxPacket[0])))
{
rxPacket[rxLength] = rxByte;
rxLength++;
}
/* buffer overrun occurred. received packet was longer than supported so discard
* the packet to try and sync to the next one.
*/
else
{
/* discard the partially received packet. */
packetRxInProgress = BLT_FALSE;
}
}
/* only attempt to detect the end of packet, when a reception is in progress. */
if (packetRxInProgress == BLT_TRUE)
{
/* calculate the number of ticks that elapsed since the last byte reception. note
* that this calculation works, even if the free running counter overflowed.
*/
deltaTimeTicks = currentTimeTicks - lastRxByteTimeTicks;
/* packet reception is assumed complete after T3_5 of not receiving new data. */
if (deltaTimeTicks >= mbRtuT3_5Ticks)
{
/* a Modbus RTU packet consists of at least the address field, function code and
* 16-bit CRC. Validate the packet length based on this info.
*/
if (rxLength >= 4)
{
/* calculate the packet checksum. */
checksumCalculated = MbRtuCrcCalculate(&rxPacket[0], rxLength - 2);
/* extract the checksum received with the packet. */
checksumReceived = rxPacket[rxLength - 2] | (rxPacket[rxLength - 1] << 8);
/* only continue with packet processing if the checksums match. */
if (checksumCalculated == checksumReceived)
{
/* we are only interested in Modbus RTU packets that are addressed to us and
* have an XCP packet embedded.
*/
if ( (rxPacket[0] == BOOT_COM_MBRTU_NODE_ID) &&
(rxPacket[1] == BOOT_COM_MBRTU_FCT_CODE_USER_XCP) )
{
/* An XCP packet embedded in a Modbus RTU packet has an extra XCP packet
* length value. Use it to double-check that the packet length is valid.
*/
if (rxPacket[2] == (rxLength - 5))
{
/* copy the packet's XCP data. */
CpuMemCopy((blt_int32u)data, (blt_int32u)&rxPacket[3], rxLength - 5);
/* set the packet's XCP length. */
*len = rxLength - 5;
/* update the result to success to indicate that this XCP packet is ready
* for processing.
*/
result = BLT_TRUE;
}
}
}
}
/* reset the packet reception in progress flag, to be able to receive the next. */
packetRxInProgress = BLT_FALSE;
}
}
/* give the result back to the caller. */
return result;
} /*** end of MbRtuReceivePacket ***/
/************************************************************************************//**
** \brief Receives a communication interface byte if one is present.
** \param data Pointer to byte where the data is to be stored.
** \return BLT_TRUE if a byte was received, BLT_FALSE otherwise.
**
****************************************************************************************/
static blt_bool MbRtuReceiveByte(blt_int8u *data)
{
blt_bool result = BLT_FALSE;
blt_int32u data_and_status;
/* wait for the reception of a new byte. */
if (XMC_USIC_CH_RXFIFO_IsEmpty(MBRTU_CHANNEL) == 0)
{
/* update the result */
result = BLT_TRUE;
/* read out the newly received data, including its PERR status flags */
data_and_status = MBRTU_CHANNEL->OUTR;
/* check for a frame error. the frame error check is important because it can detect
* a missing stopbit. on an RS485 bus without bias resistors, the A-B differential
* voltage is 0. for an RS485 transceiver this is neither a 0 nor a 1 bit, so
* undefined. most RS485 transceivers feature a reception failsafe function to drive
* the Rx output (going to the UART Rx) to a defined state of logic 1. in case the
* used RS485 transceiver doesn't have such a feature, it typically leaves the Rx
* output in a logic 0 state. this means that after the stop bit of the last packet
* byte, the UART Rx input sees a logic 0, and assumes it is a start bit. the
* remaining data bits will always be 0 and, most importantly no stop bit is
* present, causing a framing error. Long story short: if you don't check for the
* framing error flag, you might receive an extra byte with value 0, which is not
* actually transmitted on the RS485 bus. you can catch and ignore this byte by doing
* a frame error check.
*/
if( (XMC_UART_CH_GetStatusFlag(MBRTU_CHANNEL) &
(XMC_UART_CH_STATUS_FLAG_FORMAT_ERROR_IN_STOP_BIT_0 |
XMC_UART_CH_STATUS_FLAG_FORMAT_ERROR_IN_STOP_BIT_1)) != 0)
{
/* clear the error flags. */
XMC_UART_CH_ClearStatusFlag(MBRTU_CHANNEL,
XMC_UART_CH_STATUS_FLAG_FORMAT_ERROR_IN_STOP_BIT_0 |
XMC_UART_CH_STATUS_FLAG_FORMAT_ERROR_IN_STOP_BIT_1);
/* ignore the byte because of a detected frame error. */
result = BLT_FALSE;
}
#if (BOOT_COM_MBRTU_PARITY > 0)
/* check if a parity error was detected (PERR is RCI[4]). */
if ((data_and_status & 0x00100000UL) != 0)
{
/* ignore the byte because of a detected parity error. */
result = BLT_FALSE;
}
#endif
/* store the newly received byte by casting it to exclude the status flags. */
*data = (blt_int8u)data_and_status;
}
/* give the result back to the caller */
return result;
} /*** end of MbRtuReceiveByte ***/
/************************************************************************************//**
** \brief Transmits a communication interface byte.
** \param data Value of byte that is to be transmitted.
** \param end_of_packet BLT_TRUE if this is the last byte of the packet, BLT_FALSE
** otherwise.
** \return none.
**
****************************************************************************************/
static void MbRtuTransmitByte(blt_int8u data, blt_bool end_of_packet)
{
blt_int32u timeout;
/* clear the status flag that indicates that a frame (byte) finished transmission. */
XMC_UART_CH_ClearStatusFlag(MBRTU_CHANNEL, XMC_UART_CH_STATUS_FLAG_TRANSMITTER_FRAME_FINISHED);
/* submit data for transmission. it will be placed in the Tx FIFO and will
* automatically be moved to the transmit shift register, when this one is no longer
* busy.
*/
XMC_UART_CH_Transmit(MBRTU_CHANNEL, data);
/* set timeout time to wait for transmit completion. */
timeout = TimerGet() + MBRTU_BYTE_TX_TIMEOUT_MS;
/* not the last byte of the packet? */
if (end_of_packet == BLT_FALSE)
{
/* wait for the Tx FIFO fill level to be below its configured limit of 1. this
* means the Tx FIFO is empty and the to-be-transmitted byte is now in the transmit
* shift register.
*/
while( (XMC_USIC_CH_TXFIFO_GetEvent(MBRTU_CHANNEL) & XMC_USIC_CH_TXFIFO_EVENT_STANDARD) == 0)
{
/* keep the watchdog happy. */
CopService();
/* break loop upon timeout. this would indicate a hardware failure. */
if (TimerGet() > timeout)
{
break;
}
}
/* reset event */
XMC_USIC_CH_TXFIFO_ClearEvent(MBRTU_CHANNEL, XMC_USIC_CH_TXFIFO_EVENT_STANDARD);
}
/* this is the last byte of a packet. */
else
{
/* wait for transmit frame finished flag to be set, indicating that the last byte has
* left the transmit shift register, including the stopbit(s). this is needed for the
* last byte, otherwise the transceiver's transmit output gets disabled with
* MbRtuDriverOutputControlHook() before the byte reception completes.
*/
while( (XMC_UART_CH_GetStatusFlag(MBRTU_CHANNEL) & XMC_UART_CH_STATUS_FLAG_TRANSMITTER_FRAME_FINISHED) == 0)
{
/* keep the watchdog happy. */
CopService();
/* break loop upon timeout. this would indicate a hardware failure. */
if (TimerGet() > timeout)
{
break;
}
}
}
} /*** end of MbRtuTransmitByte ***/
/************************************************************************************//**
** \brief Obtains the counter value of the 100 kHz free running counter. Note that
** each count represent 10 us. The Modbus RTU communication module uses this
** free running counter for Modbus RTU packet timing related purposes. The
** already available 1 ms timer does not have the needed resolution for this
** purpose.
** \return Current value of the free running counter.
**
****************************************************************************************/
blt_int16u MbRtuFreeRunningCounterGet(void)
{
static blt_bool initialized = BLT_FALSE;
static blt_int32u counts_per_ten_us = 0;
static blt_int32u free_running_counter_last = 0;
static blt_int16u ten_us_tick_counter = 0;
blt_int32u free_running_counter_now;
blt_int32u delta_counts;
blt_int32u ten_us_ticks;
/* perform one-time initialization.*/
if (initialized == BLT_FALSE)
{
/* set the flag to make sure that this part only runs once. */
initialized = BLT_TRUE;
/* calculate how many counts of the SysTick's free running counter equals 10us,
* because one count of a 100 kHz counter equals that. Note that the timer module
* already initialized and enable the SysTick.
*/
counts_per_ten_us = SystemCoreClock / 100000U;
/* initialize current value of the timer's free running counter. */
free_running_counter_last = (SysTick->VAL & SysTick_VAL_CURRENT_Msk);
}
/* get the current value of the free running counter. */
free_running_counter_now = (SysTick->VAL & SysTick_VAL_CURRENT_Msk);
/* Calculate the number of counts that passed since the detection of the last
* millisecond event. Keep in mind that the SysTick has a down-counting 24-bit free
* running counter. Note that this calculation also works, in case the free running
* counter overflowed, thanks to integer math.
*/
delta_counts = free_running_counter_last - free_running_counter_now;
delta_counts &= SysTick_VAL_CURRENT_Msk;
/* did one or more ten microsecond counts pass since the last event? */
if (delta_counts >= counts_per_ten_us)
{
/* calculate how many ten microsecond counts passed. */
ten_us_ticks = delta_counts / counts_per_ten_us;
/* update the counter. */
ten_us_tick_counter += ten_us_ticks;
/* store the counter value of the last event to detect the next one. */
free_running_counter_last -= (ten_us_ticks * counts_per_ten_us);
free_running_counter_last &= SysTick_VAL_CURRENT_Msk;
}
/* return the current value of the 100 kHz free running counter to the caller. */
return ten_us_tick_counter;
} /*** end of MbRtuFreeRunningCounterGet ***/
#endif /* BOOT_COM_MBRTU_ENABLE > 0 */
/*********************************** end of mbrtu.c ************************************/

View File

@ -30,10 +30,10 @@
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
#if (BOOT_COM_RS232_ENABLE > 0)
#include "xmc_uart.h" /* UART driver header */
#if (BOOT_COM_RS232_ENABLE > 0)
/****************************************************************************************
* Macro definitions
****************************************************************************************/
@ -83,8 +83,8 @@ void Rs232Init(void)
{
XMC_UART_CH_CONFIG_t uart_config;
/* the current implementation supports XMC_UART0_CH0 to XMC_UART2_CH1. throw an
* assertion error in case a different CAN channel is configured.
/* the current implementation supports XMC_UART0_CH0 to XMC_UART1_CH1. throw an
* assertion error in case a different UART channel is configured.
*/
ASSERT_CT((BOOT_COM_RS232_CHANNEL_INDEX >= 0) && (BOOT_COM_RS232_CHANNEL_INDEX <= 3));

View File

@ -30,29 +30,7 @@
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
/****************************************************************************************
* Type definitions
****************************************************************************************/
/** \brief Systick registers. */
typedef struct
{
volatile blt_int32u CTRL; /**< SysTick Control and Status Register */
volatile blt_int32u LOAD; /**< SysTick Reload Value Register */
volatile blt_int32u VAL; /**< SysTick Current Value Register */
} tSysTickRegs;
/****************************************************************************************
* Macro definitions
****************************************************************************************/
/** \brief CLKSOURCE bit of the system tick. */
#define SYSTICK_BIT_CLKSOURCE ((blt_int32u)0x00000004)
/** \brief ENABLE bit of the system tick. */
#define SYSTICK_BIT_ENABLE ((blt_int32u)0x00000001)
/** \brief COUNTERFLAG bit of the system tick. */
#define SYSTICK_BIT_COUNTERFLAG ((blt_int32u)0x00010000)
#include "xmc_common.h" /* common vendor library definitions */
/****************************************************************************************
@ -63,31 +41,41 @@ typedef struct
*/
static blt_int32u millisecond_counter;
/** \brief Buffer for storing the last value of the free running counter. */
static blt_int32u free_running_counter_last;
/****************************************************************************************
* Register definitions
****************************************************************************************/
/** \brief Macro to access the system tick registers. */
#define SYSTICK ((tSysTickRegs *) (blt_int32u)0xE000E010)
/** \brief Stores the number of counts of the free running counter that equals one
* millisecond.
*/
static blt_int32u counts_per_millisecond;
/************************************************************************************//**
** \brief Initializes the polling based millisecond timer driver.
** \details Ideally a 100 kHz free running counter is used as the foundation for the
** timer modules, as this gives 10us ticks that can be reused by other
** modules. The XMC1 timers unfortunately do not offer a flexible prescaler
** for their timers to realize such a 100 kHz free running counter. For this
** reason, the SysTick counter is used instead. Its 24-bit free running
** down-counter runs at the system speed.
** \return none.
**
****************************************************************************************/
void TimerInit(void)
{
/* reset the timer configuration */
/* Reset the timer configuration. */
TimerReset();
/* configure the systick frequency as a 1 ms event generator */
SYSTICK->LOAD = BOOT_CPU_SYSTEM_SPEED_KHZ - 1;
/* reset the current counter value */
SYSTICK->VAL = 0;
/* select core clock as source and enable the timer */
SYSTICK->CTRL = SYSTICK_BIT_CLKSOURCE | SYSTICK_BIT_ENABLE;
/* reset the millisecond counter value */
/* Configure the reload value such that the full 24-bit range is used. */
SysTick->LOAD = (0xFFFFFFFFUL & SysTick_LOAD_RELOAD_Msk);
/* Reset the current counter value. */
SysTick->VAL = 0UL;
/* Select core clock as source and enable the timer. */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
/* Calculate how many counts equal 1 millisecond. */
counts_per_millisecond = SystemCoreClock/1000U;
/* Initialize remaining locals. */
millisecond_counter = 0;
free_running_counter_last = (SysTick->VAL & SysTick_VAL_CURRENT_Msk);
} /*** end of TimerInit ***/
@ -99,11 +87,11 @@ void TimerInit(void)
****************************************************************************************/
void TimerReset(void)
{
/* set the systick's registers back into the default reset value */
SYSTICK->CTRL = 0;
SYSTICK->LOAD = 0;
SYSTICK->VAL = 0;
} /* end of TimerReset */
/* Set the systick's registers back into the default reset value. */
SysTick->CTRL = 0UL;
SysTick->LOAD = 0UL;
SysTick->VAL = 0UL;
} /*** end of TimerReset ***/
/************************************************************************************//**
@ -113,11 +101,30 @@ void TimerReset(void)
****************************************************************************************/
void TimerUpdate(void)
{
/* check if the millisecond event occurred */
if ((SYSTICK->CTRL & SYSTICK_BIT_COUNTERFLAG) != 0)
blt_int32u free_running_counter_now;
blt_int32u delta_counts;
blt_int32u ms_counts;
/* Get the current value of the free running counter. */
free_running_counter_now = (SysTick->VAL & SysTick_VAL_CURRENT_Msk);
/* Calculate the number of counts that passed since the detection of the last
* millisecond event. Keep in mind that the SysTick has a down-counting 24-bit free
* running counter. Note that this calculation also works, in case the free running
* counter overflowed, thanks to integer math.
*/
delta_counts = free_running_counter_last - free_running_counter_now;
delta_counts &= SysTick_VAL_CURRENT_Msk;
/* Did one or more milliseconds pass since the last event? */
if (delta_counts >= counts_per_millisecond)
{
/* increment the millisecond counter */
millisecond_counter++;
/* Calculate how many milliseconds passed. */
ms_counts = delta_counts / counts_per_millisecond;
/* Update the millisecond counter. */
millisecond_counter += ms_counts;
/* Store the counter value of the last millisecond event, to detect the next one. */
free_running_counter_last -= (ms_counts * counts_per_millisecond);
free_running_counter_last &= SysTick_VAL_CURRENT_Msk;
}
} /*** end of TimerUpdate ***/
@ -129,11 +136,11 @@ void TimerUpdate(void)
****************************************************************************************/
blt_int32u TimerGet(void)
{
/* updating timer here allows this function to be called in a loop with timeout
/* Updating timer here allows this function to be called in a loop with timeout
* detection.
*/
TimerUpdate();
/* read and return the amount of milliseconds that passed since initialization */
/* Read and return the amount of milliseconds that passed since initialization. */
return millisecond_counter;
} /*** end of TimerGet ***/