- added CAN support for HCS12.

git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@61 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
Frank Voorburg 2013-09-24 13:54:15 +00:00
parent adb4e6e943
commit ba2ce9232b
17 changed files with 1541 additions and 784 deletions

View File

@ -1,142 +1,150 @@
S0720000433A5C576F726B5C736F6674776172655C4F70656E424C545C5461726765745C44656D6F5C48435331325F457662706C75735F447261676F6E3132705F436F646557617272696F725C426F6F745C62696E5C6F70656E626C745F657662706C75735F647261676F6E3132702E61627366
S2240FE800FEE833FDE831270E35ED31EC3169700434FB310326F2FEE835EC31270BED311818
S2240FE8200A30700434F920F13DCF390007D206E9B70001E837F8C3390004FC4F70656E422C
S2240FE8200A30700434F920F13DCF390007D206E9DA0001E837F9D2390004494F70656E42AC
S2240FE8404C5400000C000000004000000C400000004000000C800000004000000CC0000094
S2240FE860004000000D000000004000000D400000004000000D800000004000000DC00000D0
S2240FE880004000000E000000004000000E400000004000000E800000004000000EC00000AC
S2240FE8A0004000000F000000004000000F400000004000000F800000004000000FC0000088
S2240FE8C0000800000FC80000000800000FD00000000800000FD80000000800000FE0000078
S2240FE8E00008003634CE01001A0586806A00A7A7A7A70F0040FC30323D433A5C576F726B32
S2240FE9005C736F6674776172655C4F70656E424C545C5461726765745C44656D6F5C4843C1
S2240FE9205331325F457662706C75735F447261676F6E3132705F436F646557617272696FF2
S2240FE940725C426F6F745C6D61696E2E6300433A5C576F726B5C736F6674776172655C4FC1
S2240FE96070656E424C545C5461726765745C536F757263655C48435331325C666C617368C7
S2240FE9802E6300433A5C576F726B5C736F6674776172655C4F70656E424C545C54617267D5
S2240FE9A065745C536F757263655C48435331325C756172742E630016E9C216EA7D16EA8C8D
S2240FE9C020FB1B99698214104D398069816980E68087CD1F40C3000118133BE68387C30076
S2240FE9E00116F8B73B34EC84B76516F8A96C876E858C5DC01B822609046506C6016B8220ED
S2240FEA00286280E680C13F23C6E6820401086281E681C10F23B7E68204010ECCE8F93BC6F7
S2240FEA207A87B70516F78F1B82E6805B34E6815B354F3708FC4C39801B873DC6017B3900F7
S2240FEA4016F5177C39037E390106EA4C16EAD704012AF6390004212416F5173BFC3903C3FE
S2240FEA600032B746FC3901C9008900353BEC8416F7C51B82250679390016EEA03D16EADBE3
S2240FEA8016F4BF16F48516EA9806EA3B16EADC16F4F816EAB106EA4CC6FF6BAE698116EAB4
S2240FEAA0DD16F520F63905042105B77416EAFF3A3DCC390616F597042106CC390616EAFF59
S2240FEAC03D3D3BEC843BE68316F5393A16EAFB3A3DC6017B39053D16EAF23D3D3DC7877C39
S2240FEAE0398E7C398C7B39897C398A7B39487C39463DF6394626013DC6013D7939893D3BBA
S2240FEB0036B745E600C1FF2607B75416EC492055B639460420CDC1FE2244C1F3250EC1F628
S2240FEB202221C0F38716F8BE4D3F3846C1CC6B802526C1D22222C0CC8716F8BE7F868678F2
S2240FEB4063716AC1FA6B80250FC1FE220BC0FA8716F8BE296F30373EE680C1C9273A206280
S2240FEB60EC8116ECDD2060EC8116ED2B2059EC8116ECC32052EC8116ED80204BEC8116EC33
S2240FEB80A12044EC8116EC9D203DEC8116EC832036EC8116EC73202FB75416EDC52028EC73
S2240FEBA08116EE082021EC8116EDAC201AEC8116EE632013EC8116EE8D200CEC8116EE9BE0
S2240FEBC02005C62016EC39F63989042105C61016EC39C6017B3989CC39493BFC398A16EB9B
S2240FEBE0E61B821B833D3BEC843BEC8216EAC21B843D6CAD69822013EE8BE600EB826B82C1
S2240FEC00EE89EC8B16F7DE6C8B6E89EC87EE85343B16F7E36C8B6E89C7873B3BEC84EE863E
S2240FEC2016F7C51B8426D1E68287EE806C02C76C00521B833D7939473D37C6FE7B394932CD
S2240FEC407A394A50877C398A3D07EACCFF017B3946C77C39491C394A107B394B1C394B0185
S2240FEC6086407C394C527C394E7B3950CE00087E398A3D79394607BDC6FF7B394950877C3B
S2240FEC80398A3D86FFC77C3949F639477B394BC7877C394C7B394EC6067C398A3DC706EC4F
S2240FECA0391803E83B398EC7877C398C437C3949877C394BC6077C394FC77C394DC6087CC7
S2240FECC0398A3D3BC6FF7B3949EE80EC047C398CEC067C398EC601877C398A3A3D3B36B723
S2240FECE045E601C13F2307C62216EC39203ACD394A356B82C7873BFD398E35FD398C35E65C
S2240FED008816EEB81B88C6FF7B3949EE81E60187B745F3398E7C398ECC0000F9398DB939E3
S2240FED208C7C398C087E398A1B833D3BB745E601C13F2307C62216EC392043ED047D398CCD
S2240FED4037EC067C398ECC394A3BC7873BFC398E3B35E6888716EEB81B88C6FF7B3949EEE9
S2240FED6081E60187B745F3398E7C398ECC0000F9398DB9398C7C398C087E398A1B813A3DF1
S2240FED803BC6FF7B3949FC398E3BFC398C3BEE84EC063BEC043BCC394D16EBF27B394AC794
S2240FEDA0877C394BC6087C398A1B8A3D86FFC77C3949CE00407E394B877C394D7B394FC61D
S2240FEDC0077C398A3D3BFC398E3BFC398C3BC63F873BC73BEC88C3000116F4881B880461CC
S2240FEDE007C63116EC39201EC6FF7B3949FC398EC3003F7C398EFC398CC90089007C398C6A
S2240FEE00C601877C398A3A3D3BB745E601C13E2304C622203086FF7A3949CD00017D398ACF
S2240FEE2004610816F4B40461382018FD398E35FD398C35873BC73B1902B7C616F4881B883D
S2240FEE40046107C63116EC392017EE80E60187F3398E7C398ECC0000F9398DB9398C7C3932
S2240FEE608C3A3D3BFC398E3BFC398C3BEE84EC06EE0416F49E1B84046107C63116EC3920EB
S2240FEE800AC6FF7B394950877C398A3A3D16EEDFC6FF7B394950877C398A3DC63106EC39EB
S2240FEEA03B16F4B004410F16EAC116F4DCFCE7FE6C8015F300003A3D6CACEC8C6C82EE880E
S2240FEEC0200DED82E6306B706D823416EADC30ED80341A5F6E828D00003026E61B843D06AD
S2240FEEE0F60C1B9D6982CCFF016B81507C39927C39907C3B967C3B941C010303F60103C44C
S2240FEF0003527B3DAE1D0103E36980E68087B745E68108B75613B745CC1F4018151AE16905
S2240FEF208E00302212E681C1082605A6808A408FA6807A0100201C6280E680C13F23CCE6F7
S2240FEF408204010FCCE94E3BCC017CCE000016F78F1B821B833D1B983BFCE843ACF01022BB
S2240FEF60442608FCE845ACF012223AECF012E38E3BEC8EE9F013A9F012B7453A16F7E33BCC
S2240FEF80FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DFB7D43BEC8216F7E33B34EC88EE8416F71F
S2240FEFA0C51B862303C72061FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC828302006C888F
S2240FEFC03AC20082006C84EDF014EEF012C60916F7B4B746C60916F7A36C8A6E88EE86342E
S2240FEFE0ACB3260BEC86AC822605CC3B942003CC39903BEEF01434EEF01434EE8634ECF044
S2240FF00016EEF01416F2AE1B881B8A3D1B943B34EDF014EEF012C60916F7B4B746C6091628
S2240FF020F7A36C8E6E8CBEE84318250099FCE843AC8C2607FCE845AC8E2238ECF014E382D1
S2240FF0403BEC82E9F015A9F014B7453A16F7E33BFCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3F
S2240FF060B7D43BEC8216F7E33B34EC88EE8416F7C51B862251ECF014A38E3BECF014E28F60
S2240FF080A28E3BEC82E3866C8C3AE983A9826C88C609EE88ED8A16F7B46C86EC8A84018C67
S2240FF0A000001B822705EE84086E846D8A202E16EADCC64037EC8F3BEC8F3BCC55AA16F468
S2240FF0C0311B85046103C7201CEC8EC302006C8EEC8CC90089006C8CEE8A086E8AEC8AAC4B
S2240FF0E08425CCC6011BF0103DC7876CACFE3B9604A509FE3B9404A503522051CE01806E88
S2240FF100828737E383B745E6E23B9887E3816C813352C18025EB61816180EE80086E80FCCD
S2240FF120E8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC82830082B7453AC2008200343BC602A0
S2240FF140873BC73B1A8AB75416EF561B8A1B843D1B96C7876C88FCE8DDF3E8E13BFCE8DBE2
S2240FF160F9E8E0B9E8DF3BEC828300826C863AC20082006C82FCE8DDF3E8E16C80FCE8DB06
S2240FF180F9E8E0B9E8DF3BEC828300806C8A3AC20082006C86C71B828737E3873BCC000075
S2240FF1A0E988A987B7453A16F3E387E3896C893352C18025E3EC82EE8016F3E3B710C73B31
S2240FF1C0EC84EE8216F7DE16F3E387E380E38A1B822603C60121C71B8A3DFC3B9604A4063B
S2240FF1E0FC3B94048409CC3B9416F36B044115FC399204A406FC399004840BCC399016F3CB
S2240FF2006B046102C73DC752C11625FBC6013D6CAD348401044403C72043EE87EC02AC8218
S2240FF2202606EC00AC802733EC806C00EC826C02D6306B84EC82EE8016F4005B30EE871A73
S2240FF2400434C7873BEC86EE8416F40C3BC7873B860216EEB81B88E6845B30C6011B853D9B
S2240FF2603B34EC868C3B942607CC39906C862027FCE8DDAC822618FCE8DBAC802611CC3BED
S2240FF280946C86FEE8DD6E82FEE8DB6E802008EC8616F36B04410FEC863BEC84EE8216F27B
S2240FF2A00F1B82046103C7878FEC861B843D1B983B34EDF012EEF010C60916F7B4B746C6A9
S2240FF2C00916F7A36C866E84EEF014EC0204A412EC0004A40D34EC88EE8616F20F1B82046E
S2240FF2E04160EEF014EC02AC862606EC00AC84270F34EC88EE8616F2601B826CF0142742CF
S2240FF300EEF014ECF012A3021A041AE66E88EC8E6C8A16EADCEEF0141904EC8835A3B18C5C
S2240FF3200200252634EC88C30200B745EC86C9008900B746B754B76516F2601B826CF014A6
S2240FF3402603C72023C300046C88EE8AE630ED886B706D886E8AEC82EE8016F7E36C826EB8
S2240FF360800474AE26ACC6011B8C3D1B973BC6016B8AEE80EC0204A408EC0004A403C72023
S2240FF3805FC7876C88EC8859B746EE80E3026C84CC0000E901A9006C82B75419EEEC446CB0
S2240FF3A08616EADCC62037EC853BEE8534EC8B16F4311B85044119EC84EE8216F3E3E18684
S2240FF3C0260EEC84EE8216F7DE16F3E3E1872704698A200AEE88086E888E010025A7E68A3F
S2240FF3E01B8B3D3B34D63037EC8316F4005B30EC83EE8116F40CB745E600325A301B843DF8
S2240FF4003B34C60EED8216F7B41B843D843FC380003D3BC787B74537E6E2E8E36BE23D98D5
S2240FF4203352C11625EECC3D986C8015F300003A3D6CAC6982D6306B83EC88EE8607C15B3B
S2240FF440301D010303545451C403FA01037B0103C6307B0105B6010584808180261EEC8817
S2240FF460EE8607A8EE80B7466E40E68A7B010607A11F010530022004C6016B82E6835B307F
S2240FF480E6821B843D06EEE23BEC8A3BEC8A3BEC8A3BEC8A3BEC8816EF561B88303D3B34F1
S2240FF4A0EC883BEC883BEC8616F00C1B841B843D16F1503D16F0E90461013D16F1DA3D1681
S2240FF4C0F4DC4C4001C6015B4EDC44C35DC05C504C4680C7877C3DB17C3DAF3D79004C79F2
S2240FF4E0004679004D79004079004779004879004979004A79004B3D4F4E011AC6015B4E04
S2240FF500DC50C35DC05C50FC3DB1FE3DAF16F7DE7C3DB17E3DAF3D07DFFC3DB1FE3DAF3D58
S2240FF5207900CB7900CA7900C87900C9C61A873B5AC85BC94CCB0C3A3D6BADC140230ECC15
S2240FF540E9833BC68887B70516F78F1B82E68016F5F804010ECCE9833BC68B87B70516F796
S2240FF5608F1B82C7876C81202416EADCEC85E381B745E60016F5F804010ECCE9833BC69357
S2240FF58087B70516F78F1B82EE81086E81E68087AC8122D51B833D3BF63DB32614CC3DB471
S2240FF5A016F5E7042108C6017B3DB3793DF5C72034F63DF587C3000187C33DB416F5E7047C
S2240FF5C031EC723DF5F63DF5F13DB426E1EE8034C7873BCE3DB5343BF63DF516EEB81B8864
S2240FF5E0793DB3C601303D3B4FCC2009D6CFEE806B00C60121C7303D4ECC8002C73D5BCF77
S2240FF600200316EADC4FCC80F9C6013DCF390016E82906E9B7FEE78005003DFEE782050057
S2240FF6203DFEE78405003DFEE78605003DFEE78805003DFEE78A05003DFEE78C05003DFE10
S2240FF640E78E05003DFEE79005003DFEE79205003DFEE79405003DFEE79605003DFEE7987A
S2240FF66005003DFEE79A05003DFEE79C05003DFEE79E05003DFEE7A005003DFEE7A2050098
S2240FF6803DFEE7A405003DFEE7A605003DFEE7A805003DFEE7AA05003DFEE7AC05003DFE10
S2240FF6A0E7AE05003DFEE7B005003DFEE7B205003DFEE7B405003DFEE7B605003DFEE7B85A
S2240FF6C005003DFEE7BA05003DFEE7BC05003DFEE7BE05003DFEE7C005003DFEE7C2050098
S2240FF6E03DFEE7C405003DFEE7C605003DFEE7C805003DFEE7CA05003DFEE7CC05003DFE10
S2240FF700E7CE05003DFEE7D005003DFEE7D205003DFEE7D405003DFEE7D605003DFEE7D839
S2240FF72005003DFEE7DA05003DFEE7DC05003DFEE7DE05003DFEE7E005003DFEE7E2050097
S2240FF7403DFEE7E405003DFEE7E605003DFEE7E805003DFEE7EA05003DFEE7EC05003DFE0F
S2240FF760E7EE05003DFEE7F005003DFEE7F205003DFEE7F405003DFEE7F605003DFEE7F819
S2240FF78005003DFEE7FA05003DFEE7FC05003D3B34EC867C3DF6EC827E3DF87C3DFA16EA6B
S2240FF7A0DC20FB87D7B7C6270A59B7C55545B7C50436F63D87D7B7C6270AB7C549B7C54647
S2240FF7C0560436F63DAC84270E34B7C5E285A284B7C510FB302002AE82311B84054004A4EA
S2240FF7E001083D046401098300013D87C76C82EC8C261FEE8EED86EC8811280DEC86CD009B
S2240FF80000116D82B746EC88116D846C8887C76C863D972709EE86B7C5CD00002008EE8DC9
S2240FF820E686ED87B7C61135ECF010133B35ECF012ED8413E3B130B7C5CD0000356581A365
S2240FF8408CB7C5E28BA28A310446113669AF3137323433EEF01011B76532201F252A0464D5
S2240FF86003044539E78E2706EE8E87C7200BB7C5363469AFEEF013313A1810083A34A3B10C
S2240FF880B74620A33102209F4151B7C5415104A40108AE8E22EE2505ACF01024E7316D8402
S2240FF8A0698369826C886E863D3B341B9C16F7EB30ECB5EDB505403BB704B7053A3D30E623
S2090FF8C0E605E500005F
S2100FFEF0CF390016E82916EAD106E9B74C
S2240FFF80F615F61BF621F627F62DF633F639F63FF645F64BF651F657F65DF663F669F66FCD
S2240FFFA0F675F67BF681F687F68DF693F699F69FF6A5F6ABF6B1F6B7F6BDF6C3F6C9F6CFAD
S2240FFFC0F6D5F6DBF6E1F6E7F6EDF6F3F6F9F6FFF705F70BF711F717F71DF723F729F72F85
S2240FFFE0F735F73BF741F747F74DF753F759F75FF765F76BF771F777F77DF783F789F60CE1
S2240FE8E00008003634CE01001A0586806A00A7A7A7A70F0040FC30323D050206020603078F
S2240FE900030803090309040A040B040C040C050D050E050F050F06100610071008433A5C12
S2240FE920576F726B5C736F6674776172655C4F70656E424C545C5461726765745C44656D54
S2240FE9406F5C48435331325F457662706C75735F447261676F6E3132705F436F6465576138
S2240FE9607272696F725C426F6F745C6D61696E2E6300433A5C576F726B5C736F6674776167
S2240FE98072655C4F70656E424C545C5461726765745C536F757263655C48435331325C66CD
S2240FE9A06C6173682E6300433A5C576F726B5C736F6674776172655C4F70656E424C545C9B
S2240FE9C05461726765745C536F757263655C48435331325C63616E2E630016E9E516EAA0AF
S2240FE9E016EAAF20FB1B99698214104D398069816980E68087CD1F40C3000118133BE683F1
S2240FEA0087C3000116F9C63B34EC84B76516F9B86C876E858C5DC01B822609046506C6016F
S2240FEA206B8220286280E680C13F23C6E6820401086281E681C10F23B7E68204010ECCE9C3
S2240FEA401D3BC67587B70516F6C41B82E6805B34E6815B354F3708FC4C39801B873DC6013E
S2240FEA607B390016F5387C39037E390106EA6F16EAFA04012AF6390004212416F5383BFCA1
S2240FEA803903C30032B746FC3901C9008900353BEC8416F8D41B82250679390016EEC13D6E
S2240FEAA016EAFE16F4E016F4A616EABB06EA5E16EAFF16F51916EAD406EA6FC6FF6BAE6904
S2240FEAC08116EB0016F6D8F63905042105B77416EB223A3DCC390616F7C5042106CC390686
S2240FEAE016EB223D3D3BEC843BE68316F7743A16EB1E3A3DC6017B39053D16EB153D3D3D3B
S2240FEB00C7877C391E7C391C7B39197C391A7B39107C390E3DF6390E26013DC6013D793938
S2240FEB20193D3B36B745E600C1FF2607B75416EC6C2055B6390E0420CDC1FE2244C1F32551
S2240FEB400EC1F62221C0F38716F9CD4D3F3846C1CC6B802526C1D22222C0CC8716F9CD7F71
S2240FEB6086867863716AC1FA6B80250FC1FE220BC0FA8716F9CD296F30373EE680C1C92788
S2240FEB803A2062EC8116ECFF2060EC8116ED4D2059EC8116ECE52052EC8116EDA2204BEC52
S2240FEBA08116ECC32044EC8116ECBF203DEC8116ECA52036EC8116EC95202FB75416EDE65B
S2240FEBC02028EC8116EE292021EC8116EDCE201AEC8116EE842013EC8116EEAE200CEC81A6
S2240FEBE016EEBC2005C62016EC5CF63919042105C61016EC5CC6017B3919CC39113BFC3918
S2240FEC001A16EC091B821B833D3BEC843BEC8216EAE51B843D6CAD69822013EE8BE600EBAD
S2240FEC20826B82EE89EC8B16F8ED6C8B6E89EC87EE85343B16F8F26C8B6E89C7873B3BEC87
S2240FEC4084EE8616F8D41B8426D1E68287EE806C02C76C00521B833D79390F3D37C6FE7B91
S2240FEC603911327A391250877C391A3D07EACCFF017B390EC77C39111C3912107B39131CF6
S2240FEC8039130186087C3914527C39167B3918B7047C391A3D79390E07BEC6FF7B391150AD
S2240FECA0877C391A3D86FFC77C3911F6390F7B3913C7877C39147B3916C6067C391A3DC716
S2240FECC006EC5C1803E83B391EC7877C391C437C3911877C3913C6077C3917C77C3915C6D6
S2240FECE0087C391A3D3BC6FF7B3911EE80EC047C391CEC067C391EC601877C391A3A3D3B64
S2240FED0036B745E601C1072307C62216EC5C203ACD3912356B82C7873BFD391E35FD391C96
S2240FED2035E68816EED91B88C6FF7B3911EE81E60187B745F3391E7C391ECC0000F9391D01
S2240FED40B9391C7C391C087E391A1B833D3BB745E601C1072307C62216EC5C2043ED047DE5
S2240FED60391C37EC067C391ECC39123BC7873BFC391E3B35E6888716EED91B88C6FF7B39A2
S2240FED8011EE81E60187B745F3391E7C391ECC0000F9391DB9391C7C391C087E391A1B81E9
S2240FEDA03A3D3BC6FF7B3911FC391E3BFC391C3BEE84EC063BEC043BCC391516EC157B393A
S2240FEDC012C7877C3913C6087C391A1B8A3D86FFC77C3911CE00087E3913877C39157B39C1
S2240FEDE017097E391A3D3BFC391E3BFC391C3BC607873BC73BEC88C3000116F4A91B880459
S2240FEE006107C63116EC5C201EC6FF7B3911FC391EC300077C391EFC391CC90089007C3911
S2240FEE201CC601877C391A3A3D3BB745E601C1062304C622203086FF7A3911CD00017D39FD
S2240FEE401A04610816F4D50461382018FD391E35FD391C35873BC73B1902B7C616F4A91B29
S2240FEE6088046107C63116EC5C2017EE80E60187F3391E7C391ECC0000F9391DB9391C7C60
S2240FEE80391C3A3D3BFC391E3BFC391C3BEE84EC06EE0416F4BF1B84046107C63116EC5CBE
S2240FEEA0200AC6FF7B391150877C391A3A3D16EF00C6FF7B391150877C391A3DC63106EC12
S2240FEEC05C3B16F4D104410F16EAE416F4FDFCE7FE6C8015F300003A3D6CACEC8C6C82EEB5
S2240FEEE088200DED82E6306B706D823416EAFF30ED80341A5F6E828D00003026E61B843DE8
S2240FEF0006F5411B9D6982CCFF016B81507C39227C39207C3B267C3B241C010303F6010375
S2240FEF20C403527B3D3E1D0103E36980E68087B745E68108B75613B745CC1F4018151AE1FA
S2240FEF40698E00302212E681C1082605A6808A408FA6807A0100201C6280E680C13F23CC54
S2240FEF60E68204010FCCE9723BCC017CCE000016F6C41B821B833D1B983BFCE843ACF0107F
S2240FEF8022442608FCE845ACF012223AECF012E38E3BEC8EE9F013A9F012B7453A16F8F2B5
S2240FEFA03BFCE8DDF3E8E13BFCE8DBF9E8E0B9E8DFB7D43BEC8216F8F23B34EC88EE8416AB
S2240FEFC0F8D41B862303C72061FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC828302006CF0
S2240FEFE0883AC20082006C84EDF014EEF012C60916F8C3B746C60916F8B26C8A6E88EE869A
S2240FF00034ACB3260BEC86AC822605CC3B242003CC39203BEEF01434EEF01434EE8634ECBF
S2240FF020F016EEF01416F2CF1B881B8A3D1B943B34EDF014EEF012C60916F8C3B746C609FD
S2240FF04016F8B26C8E6E8CBEE84318250099FCE843AC8C2607FCE845AC8E2238ECF014E30D
S2240FF060823BEC82E9F015A9F014B7453A16F8F23BFCE8DDF3E8E13BFCE8DBF9E8E0B9E86C
S2240FF080DFB7D43BEC8216F8F23B34EC88EE8416F8D41B862251ECF014A38E3BECF014E2D0
S2240FF0A08FA28E3BEC82E3866C8C3AE983A9826C88C609EE88ED8A16F8C36C86EC8A840134
S2240FF0C08C00001B822705EE84086E846D8A202E16EAFFC64037EC8F3BEC8F3BCC55AA168D
S2240FF0E0F4521B85046103C7201CEC8EC302006C8EEC8CC90089006C8CEE8A086E8AEC8AC2
S2240FF100AC8425CCC6011BF0103DC7876CACFE3B2604A509FE3B2404A503522051CE018009
S2240FF1206E828737E383B745E6E23B2887E3816C813352C18025EB61816180EE80086E80AB
S2240FF140FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC82830082B7453AC2008200343BC686
S2240FF16002873BC73B1A8AB75416EF771B8A1B843D1B96C7876C88FCE8DDF3E8E13BFCE87A
S2240FF180DBF9E8E0B9E8DF3BEC828300826C863AC20082006C82FCE8DDF3E8E16C80FCE8E6
S2240FF1A0DBF9E8E0B9E8DF3BEC828300806C8A3AC20082006C86C71B828737E3873BCC007A
S2240FF1C000E988A987B7453A16F40487E3896C893352C18025E3EC82EE8016F404B710C708
S2240FF1E03BEC84EE8216F8ED16F40487E380E38A1B822603C60121C71B8A3DFC3B2604A424
S2240FF20006FC3B24048409CC3B2416F38C044115FC392204A406FC392004840BCC392016A6
S2240FF220F38C046102C73DC752C11625FBC6013D6CAD348401044403C72043EE87EC02AC66
S2240FF240822606EC00AC802733EC806C00EC826C02D6306B84EC82EE8016F4215B30EE87CA
S2240FF2601A0434C7873BEC86EE8416F42D3BC7873B860216EED91B88E6845B30C6011B855C
S2240FF2803D3B34EC868C3B242607CC39206C862027FCE8DDAC822618FCE8DBAC802611CCAB
S2240FF2A03B246C86FEE8DD6E82FEE8DB6E802008EC8616F38C04410FEC863BEC84EE821661
S2240FF2C0F2301B82046103C7878FEC861B843D1B983B34EDF012EEF010C60916F8C3B7462C
S2240FF2E0C60916F8B26C866E84EEF014EC0204A412EC0004A40D34EC88EE8616F2301B825B
S2240FF300044160EEF014EC02AC862606EC00AC84270F34EC88EE8616F2811B826CF01427CB
S2240FF32042EEF014ECF012A3021A041AE66E88EC8E6C8A16EAFFEEF0141904EC8835A3B163
S2240FF3408C0200252634EC88C30200B745EC86C9008900B746B754B76516F2811B826CF0ED
S2240FF360142603C72023C300046C88EE8AE630ED886B706D886E8AEC82EE8016F8F26C82E2
S2240FF3806E800474AE26ACC6011B8C3D1B973BC6016B8AEE80EC0204A408EC0004A403C7B5
S2240FF3A0205FC7876C88EC8859B746EE80E3026C84CC0000E901A9006C82B75419EEEC44DC
S2240FF3C06C8616EAFFC62037EC853BEE8534EC8B16F4521B85044119EC84EE8216F404E118
S2240FF3E086260EEC84EE8216F8ED16F404E1872704698A200AEE88086E888E010025A7E6F1
S2240FF4008A1B8B3D3B34D63037EC8316F4215B30EC83EE8116F42DB745E600325A301B8448
S2240FF4203D3B34C60EED8216F8C31B843D843FC380003D3BC787B74537E6E2E8E36BE23D00
S2240FF440283352C11625EECC3D286C8015F300003A3D6CAC6982D6306B83EC88EE8607C1BE
S2240FF4605B301D010303545451C403FA01037B0103C6307B0105B6010584808180261EEC24
S2240FF48088EE8607A8EE80B7466E40E68A7B010607A11F010530022004C6016B82E6835B07
S2240FF4A030E6821B843D06EF033BEC8A3BEC8A3BEC8A3BEC8A3BEC8816EF771B88303D3B92
S2240FF4C034EC883BEC883BEC8616F02D1B841B843D16F1713D16F10A0461013D16F1FB3DBE
S2240FF4E016F4FD4C4001C6015B4EDC44C35DC05C504C4680C7877C3D417C3D3F3D79004CF4
S2240FF50079004679004D79004079004779004879004979004A79004B3D4F4E011AC6015BB8
S2240FF5204EDC50C35DC05C50FC3D41FE3D3F16F8ED7C3D417E3D3F3D07DFFC3D41FE3D3FB7
S2240FF5403DCF390016E82906E9DAFEE78005003DFEE78205003DFEE78405003DFEE78605F7
S2240FF560003DFEE78805003DFEE78A05003DFEE78C05003DFEE78E05003DFEE79005003DBB
S2240FF580FEE79205003DFEE79405003DFEE79605003DFEE79805003DFEE79A05003DFEE7C1
S2240FF5A09C05003DFEE79E05003DFEE7A005003DFEE7A205003DFEE7A405003DFEE7A605A9
S2240FF5C0003DFEE7A805003DFEE7AA05003DFEE7AC05003DFEE7AE05003DFEE7B005003DBB
S2240FF5E0FEE7B205003DFEE7B405003DFEE7B605003DFEE7B805003DFEE7BA05003DFEE7C1
S2240FF600BC05003DFEE7BE05003DFEE7C005003DFEE7C205003DFEE7C405003DFEE7C60588
S2240FF620003DFEE7C805003DFEE7CA05003DFEE7CC05003DFEE7CE05003DFEE7D005003DBA
S2240FF640FEE7D205003DFEE7D405003DFEE7D605003DFEE7D805003DFEE7DA05003DFEE7C0
S2240FF660DC05003DFEE7DE05003DFEE7E005003DFEE7E205003DFEE7E405003DFEE7E60568
S2240FF680003DFEE7E805003DFEE7EA05003DFEE7EC05003DFEE7EE05003DFEE7F005003DBA
S2240FF6A0FEE7F205003DFEE7F405003DFEE7F605003DFEE7F805003DFEE7FA05003DFEE7C0
S2240FF6C0FC05003D3B34EC867C3D43EC827E3D457C3D4716EAFF20FB1B96C6017B01401F20
S2240FF6E0014101FBC6807B0141CC01F43B1A82341A85B75416F8491B8404010ECCE9A73B9F
S2240FF700C6F587B70516F6C41B82E6807B0142E6817B01431D014B30CC06676C88C7876CA0
S2240FF720866C846C827B0150C6087B0151C60C7B0152C6CE7B01537A0154C6107B01557AF7
S2240FF74001567A0157C6CC7B0158C6E07B01597A015A7A015B7A015CC6077B015D7A015E8A
S2240FF7607A015F1D0140011E014101FBC6017B014A1B8A3D371E0146010FCCE9A73BCC0161
S2240FF78036CE000016F6C41B82CC20FC7B01707A0171790172790173E6807B017CC72010F6
S2240FF7A08737B746E384B745E6006BEA01743352E18025ECC6017B0146200316EAFF1F01A5
S2240FF7C04601F8323D6CA869861F014401761E01610810FC016049494949496C84C7876C7D
S2240FF7E0822030FE0162FC0160C4078749B7C54656CD00003BFC0160C4E03BC60334EE8201
S2240FF80016F8C3EA85AA846C8AB754EA81AA806C881B86EC848C06672626EC822622C60109
S2240FF8206B86B6016C840F6A87C720108737B745E381B746E6E201646B403352E18725EC34
S2240FF8401D0144FEE6861B883D6CAC3B6984E6848759B745E6E2E8F987B746E6E2E8FA1972
S2240FF860EE02B764ED8A136C80CC1F40B756EE80181004642ECC1F40EE801810B7516B85D6
S2240FF8802721C140221D53EE886B00E6EAE8FA53861012A6EAE8F94337AAB0EE826A00C606
S2240FF8A001200C16EAFF6284E684C11225A0C71B863D87D7B7C6270A59B7C55545B7C50480
S2240FF8C036F63D87D7B7C6270AB7C549B7C546560436F63DAC84270E34B7C5E285A284B7FC
S2240FF8E0C510FB302002AE82311B84054004A401083D046401098300013D87C76C82EC8CB8
S2240FF900261FEE8EED86EC8811280DEC86CD0000116D82B746EC88116D846C8887C76C86FF
S2240FF9203D972709EE86B7C5CD00002008EE8DE686ED87B7C61135ECF010133B35ECF0124F
S2240FF940ED8413E3B130B7C5CD0000356581A38CB7C5E28BA28A310446113669AF3137322F
S2240FF9603433EEF01011B76532201F252A046403044539E78E2706EE8E87C7200BB7C536FB
S2240FF9803469AFEEF013313A1810083A34A3B1B74620A33102209F4151B7C5415104A401BE
S2240FF9A008AE8E22EE2505ACF01024E7316D84698369826C886E863D3B341B9C16F8FA3082
S2180FF9C0ECB5EDB505403BB704B7053A3D30E6E605E5000088
S2100FFEF0CF390016E82916EAF406E9DA06
S2240FFF80F54AF550F556F55CF562F568F56EF574F57AF580F586F58CF592F598F59EF5A48D
S2240FFFA0F5AAF5B0F5B6F5BCF5C2F5C8F5CEF5D4F5DAF5E0F5E6F5ECF5F2F5F8F5FEF6046C
S2240FFFC0F60AF610F616F61CF622F628F62EF634F63AF640F646F64CF652F658F65EF6643D
S2240FFFE0F66AF670F676F67CF682F688F68EF694F69AF6A0F6A6F6ACF6B2F6B8F6BEF541A1
S9030000FC

