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

View File

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

View File

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

View File

@ -52,11 +52,6 @@ static void Init(void);
****************************************************************************************/ ****************************************************************************************/
void main(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 */ /* initialize the microcontroller */
Init(); Init();

View File

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

View File

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