View File

@ -1,142 +1,150 @@
S0720000433A5C576F726B5C736F6674776172655C4F70656E424C545C5461726765745C44656D6F5C48435331325F457662706C75735F447261676F6E3132705F436F646557617272696F725C426F6F745C62696E5C6F70656E626C745F657662706C75735F647261676F6E3132702E61627366
S123E800FEE833FDE831270E35ED31EC3169700434FB310326F2FEE835EC31270BED311828
S123E8200A30700434F920F13DCF390007D206E9B70001E837F8C3390004FC4F70656E423C
S123E8200A30700434F920F13DCF390007D206E9DA0001E837F9D2390004494F70656E42BC
S123E8404C5400000C000000004000000C400000004000000C800000004000000CC00000A4
S123E860004000000D000000004000000D400000004000000D800000004000000DC00000E0
S123E880004000000E000000004000000E400000004000000E800000004000000EC00000BC
S123E8A0004000000F000000004000000F400000004000000F800000004000000FC0000098
S123E8C0000800000FC80000000800000FD00000000800000FD80000000800000FE0000088
S123E8E00008003634CE01001A0586806A00A7A7A7A70F0040FC30323D433A5C576F726B42
S123E9005C736F6674776172655C4F70656E424C545C5461726765745C44656D6F5C4843D1
S123E9205331325F457662706C75735F447261676F6E3132705F436F646557617272696F02
S123E940725C426F6F745C6D61696E2E6300433A5C576F726B5C736F6674776172655C4FD1
S123E96070656E424C545C5461726765745C536F757263655C48435331325C666C617368D7
S123E9802E6300433A5C576F726B5C736F6674776172655C4F70656E424C545C54617267E5
S123E9A065745C536F757263655C48435331325C756172742E630016E9C216EA7D16EA8C9D
S123E9C020FB1B99698214104D398069816980E68087CD1F40C3000118133BE68387C30086
S123E9E00116F8B73B34EC84B76516F8A96C876E858C5DC01B822609046506C6016B8220FD
S123EA00286280E680C13F23C6E6820401086281E681C10F23B7E68204010ECCE8F93BC607
S123EA207A87B70516F78F1B82E6805B34E6815B354F3708FC4C39801B873DC6017B390007
S123EA4016F5177C39037E390106EA4C16EAD704012AF6390004212416F5173BFC3903C30E
S123EA600032B746FC3901C9008900353BEC8416F7C51B82250679390016EEA03D16EADBF3
S123EA8016F4BF16F48516EA9806EA3B16EADC16F4F816EAB106EA4CC6FF6BAE698116EAC4
S123EAA0DD16F520F63905042105B77416EAFF3A3DCC390616F597042106CC390616EAFF69
S123EAC03D3D3BEC843BE68316F5393A16EAFB3A3DC6017B39053D16EAF23D3D3DC7877C49
S123EAE0398E7C398C7B39897C398A7B39487C39463DF6394626013DC6013D7939893D3BCA
S123EB0036B745E600C1FF2607B75416EC492055B639460420CDC1FE2244C1F3250EC1F638
S123EB202221C0F38716F8BE4D3F3846C1CC6B802526C1D22222C0CC8716F8BE7F86867802
S123EB4063716AC1FA6B80250FC1FE220BC0FA8716F8BE296F30373EE680C1C9273A206290
S123EB60EC8116ECDD2060EC8116ED2B2059EC8116ECC32052EC8116ED80204BEC8116EC43
S123EB80A12044EC8116EC9D203DEC8116EC832036EC8116EC73202FB75416EDC52028EC83
S123EBA08116EE082021EC8116EDAC201AEC8116EE632013EC8116EE8D200CEC8116EE9BF0
S123EBC02005C62016EC39F63989042105C61016EC39C6017B3989CC39493BFC398A16EBAB
S123EBE0E61B821B833D3BEC843BEC8216EAC21B843D6CAD69822013EE8BE600EB826B82D1
S123EC00EE89EC8B16F7DE6C8B6E89EC87EE85343B16F7E36C8B6E89C7873B3BEC84EE864E
S123EC2016F7C51B8426D1E68287EE806C02C76C00521B833D7939473D37C6FE7B394932DD
S123EC407A394A50877C398A3D07EACCFF017B3946C77C39491C394A107B394B1C394B0195
S123EC6086407C394C527C394E7B3950CE00087E398A3D79394607BDC6FF7B394950877C4B
S123EC80398A3D86FFC77C3949F639477B394BC7877C394C7B394EC6067C398A3DC706EC5F
S123ECA0391803E83B398EC7877C398C437C3949877C394BC6077C394FC77C394DC6087CD7
S123ECC0398A3D3BC6FF7B3949EE80EC047C398CEC067C398EC601877C398A3A3D3B36B733
S123ECE045E601C13F2307C62216EC39203ACD394A356B82C7873BFD398E35FD398C35E66C
S123ED008816EEB81B88C6FF7B3949EE81E60187B745F3398E7C398ECC0000F9398DB939F3
S123ED208C7C398C087E398A1B833D3BB745E601C13F2307C62216EC392043ED047D398CDD
S123ED4037EC067C398ECC394A3BC7873BFC398E3B35E6888716EEB81B88C6FF7B3949EEF9
S123ED6081E60187B745F3398E7C398ECC0000F9398DB9398C7C398C087E398A1B813A3D01
S123ED803BC6FF7B3949FC398E3BFC398C3BEE84EC063BEC043BCC394D16EBF27B394AC7A4
S123EDA0877C394BC6087C398A1B8A3D86FFC77C3949CE00407E394B877C394D7B394FC62D
S123EDC0077C398A3D3BFC398E3BFC398C3BC63F873BC73BEC88C3000116F4881B880461DC
S123EDE007C63116EC39201EC6FF7B3949FC398EC3003F7C398EFC398CC90089007C398C7A
S123EE00C601877C398A3A3D3BB745E601C13E2304C622203086FF7A3949CD00017D398ADF
S123EE2004610816F4B40461382018FD398E35FD398C35873BC73B1902B7C616F4881B884D
S123EE40046107C63116EC392017EE80E60187F3398E7C398ECC0000F9398DB9398C7C3942
S123EE608C3A3D3BFC398E3BFC398C3BEE84EC06EE0416F49E1B84046107C63116EC3920FB
S123EE800AC6FF7B394950877C398A3A3D16EEDFC6FF7B394950877C398A3DC63106EC39FB
S123EEA03B16F4B004410F16EAC116F4DCFCE7FE6C8015F300003A3D6CACEC8C6C82EE881E
S123EEC0200DED82E6306B706D823416EADC30ED80341A5F6E828D00003026E61B843D06BD
S123EEE0F60C1B9D6982CCFF016B81507C39927C39907C3B967C3B941C010303F60103C45C
S123EF0003527B3DAE1D0103E36980E68087B745E68108B75613B745CC1F4018151AE16915
S123EF208E00302212E681C1082605A6808A408FA6807A0100201C6280E680C13F23CCE607
S123EF408204010FCCE94E3BCC017CCE000016F78F1B821B833D1B983BFCE843ACF01022CB
S123EF60442608FCE845ACF012223AECF012E38E3BEC8EE9F013A9F012B7453A16F7E33BDC
S123EF80FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DFB7D43BEC8216F7E33B34EC88EE8416F72F
S123EFA0C51B862303C72061FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC828302006C889F
S123EFC03AC20082006C84EDF014EEF012C60916F7B4B746C60916F7A36C8A6E88EE86343E
S123EFE0ACB3260BEC86AC822605CC3B942003CC39903BEEF01434EEF01434EE8634ECF054
S123F00016EEF01416F2AE1B881B8A3D1B943B34EDF014EEF012C60916F7B4B746C6091638
S123F020F7A36C8E6E8CBEE84318250099FCE843AC8C2607FCE845AC8E2238ECF014E382E1
S123F0403BEC82E9F015A9F014B7453A16F7E33BFCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF4F
S123F060B7D43BEC8216F7E33B34EC88EE8416F7C51B862251ECF014A38E3BECF014E28F70
S123F080A28E3BEC82E3866C8C3AE983A9826C88C609EE88ED8A16F7B46C86EC8A84018C77
S123F0A000001B822705EE84086E846D8A202E16EADCC64037EC8F3BEC8F3BCC55AA16F478
S123F0C0311B85046103C7201CEC8EC302006C8EEC8CC90089006C8CEE8A086E8AEC8AAC5B
S123F0E08425CCC6011BF0103DC7876CACFE3B9604A509FE3B9404A503522051CE01806E98
S123F100828737E383B745E6E23B9887E3816C813352C18025EB61816180EE80086E80FCDD
S123F120E8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC82830082B7453AC2008200343BC602B0
S123F140873BC73B1A8AB75416EF561B8A1B843D1B96C7876C88FCE8DDF3E8E13BFCE8DBF2
S123F160F9E8E0B9E8DF3BEC828300826C863AC20082006C82FCE8DDF3E8E16C80FCE8DB16
S123F180F9E8E0B9E8DF3BEC828300806C8A3AC20082006C86C71B828737E3873BCC000085
S123F1A0E988A987B7453A16F3E387E3896C893352C18025E3EC82EE8016F3E3B710C73B41
S123F1C0EC84EE8216F7DE16F3E387E380E38A1B822603C60121C71B8A3DFC3B9604A4064B
S123F1E0FC3B94048409CC3B9416F36B044115FC399204A406FC399004840BCC399016F3DB
S123F2006B046102C73DC752C11625FBC6013D6CAD348401044403C72043EE87EC02AC8228
S123F2202606EC00AC802733EC806C00EC826C02D6306B84EC82EE8016F4005B30EE871A83
S123F2400434C7873BEC86EE8416F40C3BC7873B860216EEB81B88E6845B30C6011B853DAB
S123F2603B34EC868C3B942607CC39906C862027FCE8DDAC822618FCE8DBAC802611CC3BFD
S123F280946C86FEE8DD6E82FEE8DB6E802008EC8616F36B04410FEC863BEC84EE8216F28B
S123F2A00F1B82046103C7878FEC861B843D1B983B34EDF012EEF010C60916F7B4B746C6B9
S123F2C00916F7A36C866E84EEF014EC0204A412EC0004A40D34EC88EE8616F20F1B82047E
S123F2E04160EEF014EC02AC862606EC00AC84270F34EC88EE8616F2601B826CF0142742DF
S123F300EEF014ECF012A3021A041AE66E88EC8E6C8A16EADCEEF0141904EC8835A3B18C6C
S123F3200200252634EC88C30200B745EC86C9008900B746B754B76516F2601B826CF014B6
S123F3402603C72023C300046C88EE8AE630ED886B706D886E8AEC82EE8016F7E36C826EC8
S123F360800474AE26ACC6011B8C3D1B973BC6016B8AEE80EC0204A408EC0004A403C72033
S123F3805FC7876C88EC8859B746EE80E3026C84CC0000E901A9006C82B75419EEEC446CC0
S123F3A08616EADCC62037EC853BEE8534EC8B16F4311B85044119EC84EE8216F3E3E18694
S123F3C0260EEC84EE8216F7DE16F3E3E1872704698A200AEE88086E888E010025A7E68A4F
S123F3E01B8B3D3B34D63037EC8316F4005B30EC83EE8116F40CB745E600325A301B843D08
S123F4003B34C60EED8216F7B41B843D843FC380003D3BC787B74537E6E2E8E36BE23D98E5
S123F4203352C11625EECC3D986C8015F300003A3D6CAC6982D6306B83EC88EE8607C15B4B
S123F440301D010303545451C403FA01037B0103C6307B0105B6010584808180261EEC8827
S123F460EE8607A8EE80B7466E40E68A7B010607A11F010530022004C6016B82E6835B308F
S123F480E6821B843D06EEE23BEC8A3BEC8A3BEC8A3BEC8A3BEC8816EF561B88303D3B3401
S123F4A0EC883BEC883BEC8616F00C1B841B843D16F1503D16F0E90461013D16F1DA3D1691
S123F4C0F4DC4C4001C6015B4EDC44C35DC05C504C4680C7877C3DB17C3DAF3D79004C7902
S123F4E0004679004D79004079004779004879004979004A79004B3D4F4E011AC6015B4E14
S123F500DC50C35DC05C50FC3DB1FE3DAF16F7DE7C3DB17E3DAF3D07DFFC3DB1FE3DAF3D68
S123F5207900CB7900CA7900C87900C9C61A873B5AC85BC94CCB0C3A3D6BADC140230ECC25
S123F540E9833BC68887B70516F78F1B82E68016F5F804010ECCE9833BC68B87B70516F7A6
S123F5608F1B82C7876C81202416EADCEC85E381B745E60016F5F804010ECCE9833BC69367
S123F58087B70516F78F1B82EE81086E81E68087AC8122D51B833D3BF63DB32614CC3DB481
S123F5A016F5E7042108C6017B3DB3793DF5C72034F63DF587C3000187C33DB416F5E7048C
S123F5C031EC723DF5F63DF5F13DB426E1EE8034C7873BCE3DB5343BF63DF516EEB81B8874
S123F5E0793DB3C601303D3B4FCC2009D6CFEE806B00C60121C7303D4ECC8002C73D5BCF87
S123F600200316EADC4FCC80F9C6013DCF390016E82906E9B7FEE78005003DFEE782050067
S123F6203DFEE78405003DFEE78605003DFEE78805003DFEE78A05003DFEE78C05003DFE20
S123F640E78E05003DFEE79005003DFEE79205003DFEE79405003DFEE79605003DFEE7988A
S123F66005003DFEE79A05003DFEE79C05003DFEE79E05003DFEE7A005003DFEE7A20500A8
S123F6803DFEE7A405003DFEE7A605003DFEE7A805003DFEE7AA05003DFEE7AC05003DFE20
S123F6A0E7AE05003DFEE7B005003DFEE7B205003DFEE7B405003DFEE7B605003DFEE7B86A
S123F6C005003DFEE7BA05003DFEE7BC05003DFEE7BE05003DFEE7C005003DFEE7C20500A8
S123F6E03DFEE7C405003DFEE7C605003DFEE7C805003DFEE7CA05003DFEE7CC05003DFE20
S123F700E7CE05003DFEE7D005003DFEE7D205003DFEE7D405003DFEE7D605003DFEE7D849
S123F72005003DFEE7DA05003DFEE7DC05003DFEE7DE05003DFEE7E005003DFEE7E20500A7
S123F7403DFEE7E405003DFEE7E605003DFEE7E805003DFEE7EA05003DFEE7EC05003DFE1F
S123F760E7EE05003DFEE7F005003DFEE7F205003DFEE7F405003DFEE7F605003DFEE7F829
S123F78005003DFEE7FA05003DFEE7FC05003D3B34EC867C3DF6EC827E3DF87C3DFA16EA7B
S123F7A0DC20FB87D7B7C6270A59B7C55545B7C50436F63D87D7B7C6270AB7C549B7C54657
S123F7C0560436F63DAC84270E34B7C5E285A284B7C510FB302002AE82311B84054004A4FA
S123F7E001083D046401098300013D87C76C82EC8C261FEE8EED86EC8811280DEC86CD00AB
S123F80000116D82B746EC88116D846C8887C76C863D972709EE86B7C5CD00002008EE8DD9
S123F820E686ED87B7C61135ECF010133B35ECF012ED8413E3B130B7C5CD0000356581A375
S123F8408CB7C5E28BA28A310446113669AF3137323433EEF01011B76532201F252A0464E5
S123F86003044539E78E2706EE8E87C7200BB7C5363469AFEEF013313A1810083A34A3B11C
S123F880B74620A33102209F4151B7C5415104A40108AE8E22EE2505ACF01024E7316D8412
S123F8A0698369826C886E863D3B341B9C16F7EB30ECB5EDB505403BB704B7053A3D30E633
S108F8C0E605E500006F
S10FFEF0CF390016E82916EAD106E9B75C
S123FF80F615F61BF621F627F62DF633F639F63FF645F64BF651F657F65DF663F669F66FDD
S123FFA0F675F67BF681F687F68DF693F699F69FF6A5F6ABF6B1F6B7F6BDF6C3F6C9F6CFBD
S123FFC0F6D5F6DBF6E1F6E7F6EDF6F3F6F9F6FFF705F70BF711F717F71DF723F729F72F95
S123FFE0F735F73BF741F747F74DF753F759F75FF765F76BF771F777F77DF783F789F60CF1
S123E8E00008003634CE01001A0586806A00A7A7A7A70F0040FC30323D050206020603079F
S123E900030803090309040A040B040C040C050D050E050F050F06100610071008433A5C22
S123E920576F726B5C736F6674776172655C4F70656E424C545C5461726765745C44656D64
S123E9406F5C48435331325F457662706C75735F447261676F6E3132705F436F6465576148
S123E9607272696F725C426F6F745C6D61696E2E6300433A5C576F726B5C736F6674776177
S123E98072655C4F70656E424C545C5461726765745C536F757263655C48435331325C66DD
S123E9A06C6173682E6300433A5C576F726B5C736F6674776172655C4F70656E424C545CAB
S123E9C05461726765745C536F757263655C48435331325C63616E2E630016E9E516EAA0BF
S123E9E016EAAF20FB1B99698214104D398069816980E68087CD1F40C3000118133BE68301
S123EA0087C3000116F9C63B34EC84B76516F9B86C876E858C5DC01B822609046506C6017F
S123EA206B8220286280E680C13F23C6E6820401086281E681C10F23B7E68204010ECCE9D3
S123EA401D3BC67587B70516F6C41B82E6805B34E6815B354F3708FC4C39801B873DC6014E
S123EA607B390016F5387C39037E390106EA6F16EAFA04012AF6390004212416F5383BFCB1
S123EA803903C30032B746FC3901C9008900353BEC8416F8D41B82250679390016EEC13D7E
S123EAA016EAFE16F4E016F4A616EABB06EA5E16EAFF16F51916EAD406EA6FC6FF6BAE6914
S123EAC08116EB0016F6D8F63905042105B77416EB223A3DCC390616F7C5042106CC390696
S123EAE016EB223D3D3BEC843BE68316F7743A16EB1E3A3DC6017B39053D16EB153D3D3D4B
S123EB00C7877C391E7C391C7B39197C391A7B39107C390E3DF6390E26013DC6013D793948
S123EB20193D3B36B745E600C1FF2607B75416EC6C2055B6390E0420CDC1FE2244C1F32561
S123EB400EC1F62221C0F38716F9CD4D3F3846C1CC6B802526C1D22222C0CC8716F9CD7F81
S123EB6086867863716AC1FA6B80250FC1FE220BC0FA8716F9CD296F30373EE680C1C92798
S123EB803A2062EC8116ECFF2060EC8116ED4D2059EC8116ECE52052EC8116EDA2204BEC62
S123EBA08116ECC32044EC8116ECBF203DEC8116ECA52036EC8116EC95202FB75416EDE66B
S123EBC02028EC8116EE292021EC8116EDCE201AEC8116EE842013EC8116EEAE200CEC81B6
S123EBE016EEBC2005C62016EC5CF63919042105C61016EC5CC6017B3919CC39113BFC3928
S123EC001A16EC091B821B833D3BEC843BEC8216EAE51B843D6CAD69822013EE8BE600EBBD
S123EC20826B82EE89EC8B16F8ED6C8B6E89EC87EE85343B16F8F26C8B6E89C7873B3BEC97
S123EC4084EE8616F8D41B8426D1E68287EE806C02C76C00521B833D79390F3D37C6FE7BA1
S123EC603911327A391250877C391A3D07EACCFF017B390EC77C39111C3912107B39131C06
S123EC8039130186087C3914527C39167B3918B7047C391A3D79390E07BEC6FF7B391150BD
S123ECA0877C391A3D86FFC77C3911F6390F7B3913C7877C39147B3916C6067C391A3DC726
S123ECC006EC5C1803E83B391EC7877C391C437C3911877C3913C6077C3917C77C3915C6E6
S123ECE0087C391A3D3BC6FF7B3911EE80EC047C391CEC067C391EC601877C391A3A3D3B74
S123ED0036B745E601C1072307C62216EC5C203ACD3912356B82C7873BFD391E35FD391CA6
S123ED2035E68816EED91B88C6FF7B3911EE81E60187B745F3391E7C391ECC0000F9391D11
S123ED40B9391C7C391C087E391A1B833D3BB745E601C1072307C62216EC5C2043ED047DF5
S123ED60391C37EC067C391ECC39123BC7873BFC391E3B35E6888716EED91B88C6FF7B39B2
S123ED8011EE81E60187B745F3391E7C391ECC0000F9391DB9391C7C391C087E391A1B81F9
S123EDA03A3D3BC6FF7B3911FC391E3BFC391C3BEE84EC063BEC043BCC391516EC157B394A
S123EDC012C7877C3913C6087C391A1B8A3D86FFC77C3911CE00087E3913877C39157B39D1
S123EDE017097E391A3D3BFC391E3BFC391C3BC607873BC73BEC88C3000116F4A91B880469
S123EE006107C63116EC5C201EC6FF7B3911FC391EC300077C391EFC391CC90089007C3921
S123EE201CC601877C391A3A3D3BB745E601C1062304C622203086FF7A3911CD00017D390D
S123EE401A04610816F4D50461382018FD391E35FD391C35873BC73B1902B7C616F4A91B39
S123EE6088046107C63116EC5C2017EE80E60187F3391E7C391ECC0000F9391DB9391C7C70
S123EE80391C3A3D3BFC391E3BFC391C3BEE84EC06EE0416F4BF1B84046107C63116EC5CCE
S123EEA0200AC6FF7B391150877C391A3A3D16EF00C6FF7B391150877C391A3DC63106EC22
S123EEC05C3B16F4D104410F16EAE416F4FDFCE7FE6C8015F300003A3D6CACEC8C6C82EEC5
S123EEE088200DED82E6306B706D823416EAFF30ED80341A5F6E828D00003026E61B843DF8
S123EF0006F5411B9D6982CCFF016B81507C39227C39207C3B267C3B241C010303F6010385
S123EF20C403527B3D3E1D0103E36980E68087B745E68108B75613B745CC1F4018151AE10A
S123EF40698E00302212E681C1082605A6808A408FA6807A0100201C6280E680C13F23CC64
S123EF60E68204010FCCE9723BCC017CCE000016F6C41B821B833D1B983BFCE843ACF0108F
S123EF8022442608FCE845ACF012223AECF012E38E3BEC8EE9F013A9F012B7453A16F8F2C5
S123EFA03BFCE8DDF3E8E13BFCE8DBF9E8E0B9E8DFB7D43BEC8216F8F23B34EC88EE8416BB
S123EFC0F8D41B862303C72061FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC828302006C00
S123EFE0883AC20082006C84EDF014EEF012C60916F8C3B746C60916F8B26C8A6E88EE86AA
S123F00034ACB3260BEC86AC822605CC3B242003CC39203BEEF01434EEF01434EE8634ECCF
S123F020F016EEF01416F2CF1B881B8A3D1B943B34EDF014EEF012C60916F8C3B746C6090D
S123F04016F8B26C8E6E8CBEE84318250099FCE843AC8C2607FCE845AC8E2238ECF014E31D
S123F060823BEC82E9F015A9F014B7453A16F8F23BFCE8DDF3E8E13BFCE8DBF9E8E0B9E87C
S123F080DFB7D43BEC8216F8F23B34EC88EE8416F8D41B862251ECF014A38E3BECF014E2E0
S123F0A08FA28E3BEC82E3866C8C3AE983A9826C88C609EE88ED8A16F8C36C86EC8A840144
S123F0C08C00001B822705EE84086E846D8A202E16EAFFC64037EC8F3BEC8F3BCC55AA169D
S123F0E0F4521B85046103C7201CEC8EC302006C8EEC8CC90089006C8CEE8A086E8AEC8AD2
S123F100AC8425CCC6011BF0103DC7876CACFE3B2604A509FE3B2404A503522051CE018019
S123F1206E828737E383B745E6E23B2887E3816C813352C18025EB61816180EE80086E80BB
S123F140FCE8DDF3E8E13BFCE8DBF9E8E0B9E8DF3BEC82830082B7453AC2008200343BC696
S123F16002873BC73B1A8AB75416EF771B8A1B843D1B96C7876C88FCE8DDF3E8E13BFCE88A
S123F180DBF9E8E0B9E8DF3BEC828300826C863AC20082006C82FCE8DDF3E8E16C80FCE8F6
S123F1A0DBF9E8E0B9E8DF3BEC828300806C8A3AC20082006C86C71B828737E3873BCC008A
S123F1C000E988A987B7453A16F40487E3896C893352C18025E3EC82EE8016F404B710C718
S123F1E03BEC84EE8216F8ED16F40487E380E38A1B822603C60121C71B8A3DFC3B2604A434
S123F20006FC3B24048409CC3B2416F38C044115FC392204A406FC392004840BCC392016B6
S123F220F38C046102C73DC752C11625FBC6013D6CAD348401044403C72043EE87EC02AC76
S123F240822606EC00AC802733EC806C00EC826C02D6306B84EC82EE8016F4215B30EE87DA
S123F2601A0434C7873BEC86EE8416F42D3BC7873B860216EED91B88E6845B30C6011B856C
S123F2803D3B34EC868C3B242607CC39206C862027FCE8DDAC822618FCE8DBAC802611CCBB
S123F2A03B246C86FEE8DD6E82FEE8DB6E802008EC8616F38C04410FEC863BEC84EE821671
S123F2C0F2301B82046103C7878FEC861B843D1B983B34EDF012EEF010C60916F8C3B7463C
S123F2E0C60916F8B26C866E84EEF014EC0204A412EC0004A40D34EC88EE8616F2301B826B
S123F300044160EEF014EC02AC862606EC00AC84270F34EC88EE8616F2811B826CF01427DB
S123F32042EEF014ECF012A3021A041AE66E88EC8E6C8A16EAFFEEF0141904EC8835A3B173
S123F3408C0200252634EC88C30200B745EC86C9008900B746B754B76516F2811B826CF0FD
S123F360142603C72023C300046C88EE8AE630ED886B706D886E8AEC82EE8016F8F26C82F2
S123F3806E800474AE26ACC6011B8C3D1B973BC6016B8AEE80EC0204A408EC0004A403C7C5
S123F3A0205FC7876C88EC8859B746EE80E3026C84CC0000E901A9006C82B75419EEEC44EC
S123F3C06C8616EAFFC62037EC853BEE8534EC8B16F4521B85044119EC84EE8216F404E128
S123F3E086260EEC84EE8216F8ED16F404E1872704698A200AEE88086E888E010025A7E601
S123F4008A1B8B3D3B34D63037EC8316F4215B30EC83EE8116F42DB745E600325A301B8458
S123F4203D3B34C60EED8216F8C31B843D843FC380003D3BC787B74537E6E2E8E36BE23D10
S123F440283352C11625EECC3D286C8015F300003A3D6CAC6982D6306B83EC88EE8607C1CE
S123F4605B301D010303545451C403FA01037B0103C6307B0105B6010584808180261EEC34
S123F48088EE8607A8EE80B7466E40E68A7B010607A11F010530022004C6016B82E6835B17
S123F4A030E6821B843D06EF033BEC8A3BEC8A3BEC8A3BEC8A3BEC8816EF771B88303D3BA2
S123F4C034EC883BEC883BEC8616F02D1B841B843D16F1713D16F10A0461013D16F1FB3DCE
S123F4E016F4FD4C4001C6015B4EDC44C35DC05C504C4680C7877C3D417C3D3F3D79004C04
S123F50079004679004D79004079004779004879004979004A79004B3D4F4E011AC6015BC8
S123F5204EDC50C35DC05C50FC3D41FE3D3F16F8ED7C3D417E3D3F3D07DFFC3D41FE3D3FC7
S123F5403DCF390016E82906E9DAFEE78005003DFEE78205003DFEE78405003DFEE7860507
S123F560003DFEE78805003DFEE78A05003DFEE78C05003DFEE78E05003DFEE79005003DCB
S123F580FEE79205003DFEE79405003DFEE79605003DFEE79805003DFEE79A05003DFEE7D1
S123F5A09C05003DFEE79E05003DFEE7A005003DFEE7A205003DFEE7A405003DFEE7A605B9
S123F5C0003DFEE7A805003DFEE7AA05003DFEE7AC05003DFEE7AE05003DFEE7B005003DCB
S123F5E0FEE7B205003DFEE7B405003DFEE7B605003DFEE7B805003DFEE7BA05003DFEE7D1
S123F600BC05003DFEE7BE05003DFEE7C005003DFEE7C205003DFEE7C405003DFEE7C60598
S123F620003DFEE7C805003DFEE7CA05003DFEE7CC05003DFEE7CE05003DFEE7D005003DCA
S123F640FEE7D205003DFEE7D405003DFEE7D605003DFEE7D805003DFEE7DA05003DFEE7D0
S123F660DC05003DFEE7DE05003DFEE7E005003DFEE7E205003DFEE7E405003DFEE7E60578
S123F680003DFEE7E805003DFEE7EA05003DFEE7EC05003DFEE7EE05003DFEE7F005003DCA
S123F6A0FEE7F205003DFEE7F405003DFEE7F605003DFEE7F805003DFEE7FA05003DFEE7D0
S123F6C0FC05003D3B34EC867C3D43EC827E3D457C3D4716EAFF20FB1B96C6017B01401F30
S123F6E0014101FBC6807B0141CC01F43B1A82341A85B75416F8491B8404010ECCE9A73BAF
S123F700C6F587B70516F6C41B82E6807B0142E6817B01431D014B30CC06676C88C7876CB0
S123F720866C846C827B0150C6087B0151C60C7B0152C6CE7B01537A0154C6107B01557A07
S123F74001567A0157C6CC7B0158C6E07B01597A015A7A015B7A015CC6077B015D7A015E9A
S123F7607A015F1D0140011E014101FBC6017B014A1B8A3D371E0146010FCCE9A73BCC0171
S123F78036CE000016F6C41B82CC20FC7B01707A0171790172790173E6807B017CC7201006
S123F7A08737B746E384B745E6006BEA01743352E18025ECC6017B0146200316EAFF1F01B5
S123F7C04601F8323D6CA869861F014401761E01610810FC016049494949496C84C7876C8D
S123F7E0822030FE0162FC0160C4078749B7C54656CD00003BFC0160C4E03BC60334EE8211
S123F80016F8C3EA85AA846C8AB754EA81AA806C881B86EC848C06672626EC822622C60119
S123F8206B86B6016C840F6A87C720108737B745E381B746E6E201646B403352E18725EC44
S123F8401D0144FEE6861B883D6CAC3B6984E6848759B745E6E2E8F987B746E6E2E8FA1982
S123F860EE02B764ED8A136C80CC1F40B756EE80181004642ECC1F40EE801810B7516B85E6
S123F8802721C140221D53EE886B00E6EAE8FA53861012A6EAE8F94337AAB0EE826A00C616
S123F8A001200C16EAFF6284E684C11225A0C71B863D87D7B7C6270A59B7C55545B7C50490
S123F8C036F63D87D7B7C6270AB7C549B7C546560436F63DAC84270E34B7C5E285A284B70C
S123F8E0C510FB302002AE82311B84054004A401083D046401098300013D87C76C82EC8CC8
S123F900261FEE8EED86EC8811280DEC86CD0000116D82B746EC88116D846C8887C76C860F
S123F9203D972709EE86B7C5CD00002008EE8DE686ED87B7C61135ECF010133B35ECF0125F
S123F940ED8413E3B130B7C5CD0000356581A38CB7C5E28BA28A310446113669AF3137323F
S123F9603433EEF01011B76532201F252A046403044539E78E2706EE8E87C7200BB7C5360B
S123F9803469AFEEF013313A1810083A34A3B1B74620A33102209F4151B7C5415104A401CE
S123F9A008AE8E22EE2505ACF01024E7316D84698369826C886E863D3B341B9C16F8FA3092
S117F9C0ECB5EDB505403BB704B7053A3D30E6E605E5000098
S10FFEF0CF390016E82916EAF406E9DA16
S123FF80F54AF550F556F55CF562F568F56EF574F57AF580F586F58CF592F598F59EF5A49D
S123FFA0F5AAF5B0F5B6F5BCF5C2F5C8F5CEF5D4F5DAF5E0F5E6F5ECF5F2F5F8F5FEF6047C
S123FFC0F60AF610F616F61CF622F628F62EF634F63AF640F646F64CF652F658F65EF6644D
S123FFE0F66AF670F676F67CF682F688F68EF694F69AF6A0F6A6F6ACF6B2F6B8F6BEF541B1
S9030000FC

View File

@ -24,10 +24,10 @@ cpu.c.o Model: SMALL, Lang: ANSI-C
flash.c.o Model: SMALL, Lang: ANSI-C
nvm.c.o Model: SMALL, Lang: ANSI-C
timer.c.o Model: SMALL, Lang: ANSI-C
uart.c.o Model: SMALL, Lang: ANSI-C
start12.c.o Model: SMALL, Lang: ANSI-C
vectors.c.o Model: SMALL, Lang: ANSI-C
assert.c.o Model: SMALL, Lang: ANSI-C
can.c.o Model: SMALL, Lang: ANSI-C
*********************************************************************************************
STARTUP SECTION
@ -36,8 +36,8 @@ Entry point: 0xE829 (_Startup)
_startupData is allocated at 0xE831 and uses 6 Bytes
extern struct _tagStartup {
unsigned nofZeroOut 1
_Range pZeroOut 0x3900 1276
_Copy *toCopyDownBeg 0xF8C3
_Range pZeroOut 0x3900 1097
_Copy *toCopyDownBeg 0xF9D2
} _startupData;
*********************************************************************************************
@ -46,10 +46,10 @@ Section Name Size Type From To Segment
---------------------------------------------------------------------------------------------
.init 49 R 0xE800 0xE830 ROM_C000
.startData 10 R 0xE831 0xE83A ROM_C000
.rodata 190 R 0xE83B 0xE8F8 ROM_C000
.rodata1 190 R 0xE8F9 0xE9B6 ROM_C000
.text 3564 R 0xE9B7 0xF7A2 ROM_C000
.copy 2 R 0xF8C3 0xF8C4 ROM_C000
.rodata 226 R 0xE83B 0xE91C ROM_C000
.rodata1 189 R 0xE91D 0xE9D9 ROM_C000
.text 3800 R 0xE9DA 0xF8B1 ROM_C000
.copy 2 R 0xF9D2 0xF9D3 ROM_C000
ENTRY 12 R 0xFEF0 0xFEFB ENTRY_SEG
.stack 256 R/W 0x3800 0x38FF RAM
.abs_section_8 1 N/I 0x8 0x8 .absSeg0
@ -394,12 +394,12 @@ ENTRY 12 R 0xFEF0 0xFEFB ENTRY_SEG
.abs_section_2ae 2 N/I 0x2AE 0x2AF .absSeg339
.abs_section_2be 2 N/I 0x2BE 0x2BF .absSeg340
.abs_section_ff80 128 R 0xFF80 0xFFFF .absSeg341
.bss 1276 R/W 0x3900 0x3DFB RAM
RUNTIME 288 R 0xF7A3 0xF8C2 ROM_C000
.bss 1097 R/W 0x3900 0x3D48 RAM
RUNTIME 288 R 0xF8B2 0xF9D1 ROM_C000
Summary of section sizes per section type:
READ_ONLY (R): 1151 (dec: 4433)
READ_WRITE (R/W): 5FC (dec: 1532)
READ_ONLY (R): 1260 (dec: 4704)
READ_WRITE (R/W): 549 (dec: 1353)
NO_INIT (N/I): 190 (dec: 400)
*********************************************************************************************
@ -413,15 +413,15 @@ OBJECT-ALLOCATION SECTION
---------------------------------------------------------------------------------------------
MODULE: -- rtshc12.c.o (ansisi.lib) --
- PROCEDURES:
_LSHL F7A3 11 17 3 RUNTIME
_LSHRU F7B4 11 17 5 RUNTIME
_LCMP F7C5 19 25 4 RUNTIME
_LINC F7DE 5 5 4 RUNTIME
_LDEC F7E3 8 8 6 RUNTIME
_lDivMod F7EB BE 190 1 RUNTIME
_LDIVU F8A9 E 14 1 RUNTIME
_ILSEXT F8B7 7 7 1 RUNTIME
_CASE_DIRECT_BYTE F8BE 5 5 3 RUNTIME
_LSHL F8B2 11 17 3 RUNTIME
_LSHRU F8C3 11 17 6 RUNTIME
_LCMP F8D4 19 25 4 RUNTIME
_LINC F8ED 5 5 4 RUNTIME
_LDEC F8F2 8 8 6 RUNTIME
_lDivMod F8FA BE 190 1 RUNTIME
_LDIVU F9B8 E 14 1 RUNTIME
_ILSEXT F9C6 7 7 1 RUNTIME
_CASE_DIRECT_BYTE F9CD 5 5 3 RUNTIME
- VARIABLES:
MODULE: -- mc9s12dg256.c.o --
- PROCEDURES:
@ -769,125 +769,113 @@ MODULE: -- mc9s12dg256.c.o --
_CAN4TXTSR 2BE 2 2 0 .abs_section_2be
MODULE: -- main.c.o --
- PROCEDURES:
main E9B7 B 11 3 .text
Init E9C2 79 121 1 .text
main E9DA B 11 3 .text
Init E9E5 79 121 1 .text
- VARIABLES:
STRING.C..Work.software.Ope.1 E8F9 55 85 1 .rodata1
STRING.C..Work.software.Ope.1 E91D 55 85 1 .rodata1
MODULE: -- backdoor.c.o --
- PROCEDURES:
BackDoorInit EA3B 11 17 1 .text
BackDoorCheck EA4C 31 49 2 .text
BackDoorInit EA5E 11 17 1 .text
BackDoorCheck EA6F 31 49 2 .text
- VARIABLES:
backdoorOpen 3900 1 1 3 .bss
backdoorOpenTime 3901 4 4 4 .bss
MODULE: -- boot.c.o --
- PROCEDURES:
BootInit EA7D F 15 1 .text
BootTask EA8C C 12 1 .text
BootInit EAA0 F 15 1 .text
BootTask EAAF C 12 1 .text
- VARIABLES:
MODULE: -- com.c.o --
- PROCEDURES:
ComInit EA98 19 25 1 .text
ComTask EAB1 10 16 1 .text
ComFree EAC1 1 1 1 .text
ComTransmitPacket EAC2 F 15 1 .text
ComSetConnectEntryState EAD1 6 6 1 .text
ComIsConnected EAD7 4 4 1 .text
ComInit EABB 19 25 1 .text
ComTask EAD4 10 16 1 .text
ComFree EAE4 1 1 1 .text
ComTransmitPacket EAE5 F 15 1 .text
ComSetConnectEntryState EAF4 6 6 1 .text
ComIsConnected EAFA 4 4 1 .text
- VARIABLES:
comEntryStateConnect 3905 1 1 2 .bss
xcpCtoReqPacket.1 3906 40 64 2 .bss
xcpCtoReqPacket.1 3906 8 8 2 .bss
MODULE: -- cop.c.o --
- PROCEDURES:
CopInit EADB 1 1 1 .text
CopService EADC 1 1 8 .text
CopInit EAFE 1 1 1 .text
CopService EAFF 1 1 8 .text
- VARIABLES:
MODULE: -- xcp.c.o --
- PROCEDURES:
XcpInit EADD 15 21 1 .text
XcpIsConnected EAF2 9 9 1 .text
XcpPacketTransmitted EAFB 4 4 1 .text
XcpPacketReceived EAFF E7 231 2 .text
XcpTransmitPacket EBE6 C 12 1 .text
XcpComputeChecksum EBF2 43 67 1 .text
XcpProtectResources EC35 4 4 2 .text
XcpSetCtoError EC39 10 16 9 .text
XcpCmdConnect EC49 2A 42 1 .text
XcpCmdDisconnect EC73 10 16 1 .text
XcpCmdGetStatus EC83 1A 26 1 .text
XcpCmdSynch EC9D 4 4 1 .text
XcpCmdGetId ECA1 22 34 1 .text
XcpCmdSetMta ECC3 1A 26 1 .text
XcpCmdUpload ECDD 4E 78 1 .text
XcpCmdShortUpload ED2B 55 85 1 .text
XcpCmdBuildCheckSum ED80 2C 44 1 .text
XcpCmdProgramStart EDAC 19 25 1 .text
XcpCmdProgramMax EDC5 43 67 1 .text
XcpCmdProgram EE08 5B 91 1 .text
XcpCmdProgramClear EE63 2A 42 1 .text
XcpCmdProgramReset EE8D E 14 1 .text
XcpCmdProgramPrepare EE9B 5 5 1 .text
XcpInit EB00 15 21 1 .text
XcpIsConnected EB15 9 9 1 .text
XcpPacketTransmitted EB1E 4 4 1 .text
XcpPacketReceived EB22 E7 231 2 .text
XcpTransmitPacket EC09 C 12 1 .text
XcpComputeChecksum EC15 43 67 1 .text
XcpProtectResources EC58 4 4 2 .text
XcpSetCtoError EC5C 10 16 9 .text
XcpCmdConnect EC6C 29 41 1 .text
XcpCmdDisconnect EC95 10 16 1 .text
XcpCmdGetStatus ECA5 1A 26 1 .text
XcpCmdSynch ECBF 4 4 1 .text
XcpCmdGetId ECC3 22 34 1 .text
XcpCmdSetMta ECE5 1A 26 1 .text
XcpCmdUpload ECFF 4E 78 1 .text
XcpCmdShortUpload ED4D 55 85 1 .text
XcpCmdBuildCheckSum EDA2 2C 44 1 .text
XcpCmdProgramStart EDCE 18 24 1 .text
XcpCmdProgramMax EDE6 43 67 1 .text
XcpCmdProgram EE29 5B 91 1 .text
XcpCmdProgramClear EE84 2A 42 1 .text
XcpCmdProgramReset EEAE E 14 1 .text
XcpCmdProgramPrepare EEBC 5 5 1 .text
- VARIABLES:
xcpStationId E83B 8 8 1 .rodata
xcpInfo 3946 4A 74 102 .bss
xcpInfo 390E 12 18 102 .bss
MODULE: -- cpu.c.o --
- PROCEDURES:
CpuStartUserProgram EEA0 18 24 1 .text
CpuMemCopy EEB8 27 39 4 .text
CpuReset EEDF 3 3 1 .text
CpuStartUserProgram EEC1 18 24 1 .text
CpuMemCopy EED9 27 39 3 .text
CpuReset EF00 3 3 1 .text
- VARIABLES:
MODULE: -- flash.c.o --
- PROCEDURES:
FlashInit EEE2 74 116 1 .text
FlashWrite EF56 B6 182 2 .text
FlashErase F00C DD 221 1 .text
FlashWriteChecksum F0E9 67 103 1 .text
FlashVerifyChecksum F150 8A 138 1 .text
FlashDone F1DA 35 53 1 .text
FlashInitBlock F20F 51 81 2 .text
FlashSwitchBlock F260 4E 78 2 .text
FlashAddToBlock F2AE BD 189 1 .text
FlashWriteBlock F36B 78 120 3 .text
FlashGetLinearAddrByte F3E3 1D 29 5 .text
FlashGetPhysPage F400 C 12 3 .text
FlashGetPhysAddr F40C 6 6 3 .text
FlashExecuteCommand F412 1F 31 1 .text
FlashOperate F431 54 84 2 .text
FlashInit EF03 74 116 1 .text
FlashWrite EF77 B6 182 2 .text
FlashErase F02D DD 221 1 .text
FlashWriteChecksum F10A 67 103 1 .text
FlashVerifyChecksum F171 8A 138 1 .text
FlashDone F1FB 35 53 1 .text
FlashInitBlock F230 51 81 2 .text
FlashSwitchBlock F281 4E 78 2 .text
FlashAddToBlock F2CF BD 189 1 .text
FlashWriteBlock F38C 78 120 3 .text
FlashGetLinearAddrByte F404 1D 29 5 .text
FlashGetPhysPage F421 C 12 3 .text
FlashGetPhysAddr F42D 6 6 3 .text
FlashExecuteCommand F433 1F 31 1 .text
FlashOperate F452 54 84 2 .text
- VARIABLES:
flashLayout E843 A0 160 39 .rodata
flashExecCmd E8E3 16 22 1 .rodata
STRING.C..Work.software.Ope.1 E94E 35 53 1 .rodata1
blockInfo 3990 204 516 7 .bss
bootBlockInfo 3B94 204 516 11 .bss
flashExecCmdRam 3D98 16 22 2 .bss
flashMaxNrBlocks 3DAE 1 1 1 .bss
STRING.C..Work.software.Ope.1 E972 35 53 1 .rodata1
blockInfo 3920 204 516 7 .bss
bootBlockInfo 3B24 204 516 11 .bss
flashExecCmdRam 3D28 16 22 2 .bss
flashMaxNrBlocks 3D3E 1 1 1 .bss
MODULE: -- nvm.c.o --
- PROCEDURES:
NvmInit F485 3 3 1 .text
NvmWrite F488 16 22 2 .text
NvmErase F49E 12 18 1 .text
NvmVerifyChecksum F4B0 4 4 1 .text
NvmDone F4B4 B 11 1 .text
NvmInit F4A6 3 3 1 .text
NvmWrite F4A9 16 22 2 .text
NvmErase F4BF 12 18 1 .text
NvmVerifyChecksum F4D1 4 4 1 .text
NvmDone F4D5 B 11 1 .text
- VARIABLES:
MODULE: -- timer.c.o --
- PROCEDURES:
TimerInit F4BF 1D 29 1 .text
TimerReset F4DC 1C 28 2 .text
TimerUpdate F4F8 1F 31 2 .text
TimerGet F517 9 9 2 .text
TimerInit F4E0 1D 29 1 .text
TimerReset F4FD 1C 28 2 .text
TimerUpdate F519 1F 31 2 .text
TimerGet F538 9 9 2 .text
- VARIABLES:
millisecond_counter 3DAF 4 4 8 .bss
MODULE: -- uart.c.o --
- PROCEDURES:
UartInit F520 19 25 1 .text
UartTransmitPacket F539 5E 94 1 .text
UartReceivePacket F597 50 80 1 .text
UartReceiveByte F5E7 11 17 2 .text
UartTransmitByte F5F8 14 20 2 .text
- VARIABLES:
STRING.C..Work.software.Ope.1 E983 34 52 3 .rodata1
xcpCtoRxInProgress.4 3DB3 1 1 3 .bss
xcpCtoReqPacket.2 3DB4 41 65 4 .bss
xcpCtoRxLength.3 3DF5 1 1 5 .bss
millisecond_counter 3D3F 4 4 8 .bss
MODULE: -- start12.c.o --
- PROCEDURES:
Init E800 29 41 1 .init
@ -898,79 +886,88 @@ MODULE: -- start12.c.o --
__SEG_END_SSTACK 3900 0 0 3
MODULE: -- vectors.c.o --
- PROCEDURES:
reset_handler F60C 9 9 2 .text
Vector0_handler F615 6 6 1 .text
Vector1_handler F61B 6 6 1 .text
Vector2_handler F621 6 6 1 .text
Vector3_handler F627 6 6 1 .text
Vector4_handler F62D 6 6 1 .text
Vector5_handler F633 6 6 1 .text
Vector6_handler F639 6 6 1 .text
Vector7_handler F63F 6 6 1 .text
Vector8_handler F645 6 6 1 .text
Vector9_handler F64B 6 6 1 .text
Vector10_handler F651 6 6 1 .text
Vector11_handler F657 6 6 1 .text
Vector12_handler F65D 6 6 1 .text
Vector13_handler F663 6 6 1 .text
Vector14_handler F669 6 6 1 .text
Vector15_handler F66F 6 6 1 .text
Vector16_handler F675 6 6 1 .text
Vector17_handler F67B 6 6 1 .text
Vector18_handler F681 6 6 1 .text
Vector19_handler F687 6 6 1 .text
Vector20_handler F68D 6 6 1 .text
Vector21_handler F693 6 6 1 .text
Vector22_handler F699 6 6 1 .text
Vector23_handler F69F 6 6 1 .text
Vector24_handler F6A5 6 6 1 .text
Vector25_handler F6AB 6 6 1 .text
Vector26_handler F6B1 6 6 1 .text
Vector27_handler F6B7 6 6 1 .text
Vector28_handler F6BD 6 6 1 .text
Vector29_handler F6C3 6 6 1 .text
Vector30_handler F6C9 6 6 1 .text
Vector31_handler F6CF 6 6 1 .text
Vector32_handler F6D5 6 6 1 .text
Vector33_handler F6DB 6 6 1 .text
Vector34_handler F6E1 6 6 1 .text
Vector35_handler F6E7 6 6 1 .text
Vector36_handler F6ED 6 6 1 .text
Vector37_handler F6F3 6 6 1 .text
Vector38_handler F6F9 6 6 1 .text
Vector39_handler F6FF 6 6 1 .text
Vector40_handler F705 6 6 1 .text
Vector41_handler F70B 6 6 1 .text
Vector42_handler F711 6 6 1 .text
Vector43_handler F717 6 6 1 .text
Vector44_handler F71D 6 6 1 .text
Vector45_handler F723 6 6 1 .text
Vector46_handler F729 6 6 1 .text
Vector47_handler F72F 6 6 1 .text
Vector48_handler F735 6 6 1 .text
Vector49_handler F73B 6 6 1 .text
Vector50_handler F741 6 6 1 .text
Vector51_handler F747 6 6 1 .text
Vector52_handler F74D 6 6 1 .text
Vector53_handler F753 6 6 1 .text
Vector54_handler F759 6 6 1 .text
Vector55_handler F75F 6 6 1 .text
Vector56_handler F765 6 6 1 .text
Vector57_handler F76B 6 6 1 .text
Vector58_handler F771 6 6 1 .text
Vector59_handler F777 6 6 1 .text
Vector60_handler F77D 6 6 1 .text
Vector61_handler F783 6 6 1 .text
Vector62_handler F789 6 6 1 .text
reset_handler F541 9 9 2 .text
Vector0_handler F54A 6 6 1 .text
Vector1_handler F550 6 6 1 .text
Vector2_handler F556 6 6 1 .text
Vector3_handler F55C 6 6 1 .text
Vector4_handler F562 6 6 1 .text
Vector5_handler F568 6 6 1 .text
Vector6_handler F56E 6 6 1 .text
Vector7_handler F574 6 6 1 .text
Vector8_handler F57A 6 6 1 .text
Vector9_handler F580 6 6 1 .text
Vector10_handler F586 6 6 1 .text
Vector11_handler F58C 6 6 1 .text
Vector12_handler F592 6 6 1 .text
Vector13_handler F598 6 6 1 .text
Vector14_handler F59E 6 6 1 .text
Vector15_handler F5A4 6 6 1 .text
Vector16_handler F5AA 6 6 1 .text
Vector17_handler F5B0 6 6 1 .text
Vector18_handler F5B6 6 6 1 .text
Vector19_handler F5BC 6 6 1 .text
Vector20_handler F5C2 6 6 1 .text
Vector21_handler F5C8 6 6 1 .text
Vector22_handler F5CE 6 6 1 .text
Vector23_handler F5D4 6 6 1 .text
Vector24_handler F5DA 6 6 1 .text
Vector25_handler F5E0 6 6 1 .text
Vector26_handler F5E6 6 6 1 .text
Vector27_handler F5EC 6 6 1 .text
Vector28_handler F5F2 6 6 1 .text
Vector29_handler F5F8 6 6 1 .text
Vector30_handler F5FE 6 6 1 .text
Vector31_handler F604 6 6 1 .text
Vector32_handler F60A 6 6 1 .text
Vector33_handler F610 6 6 1 .text
Vector34_handler F616 6 6 1 .text
Vector35_handler F61C 6 6 1 .text
Vector36_handler F622 6 6 1 .text
Vector37_handler F628 6 6 1 .text
Vector38_handler F62E 6 6 1 .text
Vector39_handler F634 6 6 1 .text
Vector40_handler F63A 6 6 1 .text
Vector41_handler F640 6 6 1 .text
Vector42_handler F646 6 6 1 .text
Vector43_handler F64C 6 6 1 .text
Vector44_handler F652 6 6 1 .text
Vector45_handler F658 6 6 1 .text
Vector46_handler F65E 6 6 1 .text
Vector47_handler F664 6 6 1 .text
Vector48_handler F66A 6 6 1 .text
Vector49_handler F670 6 6 1 .text
Vector50_handler F676 6 6 1 .text
Vector51_handler F67C 6 6 1 .text
Vector52_handler F682 6 6 1 .text
Vector53_handler F688 6 6 1 .text
Vector54_handler F68E 6 6 1 .text
Vector55_handler F694 6 6 1 .text
Vector56_handler F69A 6 6 1 .text
Vector57_handler F6A0 6 6 1 .text
Vector58_handler F6A6 6 6 1 .text
Vector59_handler F6AC 6 6 1 .text
Vector60_handler F6B2 6 6 1 .text
Vector61_handler F6B8 6 6 1 .text
Vector62_handler F6BE 6 6 1 .text
reset_connected_handler FEF0 C 12 0 ENTRY
- VARIABLES:
_vectab FF80 80 128 0 .abs_section_ff80
MODULE: -- assert.c.o --
- PROCEDURES:
AssertFailure F78F 14 20 5 .text
AssertFailure F6C4 14 20 4 .text
- VARIABLES:
assert_failure_file 3DF6 2 2 1 .bss
assert_failure_line 3DF8 4 4 2 .bss
assert_failure_file 3D43 2 2 1 .bss
assert_failure_line 3D45 4 4 2 .bss
MODULE: -- can.c.o --
- PROCEDURES:
CanInit F6D8 9C 156 1 .text
CanTransmitPacket F774 51 81 1 .text
CanReceivePacket F7C5 84 132 1 .text
CanGetSpeedConfig F849 69 105 1 .text
- VARIABLES:
canTiming E8F9 24 36 4 .rodata
STRING.C..Work.software.Ope.1 E9A7 33 51 2 .rodata1
*********************************************************************************************
MODULE STATISTIC
@ -981,17 +978,17 @@ MODULE STATISTIC
main.c.o 0 132 85
backdoor.c.o 5 66 0
boot.c.o 0 27 0
com.c.o 65 67 0
com.c.o 9 67 0
cop.c.o 0 2 0
xcp.c.o 74 963 8
xcp.c.o 18 961 8
cpu.c.o 0 66 0
flash.c.o 1055 1443 235
nvm.c.o 0 58 0
timer.c.o 4 97 0
uart.c.o 67 236 52
start12.c.o 0 49 0
vectors.c.o 0 399 128
assert.c.o 6 20 0
can.c.o 0 474 87
other 256 10 2
*********************************************************************************************
@ -1010,8 +1007,7 @@ SECTION: ".text"
FlashVerifyChecksum FlashDone FlashInitBlock FlashSwitchBlock FlashAddToBlock
FlashWriteBlock FlashGetLinearAddrByte FlashGetPhysPage FlashGetPhysAddr
FlashExecuteCommand FlashOperate NvmInit NvmWrite NvmErase NvmVerifyChecksum
NvmDone TimerInit TimerReset TimerUpdate TimerGet UartInit UartTransmitPacket
UartReceivePacket UartReceiveByte UartTransmitByte reset_handler
NvmDone TimerInit TimerReset TimerUpdate TimerGet reset_handler
Vector0_handler Vector1_handler Vector2_handler Vector3_handler
Vector4_handler Vector5_handler Vector6_handler Vector7_handler
Vector8_handler Vector9_handler Vector10_handler Vector11_handler
@ -1027,16 +1023,16 @@ SECTION: ".text"
Vector48_handler Vector49_handler Vector50_handler Vector51_handler
Vector52_handler Vector53_handler Vector54_handler Vector55_handler
Vector56_handler Vector57_handler Vector58_handler Vector59_handler
Vector60_handler Vector61_handler Vector62_handler AssertFailure
Vector60_handler Vector61_handler Vector62_handler AssertFailure CanInit
CanTransmitPacket CanReceivePacket CanGetSpeedConfig
SECTION: ".bss"
backdoorOpen backdoorOpenTime comEntryStateConnect xcpCtoReqPacket.1 xcpInfo
blockInfo bootBlockInfo flashExecCmdRam flashMaxNrBlocks millisecond_counter
xcpCtoRxInProgress.4 xcpCtoReqPacket.2 xcpCtoRxLength.3 assert_failure_file
assert_failure_line
assert_failure_file assert_failure_line
SECTION: ".init"
Init _Startup
SECTION: ".rodata"
xcpStationId flashLayout flashExecCmd
xcpStationId flashLayout flashExecCmd canTiming
SECTION: ".rodata1"
STRING.C..Work.software.Ope.1 STRING.C..Work.software.Ope.1
STRING.C..Work.software.Ope.1
@ -2077,169 +2073,166 @@ OBJECT LIST SORTED BY ADDRESS
backdoorOpen 3900 1 1 3 .bss
backdoorOpenTime 3901 4 4 4 .bss
comEntryStateConnect 3905 1 1 2 .bss
xcpCtoReqPacket.1 3906 40 64 2 .bss
xcpInfo 3946 4A 74 102 .bss
blockInfo 3990 204 516 7 .bss
bootBlockInfo 3B94 204 516 11 .bss
flashExecCmdRam 3D98 16 22 2 .bss
flashMaxNrBlocks 3DAE 1 1 1 .bss
millisecond_counter 3DAF 4 4 8 .bss
xcpCtoRxInProgress.4 3DB3 1 1 3 .bss
xcpCtoReqPacket.2 3DB4 41 65 4 .bss
xcpCtoRxLength.3 3DF5 1 1 5 .bss
assert_failure_file 3DF6 2 2 1 .bss
assert_failure_line 3DF8 4 4 2 .bss
xcpCtoReqPacket.1 3906 8 8 2 .bss
xcpInfo 390E 12 18 102 .bss
blockInfo 3920 204 516 7 .bss
bootBlockInfo 3B24 204 516 11 .bss
flashExecCmdRam 3D28 16 22 2 .bss
flashMaxNrBlocks 3D3E 1 1 1 .bss
millisecond_counter 3D3F 4 4 8 .bss
assert_failure_file 3D43 2 2 1 .bss
assert_failure_line 3D45 4 4 2 .bss
Init E800 29 41 1 .init
_Startup E829 8 8 2 .init
xcpStationId E83B 8 8 1 .rodata
flashLayout E843 A0 160 39 .rodata
flashExecCmd E8E3 16 22 1 .rodata
STRING.C..Work.software.Ope.1 E8F9 55 85 1 .rodata1
STRING.C..Work.software.Ope.1 E94E 35 53 1 .rodata1
STRING.C..Work.software.Ope.1 E983 34 52 3 .rodata1
main E9B7 B 11 3 .text
Init E9C2 79 121 1 .text
BackDoorInit EA3B 11 17 1 .text
BackDoorCheck EA4C 31 49 2 .text
BootInit EA7D F 15 1 .text
BootTask EA8C C 12 1 .text
ComInit EA98 19 25 1 .text
ComTask EAB1 10 16 1 .text
ComFree EAC1 1 1 1 .text
ComTransmitPacket EAC2 F 15 1 .text
ComSetConnectEntryState EAD1 6 6 1 .text
ComIsConnected EAD7 4 4 1 .text
CopInit EADB 1 1 1 .text
CopService EADC 1 1 8 .text
XcpInit EADD 15 21 1 .text
XcpIsConnected EAF2 9 9 1 .text
XcpPacketTransmitted EAFB 4 4 1 .text
XcpPacketReceived EAFF E7 231 2 .text
XcpTransmitPacket EBE6 C 12 1 .text
XcpComputeChecksum EBF2 43 67 1 .text
XcpProtectResources EC35 4 4 2 .text
XcpSetCtoError EC39 10 16 9 .text
XcpCmdConnect EC49 2A 42 1 .text
XcpCmdDisconnect EC73 10 16 1 .text
XcpCmdGetStatus EC83 1A 26 1 .text
XcpCmdSynch EC9D 4 4 1 .text
XcpCmdGetId ECA1 22 34 1 .text
XcpCmdSetMta ECC3 1A 26 1 .text
XcpCmdUpload ECDD 4E 78 1 .text
XcpCmdShortUpload ED2B 55 85 1 .text
XcpCmdBuildCheckSum ED80 2C 44 1 .text
XcpCmdProgramStart EDAC 19 25 1 .text
XcpCmdProgramMax EDC5 43 67 1 .text
XcpCmdProgram EE08 5B 91 1 .text
XcpCmdProgramClear EE63 2A 42 1 .text
XcpCmdProgramReset EE8D E 14 1 .text
XcpCmdProgramPrepare EE9B 5 5 1 .text
CpuStartUserProgram EEA0 18 24 1 .text
CpuMemCopy EEB8 27 39 4 .text
CpuReset EEDF 3 3 1 .text
FlashInit EEE2 74 116 1 .text
FlashWrite EF56 B6 182 2 .text
FlashErase F00C DD 221 1 .text
FlashWriteChecksum F0E9 67 103 1 .text
FlashVerifyChecksum F150 8A 138 1 .text
FlashDone F1DA 35 53 1 .text
FlashInitBlock F20F 51 81 2 .text
FlashSwitchBlock F260 4E 78 2 .text
FlashAddToBlock F2AE BD 189 1 .text
FlashWriteBlock F36B 78 120 3 .text
FlashGetLinearAddrByte F3E3 1D 29 5 .text
FlashGetPhysPage F400 C 12 3 .text
FlashGetPhysAddr F40C 6 6 3 .text
FlashExecuteCommand F412 1F 31 1 .text
FlashOperate F431 54 84 2 .text
NvmInit F485 3 3 1 .text
NvmWrite F488 16 22 2 .text
NvmErase F49E 12 18 1 .text
NvmVerifyChecksum F4B0 4 4 1 .text
NvmDone F4B4 B 11 1 .text
TimerInit F4BF 1D 29 1 .text
TimerReset F4DC 1C 28 2 .text
TimerUpdate F4F8 1F 31 2 .text
TimerGet F517 9 9 2 .text
UartInit F520 19 25 1 .text
UartTransmitPacket F539 5E 94 1 .text
UartReceivePacket F597 50 80 1 .text
UartReceiveByte F5E7 11 17 2 .text
UartTransmitByte F5F8 14 20 2 .text
reset_handler F60C 9 9 2 .text
Vector0_handler F615 6 6 1 .text
Vector1_handler F61B 6 6 1 .text
Vector2_handler F621 6 6 1 .text
Vector3_handler F627 6 6 1 .text
Vector4_handler F62D 6 6 1 .text
Vector5_handler F633 6 6 1 .text
Vector6_handler F639 6 6 1 .text
Vector7_handler F63F 6 6 1 .text
Vector8_handler F645 6 6 1 .text
Vector9_handler F64B 6 6 1 .text
Vector10_handler F651 6 6 1 .text
Vector11_handler F657 6 6 1 .text
Vector12_handler F65D 6 6 1 .text
Vector13_handler F663 6 6 1 .text
Vector14_handler F669 6 6 1 .text
Vector15_handler F66F 6 6 1 .text
Vector16_handler F675 6 6 1 .text
Vector17_handler F67B 6 6 1 .text
Vector18_handler F681 6 6 1 .text
Vector19_handler F687 6 6 1 .text
Vector20_handler F68D 6 6 1 .text
Vector21_handler F693 6 6 1 .text
Vector22_handler F699 6 6 1 .text
Vector23_handler F69F 6 6 1 .text
Vector24_handler F6A5 6 6 1 .text
Vector25_handler F6AB 6 6 1 .text
Vector26_handler F6B1 6 6 1 .text
Vector27_handler F6B7 6 6 1 .text
Vector28_handler F6BD 6 6 1 .text
Vector29_handler F6C3 6 6 1 .text
Vector30_handler F6C9 6 6 1 .text
Vector31_handler F6CF 6 6 1 .text
Vector32_handler F6D5 6 6 1 .text
Vector33_handler F6DB 6 6 1 .text
Vector34_handler F6E1 6 6 1 .text
Vector35_handler F6E7 6 6 1 .text
Vector36_handler F6ED 6 6 1 .text
Vector37_handler F6F3 6 6 1 .text
Vector38_handler F6F9 6 6 1 .text
Vector39_handler F6FF 6 6 1 .text
Vector40_handler F705 6 6 1 .text
Vector41_handler F70B 6 6 1 .text
Vector42_handler F711 6 6 1 .text
Vector43_handler F717 6 6 1 .text
Vector44_handler F71D 6 6 1 .text
Vector45_handler F723 6 6 1 .text
Vector46_handler F729 6 6 1 .text
Vector47_handler F72F 6 6 1 .text
Vector48_handler F735 6 6 1 .text
Vector49_handler F73B 6 6 1 .text
Vector50_handler F741 6 6 1 .text
Vector51_handler F747 6 6 1 .text
Vector52_handler F74D 6 6 1 .text
Vector53_handler F753 6 6 1 .text
Vector54_handler F759 6 6 1 .text
Vector55_handler F75F 6 6 1 .text
Vector56_handler F765 6 6 1 .text
Vector57_handler F76B 6 6 1 .text
Vector58_handler F771 6 6 1 .text
Vector59_handler F777 6 6 1 .text
Vector60_handler F77D 6 6 1 .text
Vector61_handler F783 6 6 1 .text
Vector62_handler F789 6 6 1 .text
AssertFailure F78F 14 20 5 .text
_LSHL F7A3 11 17 3 RUNTIME
_LSHRU F7B4 11 17 5 RUNTIME
_LCMP F7C5 19 25 4 RUNTIME
_LINC F7DE 5 5 4 RUNTIME
_LDEC F7E3 8 8 6 RUNTIME
_lDivMod F7EB BE 190 1 RUNTIME
_LDIVU F8A9 E 14 1 RUNTIME
_ILSEXT F8B7 7 7 1 RUNTIME
_CASE_DIRECT_BYTE F8BE 5 5 3 RUNTIME
canTiming E8F9 24 36 4 .rodata
STRING.C..Work.software.Ope.1 E91D 55 85 1 .rodata1
STRING.C..Work.software.Ope.1 E972 35 53 1 .rodata1
STRING.C..Work.software.Ope.1 E9A7 33 51 2 .rodata1
main E9DA B 11 3 .text
Init E9E5 79 121 1 .text
BackDoorInit EA5E 11 17 1 .text
BackDoorCheck EA6F 31 49 2 .text
BootInit EAA0 F 15 1 .text
BootTask EAAF C 12 1 .text
ComInit EABB 19 25 1 .text
ComTask EAD4 10 16 1 .text
ComFree EAE4 1 1 1 .text
ComTransmitPacket EAE5 F 15 1 .text
ComSetConnectEntryState EAF4 6 6 1 .text
ComIsConnected EAFA 4 4 1 .text
CopInit EAFE 1 1 1 .text
CopService EAFF 1 1 8 .text
XcpInit EB00 15 21 1 .text
XcpIsConnected EB15 9 9 1 .text
XcpPacketTransmitted EB1E 4 4 1 .text
XcpPacketReceived EB22 E7 231 2 .text
XcpTransmitPacket EC09 C 12 1 .text
XcpComputeChecksum EC15 43 67 1 .text
XcpProtectResources EC58 4 4 2 .text
XcpSetCtoError EC5C 10 16 9 .text
XcpCmdConnect EC6C 29 41 1 .text
XcpCmdDisconnect EC95 10 16 1 .text
XcpCmdGetStatus ECA5 1A 26 1 .text
XcpCmdSynch ECBF 4 4 1 .text
XcpCmdGetId ECC3 22 34 1 .text
XcpCmdSetMta ECE5 1A 26 1 .text
XcpCmdUpload ECFF 4E 78 1 .text
XcpCmdShortUpload ED4D 55 85 1 .text
XcpCmdBuildCheckSum EDA2 2C 44 1 .text
XcpCmdProgramStart EDCE 18 24 1 .text
XcpCmdProgramMax EDE6 43 67 1 .text
XcpCmdProgram EE29 5B 91 1 .text
XcpCmdProgramClear EE84 2A 42 1 .text
XcpCmdProgramReset EEAE E 14 1 .text
XcpCmdProgramPrepare EEBC 5 5 1 .text
CpuStartUserProgram EEC1 18 24 1 .text
CpuMemCopy EED9 27 39 3 .text
CpuReset EF00 3 3 1 .text
FlashInit EF03 74 116 1 .text
FlashWrite EF77 B6 182 2 .text
FlashErase F02D DD 221 1 .text
FlashWriteChecksum F10A 67 103 1 .text
FlashVerifyChecksum F171 8A 138 1 .text
FlashDone F1FB 35 53 1 .text
FlashInitBlock F230 51 81 2 .text
FlashSwitchBlock F281 4E 78 2 .text
FlashAddToBlock F2CF BD 189 1 .text
FlashWriteBlock F38C 78 120 3 .text
FlashGetLinearAddrByte F404 1D 29 5 .text
FlashGetPhysPage F421 C 12 3 .text
FlashGetPhysAddr F42D 6 6 3 .text
FlashExecuteCommand F433 1F 31 1 .text
FlashOperate F452 54 84 2 .text
NvmInit F4A6 3 3 1 .text
NvmWrite F4A9 16 22 2 .text
NvmErase F4BF 12 18 1 .text
NvmVerifyChecksum F4D1 4 4 1 .text
NvmDone F4D5 B 11 1 .text
TimerInit F4E0 1D 29 1 .text
TimerReset F4FD 1C 28 2 .text
TimerUpdate F519 1F 31 2 .text
TimerGet F538 9 9 2 .text
reset_handler F541 9 9 2 .text
Vector0_handler F54A 6 6 1 .text
Vector1_handler F550 6 6 1 .text
Vector2_handler F556 6 6 1 .text
Vector3_handler F55C 6 6 1 .text
Vector4_handler F562 6 6 1 .text
Vector5_handler F568 6 6 1 .text
Vector6_handler F56E 6 6 1 .text
Vector7_handler F574 6 6 1 .text
Vector8_handler F57A 6 6 1 .text
Vector9_handler F580 6 6 1 .text
Vector10_handler F586 6 6 1 .text
Vector11_handler F58C 6 6 1 .text
Vector12_handler F592 6 6 1 .text
Vector13_handler F598 6 6 1 .text
Vector14_handler F59E 6 6 1 .text
Vector15_handler F5A4 6 6 1 .text
Vector16_handler F5AA 6 6 1 .text
Vector17_handler F5B0 6 6 1 .text
Vector18_handler F5B6 6 6 1 .text
Vector19_handler F5BC 6 6 1 .text
Vector20_handler F5C2 6 6 1 .text
Vector21_handler F5C8 6 6 1 .text
Vector22_handler F5CE 6 6 1 .text
Vector23_handler F5D4 6 6 1 .text
Vector24_handler F5DA 6 6 1 .text
Vector25_handler F5E0 6 6 1 .text
Vector26_handler F5E6 6 6 1 .text
Vector27_handler F5EC 6 6 1 .text
Vector28_handler F5F2 6 6 1 .text
Vector29_handler F5F8 6 6 1 .text
Vector30_handler F5FE 6 6 1 .text
Vector31_handler F604 6 6 1 .text
Vector32_handler F60A 6 6 1 .text
Vector33_handler F610 6 6 1 .text
Vector34_handler F616 6 6 1 .text
Vector35_handler F61C 6 6 1 .text
Vector36_handler F622 6 6 1 .text
Vector37_handler F628 6 6 1 .text
Vector38_handler F62E 6 6 1 .text
Vector39_handler F634 6 6 1 .text
Vector40_handler F63A 6 6 1 .text
Vector41_handler F640 6 6 1 .text
Vector42_handler F646 6 6 1 .text
Vector43_handler F64C 6 6 1 .text
Vector44_handler F652 6 6 1 .text
Vector45_handler F658 6 6 1 .text
Vector46_handler F65E 6 6 1 .text
Vector47_handler F664 6 6 1 .text
Vector48_handler F66A 6 6 1 .text
Vector49_handler F670 6 6 1 .text
Vector50_handler F676 6 6 1 .text
Vector51_handler F67C 6 6 1 .text
Vector52_handler F682 6 6 1 .text
Vector53_handler F688 6 6 1 .text
Vector54_handler F68E 6 6 1 .text
Vector55_handler F694 6 6 1 .text
Vector56_handler F69A 6 6 1 .text
Vector57_handler F6A0 6 6 1 .text
Vector58_handler F6A6 6 6 1 .text
Vector59_handler F6AC 6 6 1 .text
Vector60_handler F6B2 6 6 1 .text
Vector61_handler F6B8 6 6 1 .text
Vector62_handler F6BE 6 6 1 .text
AssertFailure F6C4 14 20 4 .text
CanInit F6D8 9C 156 1 .text
CanTransmitPacket F774 51 81 1 .text
CanReceivePacket F7C5 84 132 1 .text
CanGetSpeedConfig F849 69 105 1 .text
_LSHL F8B2 11 17 3 RUNTIME
_LSHRU F8C3 11 17 6 RUNTIME
_LCMP F8D4 19 25 4 RUNTIME
_LINC F8ED 5 5 4 RUNTIME
_LDEC F8F2 8 8 6 RUNTIME
_lDivMod F8FA BE 190 1 RUNTIME
_LDIVU F9B8 E 14 1 RUNTIME
_ILSEXT F9C6 7 7 1 RUNTIME
_CASE_DIRECT_BYTE F9CD 5 5 3 RUNTIME
reset_connected_handler FEF0 C 12 0 ENTRY
_vectab FF80 80 128 0 .abs_section_ff80
@ -2262,7 +2255,7 @@ rtshc12.c.o (ansisi.lib):
*********************************************************************************************
COPYDOWN SECTION
---------------------------------------------------------------------------------------------
------- ROM-ADDRESS: 0xF8C3 ---- SIZE 2 ---
------- ROM-ADDRESS: 0xF9D2 ---- SIZE 2 ---
Filling bytes inserted
0000
@ -2280,11 +2273,11 @@ BackDoorCheck USES ComIsConnected backdoorOpen TimerGet
backdoorOpenTime _LCMP CpuStartUserProgram
BootInit USES CopInit TimerInit NvmInit ComInit BackDoorInit
BootTask USES CopService TimerUpdate ComTask BackDoorCheck
ComInit USES XcpInit UartInit comEntryStateConnect
ComInit USES XcpInit CanInit comEntryStateConnect
XcpPacketReceived
ComTask USES xcpCtoReqPacket.1 UartReceivePacket
ComTask USES xcpCtoReqPacket.1 CanReceivePacket
XcpPacketReceived
ComTransmitPacket USES UartTransmitPacket XcpPacketTransmitted
ComTransmitPacket USES CanTransmitPacket XcpPacketTransmitted
ComSetConnectEntryState USES comEntryStateConnect
ComIsConnected USES XcpIsConnected
XcpInit USES xcpInfo
@ -2347,14 +2340,15 @@ NvmDone USES FlashWriteChecksum FlashDone
TimerInit USES TimerReset millisecond_counter
TimerUpdate USES millisecond_counter _LINC
TimerGet USES TimerUpdate millisecond_counter
UartTransmitPacket USES STRING.C..Work.software.Ope.1 AssertFailure
UartTransmitByte CopService
UartReceivePacket USES xcpCtoRxInProgress.4 xcpCtoReqPacket.2
UartReceiveByte xcpCtoRxLength.3 CpuMemCopy
UartTransmitByte USES CopService
reset_handler USES __SEG_END_SSTACK _Startup main
AssertFailure USES assert_failure_file assert_failure_line
CopService
CanInit USES CanGetSpeedConfig STRING.C..Work.software.Ope.1
AssertFailure
CanTransmitPacket USES STRING.C..Work.software.Ope.1 AssertFailure
CopService
CanReceivePacket USES _LSHRU
CanGetSpeedConfig USES canTiming CopService
_LDIVU USES _lDivMod
reset_connected_handler USES __SEG_END_SSTACK _Startup
ComSetConnectEntryState main
@ -2418,8 +2412,14 @@ DEPENDENCY TREE
| | | |
| | | +- XcpInit
| | | |
| | | +- UartInit
| | | |
| | | +- CanInit
| | | | |
| | | | +- CanGetSpeedConfig
| | | | | |
| | | | | +- CopService (see above)
| | | | |
| | | | +- AssertFailure (see above)
| | | |
| | | +- XcpPacketReceived (recursive dependency)
| | | |
| | | +- XcpCmdConnect
@ -2588,14 +2588,10 @@ DEPENDENCY TREE
| | | |
| | | +- ComTransmitPacket
| | | |
| | | +- UartTransmitPacket
| | | +- CanTransmitPacket
| | | | |
| | | | +- AssertFailure (see above)
| | | | |
| | | | +- UartTransmitByte
| | | | | |
| | | | | +- CopService (see above)
| | | | |
| | | | +- CopService (see above)
| | | |
| | | +- XcpPacketTransmitted
@ -2640,11 +2636,9 @@ DEPENDENCY TREE
| |
| +- ComTask
| | |
| | +- UartReceivePacket
| | +- CanReceivePacket
| | | |
| | | +- UartReceiveByte
| | | |
| | | +- CpuMemCopy (see above)
| | | +- _LSHRU (see above)
| | |
| | +- XcpPacketReceived (see above) (recursive dependency)
| |
@ -2797,5 +2791,5 @@ STATISTIC SECTION
ExeFile:
--------
Number of blocks to be downloaded: 7
Total size of all blocks to be downloaded: 4433
Total size of all blocks to be downloaded: 4704

View File

@ -61,6 +61,33 @@
/****************************************************************************************
* C O M M U N I C A T I O N I N T E R F A C E C O N F I G U R A T I O N
****************************************************************************************/
/* The CAN communication interface is selected by setting the BOOT_COM_CAN_ENABLE
* configurable to 1. Configurable BOOT_COM_CAN_BAUDRATE selects the communication speed
* in bits/second. Two CAN messages are reserved for communication with the host. The
* message identifier for sending data from the target to the host is configured with
* BOOT_COM_CAN_TXMSG_ID. The one for receiving data from the host is configured with
* BOOT_COM_CAN_RXMSG_ID. The maximum amount of data bytes in a message for data
* transmission and reception is set through BOOT_COM_CAN_TX_MAX_DATA and
* BOOT_COM_CAN_RX_MAX_DATA, respectively. It is common for a microcontroller to have more
* than 1 CAN controller on board. The zero-based BOOT_COM_CAN_CHANNEL_INDEX selects the
* CAN controller channel.
*
*/
/** \brief Enable/disable CAN transport layer. */
#define BOOT_COM_CAN_ENABLE (1)
/** \brief Configure the desired CAN baudrate. */
#define BOOT_COM_CAN_BAUDRATE (500000)
/** \brief Configure CAN message ID target->host. */
#define BOOT_COM_CAN_TX_MSG_ID (0x7E1)
/** \brief Configure number of bytes in the target->host CAN message. */
#define BOOT_COM_CAN_TX_MAX_DATA (8)
/** \brief Configure CAN message ID host->target. */
#define BOOT_COM_CAN_RX_MSG_ID (0x667)
/** \brief Configure number of bytes in the host->target CAN message. */
#define BOOT_COM_CAN_RX_MAX_DATA (8)
/** \brief Select the desired CAN peripheral as a zero based index. */
#define BOOT_COM_CAN_CHANNEL_INDEX (0)
/* The UART communication interface is selected by setting the BOOT_COM_UART_ENABLE
* configurable to 1. Configurable BOOT_COM_UART_BAUDRATE selects the communication speed
* in bits/second. The maximum amount of data bytes in a message for data transmission
@ -70,7 +97,7 @@
*
*/
/** \brief Enable/disable UART transport layer. */
#define BOOT_COM_UART_ENABLE (1)
#define BOOT_COM_UART_ENABLE (0)
/** \brief Configure the desired communication speed. */
#define BOOT_COM_UART_BAUDRATE (57600)
/** \brief Configure number of bytes in the target->host data packet. */

View File

@ -52,11 +52,6 @@ static void Init(void);
****************************************************************************************/
void main(void)
{
/* ##Vg TODO basic bootloader works, including the timed backdoor. next steps:
* - bootloader activation from user program
* - support for CAN
*/
/* initialize the microcontroller */
Init();

View File

@ -1,21 +1,30 @@
S0730000433A5C576F726B5C736F6674776172655C4F70656E424C545C5461726765745C44656D6F5C48435331325F457662706C75735F447261676F6E3132705F436F646557617272696F725C50726F675C62696E5C64656D6F70726F675F657662706C75735F647261676F6E3132702E616273F8
S2240FC000FEC033FDC031270E35ED31EC3169700434FB310326F2FEC035EC31270BED3118B8
S2240FC0200A30700434F920F13DCF110007D206C1120001C037C1AC1100004C3B16C147CC4A
S2240FC040FEF06C8015F300003A3D7900CB7900CA7900C87900C9C61A873B5AC85BC94CCB6A
S2240FC060043A3DF611002612CC110116C0A7042135C6017B11007911423DF6114287C3004E
S2240FC0800187C3110116C0A704211B721142F61142F111012610791100F6110204A107F6F6
S2240FC0A01103260207953D3B4FCC2009D6CFEE806B00C60121C7303D10EF3D1C026A021D5B
S2240FC0C00268024C03014D01013D1B9C16C16A6C826E80B31146B7C5F21145B21144CD018D
S2240FC0E0F435B746C7873BB754B76516C18E251FF61143260AC6017B11434C0101200679B0
S2240FC10011434D0101EC827C1146EC807C11441B843D16C12016C04A16C0CA16C06320F806
S2240FC12016C0BB16C12906C0B816C1474C4001C6015B4EDC44C35DC05C504C4C014C46806A
S2240FC140C787B74506C16379004C79004679004D79004079004779004879004979004A79D5
S2240FC160004B3D7C114A7E11483DFC114AFE11483DC6015B4EDC50C35DC05C50FC114AFED0
S2240FC180114816C1A77C114A7E11480B20FEAC84270E34B7C5E285A284B7C510FB30200262
S2120FC1A0AE82311B84054004A401083D00004A
S2240FE77EAA55C18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CE5
S2240FE79EC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18C77
S2240FE7BEC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18CC18C57
S2240FE7DEC18CC18CC18CC18CC18CC18CC18CC18CC171C18CC18CC18CC18CC18CC18CC18C52
S2240FC0200A30700434F920F13DCF110007D206C2280001C037C2D31100000905020602065E
S2240FC0400307030803090309040A040B040C040C050D050E050F050F061006100710083B8F
S2240FC06016C25DCCFEF06C8015F300003A3D6CAC3B6984E6848759B745E6E2C03B87B74685
S2240FC080E6E2C03C19EE02B764ED8A136C80CC1F40B756EE80181004642ECC1F40EE801819
S2240FC0A010B7516B852721C140221D53EE886B00E6EAC03C53861012A6EAC03B4337AAB082
S2240FC0C0EE826A00C60120096284E684C11225A3C71B863D1B96C6017B01401F014101FB61
S2240FC0E0C6807B0141CC01F43B1A82341A85B75416C06E1B8404210AE6807B0142E6817B9B
S2240FC10001431D014B101D014B20C7876C886C8653436C84861F6C82790150C6087B015113
S2240FC120790152790153C6FF7B0154C6F77B0155C6FF7B0156587B0157790158790159794F
S2240FC140015A79015B577B015CC6E77B015D79015E79015F1D0140011E014101FB1B8A3D98
S2240FC1601B9C1F014401641E01610810FC016049494949496C82C7876C80202EFE0162FCF6
S2240FC1800160C4078749B7C54656CD00003BFC0160C4E03BC60334EE8216C2A4EA85AA84AD
S2240FC1A06C88B754EA81AA806CA5EC828C06672616EC802612F6016404A10CF601652607EA
S2240FC1C01D0144FE16C05F1D0144FE1B843D10EF3D1C026A021D0268024C03014D01013D4F
S2240FC1E01B9C16C2806C826E80B31103B7C5F21102B21101CD01F435B746C7873BB754B7F5
S2240FC2006516C2B5251FF61100260AC6017B11004C010120067911004D0101EC827C1103FF
S2240FC220EC807C11011B843D16C23616C0D416C1E016C16020F816C1D116C23F06C1CE16EC
S2240FC240C25D4C4001C6015B4EDC44C35DC05C504C4C014C4680C787B74506C27979004C07
S2240FC26079004679004D79004079004779004879004979004A79004B3D7C11077E11053D00
S2240FC280FC1107FE11053DC6015B4EDC50C35DC05C50FC1107FE110516C2CE7C11077E110C
S2240FC2A0050B20FE87D7B7C6270AB7C549B7C546560436F63DAC84270E34B7C5E285A28444
S2190FC2C0B7C510FB302002AE82311B84054004A401083D000049
S2240FE77EAA55C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A28C
S2240FE79EC2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A207
S2240FE7BEC2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2E7
S2240FE7DEC2A2C2A2C2A2C2A2C2A2C2A2C2A2C2A2C287C2A2C2A2C2A2C2A2C2A2C2A2C2A2E2
S2060FE7FEC0291C
S9030000FC

View File

@ -29,8 +29,8 @@ Entry point: 0xC029 (_Startup)
_startupData is allocated at 0xC031 and uses 6 Bytes
extern struct _tagStartup {
unsigned nofZeroOut 1
_Range pZeroOut 0x1100 76
_Copy *toCopyDownBeg 0xC1AC
_Range pZeroOut 0x1100 9
_Copy *toCopyDownBeg 0xC2D3
} _startupData;
*********************************************************************************************
@ -39,8 +39,9 @@ Section Name Size Type From To Segment
---------------------------------------------------------------------------------------------
.init 49 R 0xC000 0xC030 ROM_C000
.startData 10 R 0xC031 0xC03A ROM_C000
.text 339 R 0xC03B 0xC18D ROM_C000
.copy 2 R 0xC1AC 0xC1AD ROM_C000
.rodata 36 R 0xC03B 0xC05E ROM_C000
.text 581 R 0xC05F 0xC2A3 ROM_C000
.copy 2 R 0xC2D3 0xC2D4 ROM_C000
.stack 256 R/W 0x1000 0x10FF RAM
.abs_section_8 1 N/I 0x8 0x8 .absSeg0
.abs_section_9 1 N/I 0x9 0x9 .absSeg1
@ -384,12 +385,12 @@ Section Name Size Type From To Segment
.abs_section_2ae 2 N/I 0x2AE 0x2AF .absSeg339
.abs_section_2be 2 N/I 0x2BE 0x2BF .absSeg340
.abs_section_e77e 130 R 0xE77E 0xE7FF .absSeg341
.bss 76 R/W 0x1100 0x114B RAM
RUNTIME 30 R 0xC18E 0xC1AB ROM_C000
.bss 9 R/W 0x1100 0x1108 RAM
RUNTIME 47 R 0xC2A4 0xC2D2 ROM_C000
Summary of section sizes per section type:
READ_ONLY (R): 230 (dec: 560)
READ_WRITE (R/W): 14C (dec: 332)
READ_ONLY (R): 357 (dec: 855)
READ_WRITE (R/W): 109 (dec: 265)
NO_INIT (N/I): 190 (dec: 400)
*********************************************************************************************
@ -403,8 +404,9 @@ OBJECT-ALLOCATION SECTION
---------------------------------------------------------------------------------------------
MODULE: -- rtshc12.c.o (ansisi.lib) --
- PROCEDURES:
_LCMP C18E 19 25 1 RUNTIME
_LINC C1A7 5 5 1 RUNTIME
_LSHRU C2A4 11 17 1 RUNTIME
_LCMP C2B5 19 25 1 RUNTIME
_LINC C2CE 5 5 1 RUNTIME
- VARIABLES:
MODULE: -- mc9s12dg256.c.o --
- PROCEDURES:
@ -484,12 +486,12 @@ MODULE: -- mc9s12dg256.c.o --
_PWMSCLA A8 1 1 0 .abs_section_a8
_PWMSCLB A9 1 1 0 .abs_section_a9
_PWMSDN C4 1 1 0 .abs_section_c4
_SCI0CR1 CA 1 1 1 .abs_section_ca
_SCI0CR2 CB 1 1 2 .abs_section_cb
_SCI0SR1 CC 1 1 1 .abs_section_cc
_SCI0CR1 CA 1 1 0 .abs_section_ca
_SCI0CR2 CB 1 1 0 .abs_section_cb
_SCI0SR1 CC 1 1 0 .abs_section_cc
_SCI0SR2 CD 1 1 0 .abs_section_cd
_SCI0DRH CE 1 1 0 .abs_section_ce
_SCI0DRL CF 1 1 1 .abs_section_cf
_SCI0DRL CF 1 1 0 .abs_section_cf
_SCI1CR1 D2 1 1 0 .abs_section_d2
_SCI1CR2 D3 1 1 0 .abs_section_d3
_SCI1SR1 D4 1 1 0 .abs_section_d4
@ -532,42 +534,42 @@ MODULE: -- mc9s12dg256.c.o --
_ATD1STAT1 12B 1 1 0 .abs_section_12b
_ATD1DIEN 12D 1 1 0 .abs_section_12d
_PORTAD1 12F 1 1 0 .abs_section_12f
_CAN0CTL0 140 1 1 0 .abs_section_140
_CAN0CTL1 141 1 1 0 .abs_section_141
_CAN0BTR0 142 1 1 0 .abs_section_142
_CAN0BTR1 143 1 1 0 .abs_section_143
_CAN0RFLG 144 1 1 0 .abs_section_144
_CAN0CTL0 140 1 1 2 .abs_section_140
_CAN0CTL1 141 1 1 3 .abs_section_141
_CAN0BTR0 142 1 1 1 .abs_section_142
_CAN0BTR1 143 1 1 1 .abs_section_143
_CAN0RFLG 144 1 1 3 .abs_section_144
_CAN0RIER 145 1 1 0 .abs_section_145
_CAN0TFLG 146 1 1 0 .abs_section_146
_CAN0TIER 147 1 1 0 .abs_section_147
_CAN0TARQ 148 1 1 0 .abs_section_148
_CAN0TAAK 149 1 1 0 .abs_section_149
_CAN0TBSEL 14A 1 1 0 .abs_section_14a
_CAN0IDAC 14B 1 1 0 .abs_section_14b
_CAN0IDAC 14B 1 1 2 .abs_section_14b
_CAN0RXERR 14E 1 1 0 .abs_section_14e
_CAN0TXERR 14F 1 1 0 .abs_section_14f
_CAN0IDAR0 150 1 1 0 .abs_section_150
_CAN0IDAR1 151 1 1 0 .abs_section_151
_CAN0IDAR2 152 1 1 0 .abs_section_152
_CAN0IDAR3 153 1 1 0 .abs_section_153
_CAN0IDMR0 154 1 1 0 .abs_section_154
_CAN0IDMR1 155 1 1 0 .abs_section_155
_CAN0IDMR2 156 1 1 0 .abs_section_156
_CAN0IDMR3 157 1 1 0 .abs_section_157
_CAN0IDAR4 158 1 1 0 .abs_section_158
_CAN0IDAR5 159 1 1 0 .abs_section_159
_CAN0IDAR6 15A 1 1 0 .abs_section_15a
_CAN0IDAR7 15B 1 1 0 .abs_section_15b
_CAN0IDMR4 15C 1 1 0 .abs_section_15c
_CAN0IDMR5 15D 1 1 0 .abs_section_15d
_CAN0IDMR6 15E 1 1 0 .abs_section_15e
_CAN0IDMR7 15F 1 1 0 .abs_section_15f
_CAN0RXIDR0 160 1 1 0 .abs_section_160
_CAN0RXIDR1 161 1 1 0 .abs_section_161
_CAN0IDAR0 150 1 1 1 .abs_section_150
_CAN0IDAR1 151 1 1 1 .abs_section_151
_CAN0IDAR2 152 1 1 1 .abs_section_152
_CAN0IDAR3 153 1 1 1 .abs_section_153
_CAN0IDMR0 154 1 1 1 .abs_section_154
_CAN0IDMR1 155 1 1 1 .abs_section_155
_CAN0IDMR2 156 1 1 1 .abs_section_156
_CAN0IDMR3 157 1 1 1 .abs_section_157
_CAN0IDAR4 158 1 1 1 .abs_section_158
_CAN0IDAR5 159 1 1 1 .abs_section_159
_CAN0IDAR6 15A 1 1 1 .abs_section_15a
_CAN0IDAR7 15B 1 1 1 .abs_section_15b
_CAN0IDMR4 15C 1 1 1 .abs_section_15c
_CAN0IDMR5 15D 1 1 1 .abs_section_15d
_CAN0IDMR6 15E 1 1 1 .abs_section_15e
_CAN0IDMR7 15F 1 1 1 .abs_section_15f
_CAN0RXIDR0 160 1 1 4 .abs_section_160
_CAN0RXIDR1 161 1 1 1 .abs_section_161
_CAN0RXIDR2 162 1 1 0 .abs_section_162
_CAN0RXIDR3 163 1 1 0 .abs_section_163
_CAN0RXDSR0 164 1 1 0 .abs_section_164
_CAN0RXDSR1 165 1 1 0 .abs_section_165
_CAN0RXDSR0 164 1 1 1 .abs_section_164
_CAN0RXDSR1 165 1 1 1 .abs_section_165
_CAN0RXDSR2 166 1 1 0 .abs_section_166
_CAN0RXDSR3 167 1 1 0 .abs_section_167
_CAN0RXDSR4 168 1 1 0 .abs_section_168
@ -734,7 +736,7 @@ MODULE: -- mc9s12dg256.c.o --
_PWMDTY23 BE 2 2 0 .abs_section_be
_PWMDTY45 C0 2 2 0 .abs_section_c0
_PWMDTY67 C2 2 2 0 .abs_section_c2
_SCI0BD C8 2 2 4 .abs_section_c8
_SCI0BD C8 2 2 0 .abs_section_c8
_SCI1BD D0 2 2 0 .abs_section_d0
_ATD1CTL23 122 2 2 0 .abs_section_122
_ATD1CTL45 124 2 2 0 .abs_section_124
@ -752,29 +754,27 @@ MODULE: -- mc9s12dg256.c.o --
_CAN4TXTSR 2BE 2 2 0 .abs_section_2be
MODULE: -- boot.c.o --
- PROCEDURES:
BootActivate C03B F 15 1 .text
BootComInit C04A 19 25 1 .text
BootComCheckActivationRequest C063 44 68 1 .text
UartReceiveByte C0A7 11 17 2 .text
BootActivate C05F F 15 1 .text
CanGetSpeedConfig C06E 66 102 1 .text
BootComInit C0D4 8C 140 1 .text
BootComCheckActivationRequest C160 6E 110 1 .text
- VARIABLES:
xcpCtoRxInProgress.3 1100 1 1 3 .bss
xcpCtoReqPacket.1 1101 41 65 5 .bss
xcpCtoRxLength.2 1142 1 1 4 .bss
canTiming C03B 24 36 4 .rodata
MODULE: -- irq.c.o --
- PROCEDURES:
IrqInterruptEnable C0B8 3 3 1 .text
IrqInterruptEnable C1CE 3 3 1 .text
- VARIABLES:
MODULE: -- led.c.o --
- PROCEDURES:
LedInit C0BB F 15 1 .text
LedToggle C0CA 48 72 1 .text
LedInit C1D1 F 15 1 .text
LedToggle C1E0 48 72 1 .text
- VARIABLES:
led_toggle_state.1 1143 1 1 3 .bss
timer_counter_last.2 1144 4 4 5 .bss
led_toggle_state.1 1100 1 1 3 .bss
timer_counter_last.2 1101 4 4 5 .bss
MODULE: -- main.c.o --
- PROCEDURES:
main C112 E 14 1 .text
Init C120 9 9 1 .text
main C228 E 14 1 .text
Init C236 9 9 1 .text
- VARIABLES:
MODULE: -- start12.c.o --
- PROCEDURES:
@ -786,16 +786,16 @@ MODULE: -- start12.c.o --
__SEG_END_SSTACK 1100 0 0 1
MODULE: -- time.c.o --
- PROCEDURES:
TimeInit C129 1E 30 1 .text
TimeDeinit C147 1C 28 2 .text
TimeSet C163 7 7 1 .text
TimeGet C16A 7 7 1 .text
TimeISRHandler C171 1B 27 1 .text
TimeInit C23F 1E 30 1 .text
TimeDeinit C25D 1C 28 2 .text
TimeSet C279 7 7 1 .text
TimeGet C280 7 7 1 .text
TimeISRHandler C287 1B 27 1 .text
- VARIABLES:
millisecond_counter 1148 4 4 8 .bss
millisecond_counter 1105 4 4 8 .bss
MODULE: -- vectors.c.o --
- PROCEDURES:
UnusedISR C18C 2 2 62 .text
UnusedISR C2A2 2 2 62 .text
- VARIABLES:
_vectab E77E 82 130 0 .abs_section_e77e
@ -803,9 +803,9 @@ MODULE: -- vectors.c.o --
MODULE STATISTIC
Name Data Code Const
---------------------------------------------------------------------------------------------
rtshc12.c.o (ansisi.lib) 0 30 0
rtshc12.c.o (ansisi.lib) 0 47 0
mc9s12dg256.c.o 400 0 0
boot.c.o 67 125 0
boot.c.o 0 367 36
irq.c.o 0 3 0
led.c.o 5 87 0
main.c.o 0 23 0
@ -818,16 +818,17 @@ MODULE STATISTIC
SECTION USE IN OBJECT-ALLOCATION SECTION
---------------------------------------------------------------------------------------------
SECTION: ".text"
BootActivate BootComInit BootComCheckActivationRequest UartReceiveByte
BootActivate CanGetSpeedConfig BootComInit BootComCheckActivationRequest
IrqInterruptEnable LedInit LedToggle main Init TimeInit TimeDeinit TimeSet
TimeGet TimeISRHandler UnusedISR
SECTION: ".bss"
xcpCtoRxInProgress.3 xcpCtoReqPacket.1 xcpCtoRxLength.2 led_toggle_state.1
timer_counter_last.2 millisecond_counter
led_toggle_state.1 timer_counter_last.2 millisecond_counter
SECTION: ".init"
Init _Startup
SECTION: ".rodata"
canTiming
SECTION: "RUNTIME"
_LCMP _LINC
_LSHRU _LCMP _LINC
SECTION: ".abs_section_8"
_PORTE
SECTION: ".abs_section_9"
@ -1635,13 +1636,13 @@ OBJECT LIST SORTED BY ADDRESS
_PWMDTY45 C0 2 2 0 .abs_section_c0
_PWMDTY67 C2 2 2 0 .abs_section_c2
_PWMSDN C4 1 1 0 .abs_section_c4
_SCI0BD C8 2 2 4 .abs_section_c8
_SCI0CR1 CA 1 1 1 .abs_section_ca
_SCI0CR2 CB 1 1 2 .abs_section_cb
_SCI0SR1 CC 1 1 1 .abs_section_cc
_SCI0BD C8 2 2 0 .abs_section_c8
_SCI0CR1 CA 1 1 0 .abs_section_ca
_SCI0CR2 CB 1 1 0 .abs_section_cb
_SCI0SR1 CC 1 1 0 .abs_section_cc
_SCI0SR2 CD 1 1 0 .abs_section_cd
_SCI0DRH CE 1 1 0 .abs_section_ce
_SCI0DRL CF 1 1 1 .abs_section_cf
_SCI0DRL CF 1 1 0 .abs_section_cf
_SCI1BD D0 2 2 0 .abs_section_d0
_SCI1CR1 D2 1 1 0 .abs_section_d2
_SCI1CR2 D3 1 1 0 .abs_section_d3
@ -1695,42 +1696,42 @@ OBJECT LIST SORTED BY ADDRESS
_ATD1DR5 13A 2 2 0 .abs_section_13a
_ATD1DR6 13C 2 2 0 .abs_section_13c
_ATD1DR7 13E 2 2 0 .abs_section_13e
_CAN0CTL0 140 1 1 0 .abs_section_140
_CAN0CTL1 141 1 1 0 .abs_section_141
_CAN0BTR0 142 1 1 0 .abs_section_142
_CAN0BTR1 143 1 1 0 .abs_section_143
_CAN0RFLG 144 1 1 0 .abs_section_144
_CAN0CTL0 140 1 1 2 .abs_section_140
_CAN0CTL1 141 1 1 3 .abs_section_141
_CAN0BTR0 142 1 1 1 .abs_section_142
_CAN0BTR1 143 1 1 1 .abs_section_143
_CAN0RFLG 144 1 1 3 .abs_section_144
_CAN0RIER 145 1 1 0 .abs_section_145
_CAN0TFLG 146 1 1 0 .abs_section_146
_CAN0TIER 147 1 1 0 .abs_section_147
_CAN0TARQ 148 1 1 0 .abs_section_148
_CAN0TAAK 149 1 1 0 .abs_section_149
_CAN0TBSEL 14A 1 1 0 .abs_section_14a
_CAN0IDAC 14B 1 1 0 .abs_section_14b
_CAN0IDAC 14B 1 1 2 .abs_section_14b
_CAN0RXERR 14E 1 1 0 .abs_section_14e
_CAN0TXERR 14F 1 1 0 .abs_section_14f
_CAN0IDAR0 150 1 1 0 .abs_section_150
_CAN0IDAR1 151 1 1 0 .abs_section_151
_CAN0IDAR2 152 1 1 0 .abs_section_152
_CAN0IDAR3 153 1 1 0 .abs_section_153
_CAN0IDMR0 154 1 1 0 .abs_section_154
_CAN0IDMR1 155 1 1 0 .abs_section_155
_CAN0IDMR2 156 1 1 0 .abs_section_156
_CAN0IDMR3 157 1 1 0 .abs_section_157
_CAN0IDAR4 158 1 1 0 .abs_section_158
_CAN0IDAR5 159 1 1 0 .abs_section_159
_CAN0IDAR6 15A 1 1 0 .abs_section_15a
_CAN0IDAR7 15B 1 1 0 .abs_section_15b
_CAN0IDMR4 15C 1 1 0 .abs_section_15c
_CAN0IDMR5 15D 1 1 0 .abs_section_15d
_CAN0IDMR6 15E 1 1 0 .abs_section_15e
_CAN0IDMR7 15F 1 1 0 .abs_section_15f
_CAN0RXIDR0 160 1 1 0 .abs_section_160
_CAN0RXIDR1 161 1 1 0 .abs_section_161
_CAN0IDAR0 150 1 1 1 .abs_section_150
_CAN0IDAR1 151 1 1 1 .abs_section_151
_CAN0IDAR2 152 1 1 1 .abs_section_152
_CAN0IDAR3 153 1 1 1 .abs_section_153
_CAN0IDMR0 154 1 1 1 .abs_section_154
_CAN0IDMR1 155 1 1 1 .abs_section_155
_CAN0IDMR2 156 1 1 1 .abs_section_156
_CAN0IDMR3 157 1 1 1 .abs_section_157
_CAN0IDAR4 158 1 1 1 .abs_section_158
_CAN0IDAR5 159 1 1 1 .abs_section_159
_CAN0IDAR6 15A 1 1 1 .abs_section_15a
_CAN0IDAR7 15B 1 1 1 .abs_section_15b
_CAN0IDMR4 15C 1 1 1 .abs_section_15c
_CAN0IDMR5 15D 1 1 1 .abs_section_15d
_CAN0IDMR6 15E 1 1 1 .abs_section_15e
_CAN0IDMR7 15F 1 1 1 .abs_section_15f
_CAN0RXIDR0 160 1 1 4 .abs_section_160
_CAN0RXIDR1 161 1 1 1 .abs_section_161
_CAN0RXIDR2 162 1 1 0 .abs_section_162
_CAN0RXIDR3 163 1 1 0 .abs_section_163
_CAN0RXDSR0 164 1 1 0 .abs_section_164
_CAN0RXDSR1 165 1 1 0 .abs_section_165
_CAN0RXDSR0 164 1 1 1 .abs_section_164
_CAN0RXDSR1 165 1 1 1 .abs_section_165
_CAN0RXDSR2 166 1 1 0 .abs_section_166
_CAN0RXDSR3 167 1 1 0 .abs_section_167
_CAN0RXDSR4 168 1 1 0 .abs_section_168
@ -1858,31 +1859,30 @@ OBJECT LIST SORTED BY ADDRESS
_CAN4TXDLR 2BC 1 1 0 .abs_section_2bc
_CAN4TXTBPR 2BD 1 1 0 .abs_section_2bd
_CAN4TXTSR 2BE 2 2 0 .abs_section_2be
xcpCtoRxInProgress.3 1100 1 1 3 .bss
xcpCtoReqPacket.1 1101 41 65 5 .bss
xcpCtoRxLength.2 1142 1 1 4 .bss
led_toggle_state.1 1143 1 1 3 .bss
timer_counter_last.2 1144 4 4 5 .bss
millisecond_counter 1148 4 4 8 .bss
led_toggle_state.1 1100 1 1 3 .bss
timer_counter_last.2 1101 4 4 5 .bss
millisecond_counter 1105 4 4 8 .bss
Init C000 29 41 1 .init
_Startup C029 8 8 1 .init
BootActivate C03B F 15 1 .text
BootComInit C04A 19 25 1 .text
BootComCheckActivationRequest C063 44 68 1 .text
UartReceiveByte C0A7 11 17 2 .text
IrqInterruptEnable C0B8 3 3 1 .text
LedInit C0BB F 15 1 .text
LedToggle C0CA 48 72 1 .text
main C112 E 14 1 .text
Init C120 9 9 1 .text
TimeInit C129 1E 30 1 .text
TimeDeinit C147 1C 28 2 .text
TimeSet C163 7 7 1 .text
TimeGet C16A 7 7 1 .text
TimeISRHandler C171 1B 27 1 .text
UnusedISR C18C 2 2 62 .text
_LCMP C18E 19 25 1 RUNTIME
_LINC C1A7 5 5 1 RUNTIME
canTiming C03B 24 36 4 .rodata
BootActivate C05F F 15 1 .text
CanGetSpeedConfig C06E 66 102 1 .text
BootComInit C0D4 8C 140 1 .text
BootComCheckActivationRequest C160 6E 110 1 .text
IrqInterruptEnable C1CE 3 3 1 .text
LedInit C1D1 F 15 1 .text
LedToggle C1E0 48 72 1 .text
main C228 E 14 1 .text
Init C236 9 9 1 .text
TimeInit C23F 1E 30 1 .text
TimeDeinit C25D 1C 28 2 .text
TimeSet C279 7 7 1 .text
TimeGet C280 7 7 1 .text
TimeISRHandler C287 1B 27 1 .text
UnusedISR C2A2 2 2 62 .text
_LSHRU C2A4 11 17 1 RUNTIME
_LCMP C2B5 19 25 1 RUNTIME
_LINC C2CE 5 5 1 RUNTIME
_vectab E77E 82 130 0 .abs_section_e77e
*********************************************************************************************
@ -1890,8 +1890,8 @@ UNUSED-OBJECTS SECTION
---------------------------------------------------------------------------------------------
NOT USED PROCEDURES
rtshc12.c.o (ansisi.lib):
_BSHL _BSHRS _BSHRU _BDIVMODU _BDIVMODS _ISHL _ISHRU _ISHRS _LSHL _LSHRU
_LSHRS _LADD _LSUB _LAND _LOR _LXOR _LCMP_P _LCMP_PP _LNEG _LCOM _LDEC _LMUL
_BSHL _BSHRS _BSHRU _BDIVMODU _BDIVMODS _ISHL _ISHRU _ISHRS _LSHL _LSHRS
_LADD _LSUB _LAND _LOR _LXOR _LCMP_P _LCMP_PP _LNEG _LCOM _LDEC _LMUL
_LMULU16x32 _LMULS16x32 _lDivMod _LDIVU _NEG_P _LDIVS _LMODU _LMODS _ILSEXT
_COPY _CASE_DIRECT _CASE_DIRECT_BYTE _CASE_CHECKED _CASE_CHECKED_BYTE
_CASE_SEARCH _CASE_SEARCH_BYTE _CASE_SEARCH_8 _CASE_SEARCH_8_BYTE _FCALL
@ -1907,7 +1907,7 @@ irq.c.o:
*********************************************************************************************
COPYDOWN SECTION
---------------------------------------------------------------------------------------------
------- ROM-ADDRESS: 0xC1AC ---- SIZE 2 ---
------- ROM-ADDRESS: 0xC2D3 ---- SIZE 2 ---
Filling bytes inserted
0000
@ -1917,10 +1917,14 @@ OBJECT-DEPENDENCIES SECTION
Init USES _startupData
_Startup USES __SEG_END_SSTACK Init main
BootActivate USES TimeDeinit
BootComInit USES _SCI0CR2 _SCI0CR1 _SCI0BD
BootComCheckActivationRequest USES xcpCtoRxInProgress.3 xcpCtoReqPacket.1
UartReceiveByte xcpCtoRxLength.2 BootActivate
UartReceiveByte USES _SCI0SR1 _SCI0DRL
CanGetSpeedConfig USES canTiming
BootComInit USES _CAN0CTL0 _CAN0CTL1 CanGetSpeedConfig _CAN0BTR0
_CAN0BTR1 _CAN0IDAC _CAN0IDAR0 _CAN0IDAR1 _CAN0IDAR2
_CAN0IDAR3 _CAN0IDMR0 _CAN0IDMR1 _CAN0IDMR2 _CAN0IDMR3
_CAN0IDAR4 _CAN0IDAR5 _CAN0IDAR6 _CAN0IDAR7 _CAN0IDMR4
_CAN0IDMR5 _CAN0IDMR6 _CAN0IDMR7
BootComCheckActivationRequest USES _CAN0RFLG _CAN0RXIDR1 _CAN0RXIDR0 _LSHRU
_CAN0RXDSR0 _CAN0RXDSR1 BootActivate
LedInit USES _DDRJ _PTJ _DDRAB _PORTAB
LedToggle USES TimeGet timer_counter_last.2 _LCMP
led_toggle_state.1 _PORTAB
@ -1956,7 +1960,9 @@ DEPENDENCY TREE
| | +- IrqInterruptEnable
| |
| +- BootComInit
| |
| | |
| | +- CanGetSpeedConfig
| |
| +- LedToggle
| | |
| | +- TimeGet
@ -1965,7 +1971,7 @@ DEPENDENCY TREE
| |
| +- BootComCheckActivationRequest
| |
| +- UartReceiveByte
| +- _LSHRU
| |
| +- BootActivate
| |
@ -1994,5 +2000,5 @@ STATISTIC SECTION
ExeFile:
--------
Number of blocks to be downloaded: 6
Total size of all blocks to be downloaded: 560
Total size of all blocks to be downloaded: 855

View File

@ -166,4 +166,225 @@ static unsigned char UartReceiveByte(unsigned char *data)
#endif /* BOOT_COM_UART_ENABLE > 0 */
#if (BOOT_COM_CAN_ENABLE > 0)
/****************************************************************************************
* C O N T R O L L E R A R E A N E T W O R K I N T E R F A C E
****************************************************************************************/
/****************************************************************************************
* Type definitions
****************************************************************************************/
/** \brief Structure type with the layout of the CAN bus timing registers. */
typedef struct
{
unsigned char tseg1; /**< CAN time segment 1 */
unsigned char tseg2; /**< CAN time segment 2 */
} tCanBusTiming;
/****************************************************************************************
* Macro definitions
****************************************************************************************/
#define CONVERT_STD_ID_TO_REG0(id) ((unsigned char)(((unsigned short)id & 0x07f8) >> 3))
#define CONVERT_STD_ID_TO_REG1(id) ((unsigned char)(id & 0x07) << 5)
#define CONVERT_STD_ID_TO_REG2(id) (0)
#define CONVERT_STD_ID_TO_REG3(id) (0)
#define CONVERT_EXT_ID_TO_REG0(id) ((unsigned char)(id >> 21))
#define CONVERT_EXT_ID_TO_REG1(id) ((((unsigned char)(id >> 15)) & 0x07) | \
(((unsigned char)(id >> 13)) & 0xe0) | CAN0RXIDR1_IDE_MASK)
#define CONVERT_EXT_ID_TO_REG2(id) ((unsigned char)(((unsigned short)id & 0x7f80) >> 7))
#define CONVERT_EXT_ID_TO_REG3(id) ((unsigned char)(id & 0x7f) << 1)
/****************************************************************************************
* Local constant declarations
****************************************************************************************/
/**
* \brief Array with possible time quanta configurations.
* \details According to the CAN protocol 1 bit-time can be made up of between 8..25
* time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC
* always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2)
* * 100%. This array contains possible and valid time quanta configurations
* with a sample point between 68..78%.
*/
static const tCanBusTiming canTiming[] =
{ /* TQ | TSEG1 | TSEG2 | SP */
/* ------------------------- */
{ 5, 2 }, /* 8 | 5 | 2 | 75% */
{ 6, 2 }, /* 9 | 6 | 2 | 78% */
{ 6, 3 }, /* 10 | 6 | 3 | 70% */
{ 7, 3 }, /* 11 | 7 | 3 | 73% */
{ 8, 3 }, /* 12 | 8 | 3 | 75% */
{ 9, 3 }, /* 13 | 9 | 3 | 77% */
{ 9, 4 }, /* 14 | 9 | 4 | 71% */
{ 10, 4 }, /* 15 | 10 | 4 | 73% */
{ 11, 4 }, /* 16 | 11 | 4 | 75% */
{ 12, 4 }, /* 17 | 12 | 4 | 76% */
{ 12, 5 }, /* 18 | 12 | 5 | 72% */
{ 13, 5 }, /* 19 | 13 | 5 | 74% */
{ 14, 5 }, /* 20 | 14 | 5 | 75% */
{ 15, 5 }, /* 21 | 15 | 5 | 76% */
{ 15, 6 }, /* 22 | 15 | 6 | 73% */
{ 16, 6 }, /* 23 | 16 | 6 | 74% */
{ 16, 7 }, /* 24 | 16 | 7 | 71% */
{ 16, 8 } /* 25 | 16 | 8 | 68% */
};
/************************************************************************************//**
** \brief Search algorithm to match the desired baudrate to a possible bus timing
** configuration.
** \param baud The desired baudrate in kbps. Valid values are 10..1000.
** \param btr0 Pointer to where the value for register CANxBTR0 will be stored.
** \param btr1 Pointer to where the value for register CANxBTR1 will be stored.
** \return 1 if the CAN bustiming register values were found, 0 otherwise.
**
****************************************************************************************/
static unsigned char CanGetSpeedConfig(unsigned short baud, unsigned char *btr0, unsigned char *btr1)
{
unsigned char prescaler;
unsigned char cnt;
/* loop through all possible time quanta configurations to find a match */
for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++)
{
if ((BOOT_CPU_XTAL_SPEED_KHZ % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0)
{
/* compute the prescaler that goes with this TQ configuration */
prescaler = (unsigned char)(BOOT_CPU_XTAL_SPEED_KHZ/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)));
/* make sure the prescaler is valid */
if ( (prescaler > 0) && (prescaler <= 64) )
{
/* store the MSCAN bustiming register values */
*btr0 = prescaler - 1;
*btr1 = ((canTiming[cnt].tseg2 - 1) << 4) | (canTiming[cnt].tseg1 - 1);
/* found a good bus timing configuration */
return 1;
}
}
}
/* could not find a good bus timing configuration */
return 0;
} /*** end of CanGetSpeedConfig ***/
/************************************************************************************//**
** \brief Initializes the CAN communication interface.
** \return none.
**
****************************************************************************************/
void BootComInit(void)
{
unsigned char btrRegValues[2];
unsigned long accept_code;
unsigned long accept_mask;
/* enter initialization mode. note that this automatically disables CAN interrupts */
CAN0CTL0 = CAN0CTL0_INITRQ_MASK;
/* wait for initialization mode entry handshake from the hardware */
while ((CAN0CTL1 & CAN0CTL1_INITAK_MASK) == 0)
{
;
}
/* enable the CAN controller, disable wake up and listen modes and set the
* crystal oscillator as the clock source.
*/
CAN0CTL1 = CAN0CTL1_CANE_MASK;
/* configure baudrate */
if (CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &btrRegValues[0], &btrRegValues[1]) == 1)
{
/* configure the baudrate */
CAN0BTR0 = btrRegValues[0];
CAN0BTR1 = btrRegValues[1];
}
/* enable 2 32-bit acceptance filters. both will be configured for the same code and
* mask. the only difference is that filter 0 will be setup to receive extended 29-bit
* identifiers and filter 0 to receive standard 11-bit identifiers.
*/
CAN0IDAC_IDAM0 = 0;
CAN0IDAC_IDAM1 = 0;
/* set the acceptance filter code and mask to receive all messages */
accept_code = 0x00000000;
accept_mask = 0x1fffffff;
/* configure acceptance filter 0 for 29-bit extended identifiers */
CAN0IDAR0 = CONVERT_EXT_ID_TO_REG0(accept_code);
CAN0IDAR1 = CONVERT_EXT_ID_TO_REG1(accept_code);
CAN0IDAR2 = CONVERT_EXT_ID_TO_REG2(accept_code);
CAN0IDAR3 = CONVERT_EXT_ID_TO_REG3(accept_code);
CAN0IDMR0 = CONVERT_EXT_ID_TO_REG0(accept_mask);
CAN0IDMR1 = (CONVERT_EXT_ID_TO_REG1(accept_mask) | 0x10) & (unsigned char)(~0x08);
CAN0IDMR2 = CONVERT_EXT_ID_TO_REG2(accept_mask);
CAN0IDMR3 = CONVERT_EXT_ID_TO_REG3(accept_mask);
/* configure acceptance filter 1 for 11-bit standard identifiers */
CAN0IDAR4 = CONVERT_STD_ID_TO_REG0(accept_code);
CAN0IDAR5 = CONVERT_STD_ID_TO_REG1(accept_code);
CAN0IDAR6 = CONVERT_STD_ID_TO_REG2(accept_code);
CAN0IDAR7 = CONVERT_STD_ID_TO_REG3(accept_code);
CAN0IDMR4 = CONVERT_STD_ID_TO_REG0(accept_mask);
CAN0IDMR5 = CONVERT_STD_ID_TO_REG1(accept_mask) | (0x04 | 0x02 | 0x01);
CAN0IDMR6 = CONVERT_STD_ID_TO_REG2(accept_mask);
CAN0IDMR7 = CONVERT_STD_ID_TO_REG3(accept_mask);
/* leave initialization mode and synchronize to the CAN bus */
CAN0CTL0_INITRQ = 0;
/* wait for CAN bus synchronization handshake from the hardware */
while ((CAN0CTL1 & CAN0CTL1_INITAK_MASK) != 0)
{
;
}
} /*** end of BootComInit ***/
/************************************************************************************//**
** \brief Receives the CONNECT request from the host, which indicates that the
** bootloader should be activated and, if so, activates it.
** \return none.
**
****************************************************************************************/
void BootComCheckActivationRequest(void)
{
unsigned long rxMsgId;
/* check if a new message was received */
if ((CAN0RFLG & CAN0RFLG_RXF_MASK) == CAN0RFLG_RXF_MASK)
{
/* check IDE-bit to determine if it is a 11-bit or 29-bit identifier */
if ((CAN0RXIDR1 & CAN0RXIDR1_IDE_MASK) == 0)
{
/* 11-bit id */
rxMsgId = (*(unsigned short*)(&CAN0RXIDR0)) >> 5;
}
else
{
/* 29-bit id */
rxMsgId = (unsigned long)(((*(unsigned long*)(&CAN0RXIDR0)) & 0x0007ffff) >> 1) |
(unsigned long)(((*(unsigned long*)(&CAN0RXIDR0)) & 0xffe00000) >> 3);
}
/* is this the packet identifier? */
if (rxMsgId == BOOT_COM_CAN_RX_MSG_ID)
{
/* check if this was an XCP CONNECT command */
if ( (CAN0RXDSR0 == 0xff) && (CAN0RXDSR1 == 0x00) )
{
/* release the receive object by clearing the rx flag */
CAN0RFLG &= CAN0RFLG_RXF_MASK;
/* connection request received so start the bootloader */
BootActivate();
}
}
/* release the receive object by clearing the rx flag */
CAN0RFLG &= CAN0RFLG_RXF_MASK;
}
} /*** end of BootComCheckActivationRequest ***/
#endif /* BOOT_COM_CAN_ENABLE > 0 */
/*********************************** end of boot.c *************************************/

442
Target/Source/HCS12/can.c Normal file
View File

@ -0,0 +1,442 @@
/************************************************************************************//**
* \file Source\HCS12\can.c
* \brief Bootloader CAN communication interface source file.
* \ingroup Target_HCS12
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 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 should have received a copy of the GNU General Public License along with OpenBLT.
* If not, see <http://www.gnu.org/licenses/>.
*
* A special exception to the GPL is included to allow you to distribute a combined work
* that includes OpenBLT without being obliged to provide the source code for any
* proprietary components. The exception text is included at the bottom of the license
* file <license.html>.
*
* \endinternal
****************************************************************************************/
/****************************************************************************************
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
#if (BOOT_COM_CAN_ENABLE > 0)
/****************************************************************************************
* Type definitions
****************************************************************************************/
/** \brief Structure type with the layout of a CAN reception message slot. */
typedef volatile struct
{
volatile blt_int8u idr[4]; /**< identifier register 0..3 */
volatile blt_int8u dsr[8]; /**< data segment register 0..7 */
volatile blt_int8u dlr; /**< data length register */
volatile blt_int8u dummy; /**< unused */
volatile blt_int16u tstamp; /**< timestamp register */
} tCanRxMsgSlot;
/** \brief Structure type with the layout of a CAN transmit message slot. */
typedef volatile struct
{
volatile blt_int8u idr[4]; /**< identifier register 0..3 */
volatile blt_int8u dsr[8]; /**< data segment register 0..7 */
volatile blt_int8u dlr; /**< data length register */
volatile blt_int8u tbpr; /**< transmit buffer priority register */
volatile blt_int16u tstamp; /**< timestamp register */
} tCanTxMsgSlot;
/** \brief Structure type with the layout of the CAN related control registers. */
typedef volatile struct
{
volatile blt_int8u cctl0; /**< control register 0 */
volatile blt_int8u cctl1; /**< control register 1 */
volatile blt_int8u cbtr0; /**< bus timing register 0 */
volatile blt_int8u cbtr1; /**< bus timing register 1 */
volatile blt_int8u crflg; /**< receiver flag register */
volatile blt_int8u crier; /**< receiver interrupt enable register */
volatile blt_int8u ctflg; /**< transmitter flag register */
volatile blt_int8u ctier; /**< transmitter interrupt enable register */
volatile blt_int8u ctarq; /**< transmitter message abort control */
volatile blt_int8u ctaak; /**< transmitter message abort control */
volatile blt_int8u ctbsel; /**< transmit buffer selection */
volatile blt_int8u cidac; /**< identifier acceptance control register */
volatile blt_int8u dummy1[2]; /**< reserved (2) */
volatile blt_int8u crxerr; /**< receive error counter */
volatile blt_int8u ctxerr; /**< transmit error counter */
volatile blt_int8u cidar0; /**< identifier acceptance register 0 */
volatile blt_int8u cidar1; /**< identifier acceptance register 1 */
volatile blt_int8u cidar2; /**< identifier acceptance register 2 */
volatile blt_int8u cidar3; /**< identifier acceptance register 3 */
volatile blt_int8u cidmr0; /**< identifier mask register 0 */
volatile blt_int8u cidmr1; /**< identifier mask register 1 */
volatile blt_int8u cidmr2; /**< identifier mask register 2 */
volatile blt_int8u cidmr3; /**< identifier mask register 3 */
volatile blt_int8u cidar4; /**< identifier acceptance register 4 */
volatile blt_int8u cidar5; /**< identifier acceptance register 5 */
volatile blt_int8u cidar6; /**< identifier acceptance register 6 */
volatile blt_int8u cidar7; /**< identifier acceptance register 7 */
volatile blt_int8u cidmr4; /**< identifier mask register 4 */
volatile blt_int8u cidmr5; /**< identifier mask register 5 */
volatile blt_int8u cidmr6; /**< identifier mask register 6 */
volatile blt_int8u cidmr7; /**< identifier mask register 7 */
volatile tCanRxMsgSlot rxSlot; /**< foreground receive message slot */
volatile tCanTxMsgSlot txSlot; /**< foreground transmit message slot */
} tCanRegs;
/** \brief Structure type with the layout of the CAN bus timing registers. */
typedef struct
{
blt_int8u tseg1; /**< CAN time segment 1 */
blt_int8u tseg2; /**< CAN time segment 2 */
} tCanBusTiming;
/****************************************************************************************
* Macro definitions
****************************************************************************************/
#if (BOOT_COM_CAN_CHANNEL_INDEX == 0)
/** \brief Set CAN base address to CAN0. */
#define CAN_REGS_BASE_ADDRESS (0x0140)
#elif (BOOT_COM_CAN_CHANNEL_INDEX == 1)
/** \brief Set CAN base address to CAN1. */
#define CAN_REGS_BASE_ADDRESS (0x0180)
#elif (BOOT_COM_CAN_CHANNEL_INDEX == 2)
/** \brief Set CAN base address to CAN2. */
#define CAN_REGS_BASE_ADDRESS (0x01c0)
#elif (BOOT_COM_CAN_CHANNEL_INDEX == 3)
/** \brief Set CAN base address to CAN3. */
#define CAN_REGS_BASE_ADDRESS (0x0200)
#elif (BOOT_COM_CAN_CHANNEL_INDEX == 4)
/** \brief Set CAN base address to CAN4. */
#define CAN_REGS_BASE_ADDRESS (0x0280)
#endif
/** \brief Macro for accessing the CAN related control registers. */
#define CAN ((volatile tCanRegs *)CAN_REGS_BASE_ADDRESS)
/** \brief Configures a CAN message id for 29-bit (extended). */
#define EXTIDMASK_BIT (0x80000000)
/* macros for conveniently converting standard and extended message identifiers to the
* format specified by the MSCAN message slot.
*/
#define CONVERT_STD_ID_TO_REG0(id) ((blt_int8u)(((blt_int16u)id & 0x07f8) >> 3))
#define CONVERT_STD_ID_TO_REG1(id) ((blt_int8u)(id & 0x07) << 5)
#define CONVERT_STD_ID_TO_REG2(id) (0)
#define CONVERT_STD_ID_TO_REG3(id) (0)
#define CONVERT_EXT_ID_TO_REG0(id) ((blt_int8u)(id >> 21))
#define CONVERT_EXT_ID_TO_REG1(id) ((((blt_int8u)(id >> 15)) & 0x07) | \
(((blt_int8u)(id >> 13)) & 0xe0) | (IDE_BIT))
#define CONVERT_EXT_ID_TO_REG2(id) ((blt_int8u)(((blt_int16u)id & 0x7f80) >> 7))
#define CONVERT_EXT_ID_TO_REG3(id) ((blt_int8u)(id & 0x7f) << 1)
/****************************************************************************************
* Register definitions
****************************************************************************************/
/** \brief Initialization mode request bit. */
#define INITRQ_BIT (0x01)
/** \brief Initialization mode handshake bit. */
#define INITAK_BIT (0x01)
/** \brief CAN controller enable bit. */
#define CANE_BIT (0x80)
/** \brief Filter mode bit 0. */
#define IDAM0_BIT (0x10)
/** \brief Filter mode bit 1. */
#define IDAM1_BIT (0x20)
/** \brief Transmit buffer 0 select bit. */
#define TX0_BIT (0x01)
/** \brief Transmit buffer 0 empty bit. */
#define TXE0_BIT (0x01)
/** \brief 29-bit extended id bit. */
#define IDE_BIT (0x08)
/** \brief Receive buffer full flag bit. */
#define RXF_BIT (0x01)
/****************************************************************************************
* Function prototypes
****************************************************************************************/
static blt_bool CanGetSpeedConfig(blt_int16u baud, blt_int8u *btr0, blt_int8u *btr1);
/****************************************************************************************
* Local constant declarations
****************************************************************************************/
/**
* \brief Array with possible time quanta configurations.
* \details According to the CAN protocol 1 bit-time can be made up of between 8..25
* time quanta (TQ). The total TQ in a bit is SYNC + TSEG1 + TSEG2 with SYNC
* always being 1. The sample point is (SYNC + TSEG1) / (SYNC + TSEG1 + SEG2)
* * 100%. This array contains possible and valid time quanta configurations
* with a sample point between 68..78%.
*/
static const tCanBusTiming canTiming[] =
{ /* TQ | TSEG1 | TSEG2 | SP */
/* ------------------------- */
{ 5, 2 }, /* 8 | 5 | 2 | 75% */
{ 6, 2 }, /* 9 | 6 | 2 | 78% */
{ 6, 3 }, /* 10 | 6 | 3 | 70% */
{ 7, 3 }, /* 11 | 7 | 3 | 73% */
{ 8, 3 }, /* 12 | 8 | 3 | 75% */
{ 9, 3 }, /* 13 | 9 | 3 | 77% */
{ 9, 4 }, /* 14 | 9 | 4 | 71% */
{ 10, 4 }, /* 15 | 10 | 4 | 73% */
{ 11, 4 }, /* 16 | 11 | 4 | 75% */
{ 12, 4 }, /* 17 | 12 | 4 | 76% */
{ 12, 5 }, /* 18 | 12 | 5 | 72% */
{ 13, 5 }, /* 19 | 13 | 5 | 74% */
{ 14, 5 }, /* 20 | 14 | 5 | 75% */
{ 15, 5 }, /* 21 | 15 | 5 | 76% */
{ 15, 6 }, /* 22 | 15 | 6 | 73% */
{ 16, 6 }, /* 23 | 16 | 6 | 74% */
{ 16, 7 }, /* 24 | 16 | 7 | 71% */
{ 16, 8 } /* 25 | 16 | 8 | 68% */
};
/************************************************************************************//**
** \brief Initializes the CAN controller and synchronizes it to the CAN bus.
** \return none.
**
****************************************************************************************/
void CanInit(void)
{
blt_int8u btrRegValues[2];
blt_bool result;
blt_int32u accept_code;
blt_int32u accept_mask;
/* the current implementation supports CAN0..4. throw an assertion error in case a
* different CAN channel is configured.
*/
ASSERT_CT((BOOT_COM_CAN_CHANNEL_INDEX >= 0) && (BOOT_COM_CAN_CHANNEL_INDEX <= 4));
/* enter initialization mode. note that this automatically disables CAN interrupts */
CAN->cctl0 = INITRQ_BIT;
/* wait for initialization mode entry handshake from the hardware */
while ((CAN->cctl1 & INITAK_BIT) == 0)
{
;
}
/* enable the CAN controller, disable wake up and listen modes and set the
* crystal oscillator as the clock source.
*/
CAN->cctl1 = CANE_BIT;
/* configure baudrate */
result = CanGetSpeedConfig(BOOT_COM_CAN_BAUDRATE/1000, &btrRegValues[0], &btrRegValues[1]);
ASSERT_RT(result == BLT_TRUE);
/* configure the baudrate */
CAN->cbtr0 = btrRegValues[0];
CAN->cbtr1 = btrRegValues[1];
/* enable 2 32-bit acceptance filters. both will be configured for the same code and
* mask. the only difference is that filter 0 will be setup to receive extended 29-bit
* identifiers and filter 0 to receive standard 11-bit identifiers.
*/
CAN->cidac &= ~(IDAM1_BIT | IDAM0_BIT);
/* set the acceptance filter code and mask to a value that only BOOT_COM_CAN_RX_MSG_ID
* is received.
*/
accept_code = BOOT_COM_CAN_RX_MSG_ID;
accept_mask = 0;
/* configure acceptance filter 0 for 29-bit extended identifiers */
CAN->cidar0 = CONVERT_EXT_ID_TO_REG0(accept_code);
CAN->cidar1 = CONVERT_EXT_ID_TO_REG1(accept_code);
CAN->cidar2 = CONVERT_EXT_ID_TO_REG2(accept_code);
CAN->cidar3 = CONVERT_EXT_ID_TO_REG3(accept_code);
CAN->cidmr0 = CONVERT_EXT_ID_TO_REG0(accept_mask);
CAN->cidmr1 = (CONVERT_EXT_ID_TO_REG1(accept_mask) | 0x10) & ~IDE_BIT;
CAN->cidmr2 = CONVERT_EXT_ID_TO_REG2(accept_mask);
CAN->cidmr3 = CONVERT_EXT_ID_TO_REG3(accept_mask);
/* configure acceptance filter 1 for 11-bit standard identifiers */
CAN->cidar4 = CONVERT_STD_ID_TO_REG0(accept_code);
CAN->cidar5 = CONVERT_STD_ID_TO_REG1(accept_code);
CAN->cidar6 = CONVERT_STD_ID_TO_REG2(accept_code);
CAN->cidar7 = CONVERT_STD_ID_TO_REG3(accept_code);
CAN->cidmr4 = CONVERT_STD_ID_TO_REG0(accept_mask);
CAN->cidmr5 = CONVERT_STD_ID_TO_REG1(accept_mask) | (0x04 | 0x02 | 0x01);
CAN->cidmr6 = CONVERT_STD_ID_TO_REG2(accept_mask);
CAN->cidmr7 = CONVERT_STD_ID_TO_REG3(accept_mask);
/* leave initialization mode and synchronize to the CAN bus */
CAN->cctl0 &= ~INITRQ_BIT;
/* wait for CAN bus synchronization handshake from the hardware */
while ((CAN->cctl1 & INITAK_BIT) != 0)
{
;
}
/* bring transmit buffer 0 in the foreground as this is the only one used by this
* driver.
*/
CAN->ctbsel = TX0_BIT;
} /*** end of CanInit ***/
/************************************************************************************//**
** \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 CanTransmitPacket(blt_int8u *data, blt_int8u len)
{
blt_int8u byte_idx;
/* double check that the transmit slot is really available */
ASSERT_RT((CAN->ctflg & TXE0_BIT) != 0);
/* is this a message with an 11-bit identifier? */
if ((BOOT_COM_CAN_TX_MSG_ID & EXTIDMASK_BIT) == 0)
{
/* store the identifier */
CAN->txSlot.idr[0] = CONVERT_STD_ID_TO_REG0(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[1] = CONVERT_STD_ID_TO_REG1(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[2] = CONVERT_STD_ID_TO_REG2(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[3] = CONVERT_STD_ID_TO_REG3(BOOT_COM_CAN_TX_MSG_ID);
}
else
{
/* store the identifier */
CAN->txSlot.idr[0] = CONVERT_EXT_ID_TO_REG0(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[1] = CONVERT_EXT_ID_TO_REG1(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[2] = CONVERT_EXT_ID_TO_REG2(BOOT_COM_CAN_TX_MSG_ID);
CAN->txSlot.idr[3] = CONVERT_EXT_ID_TO_REG3(BOOT_COM_CAN_TX_MSG_ID);
}
/* store the data length code */
CAN->txSlot.dlr = len;
/* store the message data */
for (byte_idx=0; byte_idx<len; byte_idx++)
{
CAN->txSlot.dsr[byte_idx] = data[byte_idx];
}
/* start the transmission by clearing the buffer empty flag. must be done
* by writing a 1 value.
*/
CAN->ctflg = TXE0_BIT;
/* wait for transmit completion */
while ((CAN->ctflg & TXE0_BIT) == 0)
{
/* keep the watchdog happy */
CopService();
}
} /*** end of CanTransmitPacket ***/
/************************************************************************************//**
** \brief Receives a communication interface packet if one is present.
** \param data Pointer to byte array where the data is to be stored.
** \return BLT_TRUE is a packet was received, BLT_FALSE otherwise.
**
****************************************************************************************/
blt_bool CanReceivePacket(blt_int8u *data)
{
blt_int32u rxMsgId;
blt_int8u rxMsgLen;
blt_int8u byte_idx;
blt_bool result = BLT_FALSE;
/* check if a new message was received */
if ((CAN->crflg & RXF_BIT) == RXF_BIT)
{
/* check IDE-bit to determine if it is a 11-bit or 29-bit identifier */
if ((CAN->rxSlot.idr[1] & IDE_BIT) == 0)
{
/* 11-bit id */
rxMsgId = (*(blt_int16u*)(&CAN->rxSlot.idr[0])) >> 5;
}
else
{
/* 29-bit id */
rxMsgId = (blt_int32u)(((*(blt_int32u*)(&CAN->rxSlot.idr[0])) & 0x0007ffff) >> 1) |
(blt_int32u)(((*(blt_int32u*)(&CAN->rxSlot.idr[0])) & 0xffe00000) >> 3);
}
/* is this the packet identifier? */
if (rxMsgId == BOOT_COM_CAN_RX_MSG_ID)
{
result = BLT_TRUE;
/* store the dlc */
rxMsgLen = CAN->rxSlot.dlr & 0xf;
/* copy message data */
for (byte_idx=0; byte_idx<rxMsgLen; byte_idx++)
{
data[byte_idx] = CAN->rxSlot.dsr[byte_idx];
}
}
/* release the receive object by clearing the rx flag */
CAN->crflg &= RXF_BIT;
}
return result;
} /*** end of CanReceivePacket ***/
/************************************************************************************//**
** \brief Search algorithm to match the desired baudrate to a possible bus timing
** configuration.
** \param baud The desired baudrate in kbps. Valid values are 10..1000.
** \param btr0 Pointer to where the value for register CANxBTR0 will be stored.
** \param btr1 Pointer to where the value for register CANxBTR1 will be stored.
** \return BLT_TRUE if the CAN bustiming register values were found, BLT_FALSE
** otherwise.
**
****************************************************************************************/
static blt_bool CanGetSpeedConfig(blt_int16u baud, blt_int8u *btr0, blt_int8u *btr1)
{
blt_int8u prescaler;
blt_int8u cnt;
/* loop through all possible time quanta configurations to find a match */
for (cnt=0; cnt < sizeof(canTiming)/sizeof(canTiming[0]); cnt++)
{
if ((BOOT_CPU_XTAL_SPEED_KHZ % (baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1))) == 0)
{
/* compute the prescaler that goes with this TQ configuration */
prescaler = (blt_int8u)(BOOT_CPU_XTAL_SPEED_KHZ/(baud*(canTiming[cnt].tseg1+canTiming[cnt].tseg2+1)));
/* make sure the prescaler is valid */
if ( (prescaler > 0) && (prescaler <= 64) )
{
/* store the MSCAN bustiming register values */
*btr0 = prescaler - 1;
*btr1 = ((canTiming[cnt].tseg2 - 1) << 4) | (canTiming[cnt].tseg1 - 1);
/* found a good bus timing configuration */
return BLT_TRUE;
}
}
/* service the watchdog */
CopService();
}
/* could not find a good bus timing configuration */
return BLT_FALSE;
} /*** end of CanGetSpeedConfig ***/
#endif /* BOOT_COM_CAN_ENABLE > 0 */
/*********************************** end of can.c **************************************/

47
Target/Source/HCS12/can.h Normal file
View File

@ -0,0 +1,47 @@
/************************************************************************************//**
* \file Source\HCS12\can.h
* \brief Bootloader CAN communication interface header file.
* \ingroup Target_HCS12
* \internal
*----------------------------------------------------------------------------------------
* C O P Y R I G H T
*----------------------------------------------------------------------------------------
* Copyright (c) 2013 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 should have received a copy of the GNU General Public License along with OpenBLT.
* If not, see <http://www.gnu.org/licenses/>.
*
* A special exception to the GPL is included to allow you to distribute a combined work
* that includes OpenBLT without being obliged to provide the source code for any
* proprietary components. The exception text is included at the bottom of the license
* file <license.html>.
*
* \endinternal
****************************************************************************************/
#ifndef CAN_H
#define CAN_H
#if (BOOT_COM_CAN_ENABLE > 0)
/****************************************************************************************
* Function prototypes
****************************************************************************************/
void CanInit(void);
void CanTransmitPacket(blt_int8u *data, blt_int8u len);
blt_bool CanReceivePacket(blt_int8u *data);
#endif /* BOOT_COM_CAN_ENABLE > 0 */
#endif /* CAN_H */
/*********************************** end of can.h **************************************/

View File

@ -41,7 +41,7 @@
/****************************************************************************************
* Type definitions
****************************************************************************************/
/** \brief Structure type with the layout of the UART related controler registers. */
/** \brief Structure type with the layout of the UART related control registers. */
typedef volatile struct
{
volatile blt_int8u scibdh; /**< baudrate control register [SBR 12..8] */