OpenCores
URL https://opencores.org/ocsvn/Aquarius/Aquarius/trunk

Subversion Repositories Aquarius

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /Aquarius/trunk/application/shc_monitor_release_v1
    from Rev 2 to Rev 12
    Reverse comparison

Rev 2 → Rev 12

/main.srec
0,0 → 1,404
S00C00006D61696E2E7372656373
S315000000000000040000004000000004000000400062
S31500000010000001200000012E000001200000012E3A
S315000000200000012E0000012E0000012E0000013804
S315000000300000012E0000012E0000012E0000012EFE
S315000000400000012E0000012E0000012E0000012EEE
S315000000500000012E0000012E0000012E0000012EDE
S315000000600000012E0000012E0000012E0000012ECE
S315000000700000012E0000012E0000012E0000012EBE
S315000000800000021A0000021A0000021A0000021AFA
S315000000900000021A0000021A0000021A0000021AEA
S315000000A00000021A0000021A0000021A0000021ADA
S315000000B00000021A0000021A0000021A0000021ACA
S315000000C00000021A0000021A0000021A0000021ABA
S315000000D00000021A0000021A0000021A0000021AAA
S315000000E00000021A0000021A0000021A0000021A9A
S315000000F00000021A0000021A0000021A0000021A8A
S31500000100000001C0000001C0000001C0000001C0E5
S31500000110000001C0000001C0000001C0000001C0D5
S31500000120D0C1400B0009D1BF6012402B5F11D0BF78
S31500000130400B0009AFF700092F062F16D1BF50F369
S315000001402102710450F22102710460F37008210249
S315000001507104002A2102710450F12102710450F049
S315000001602102710421227104213271042142710499
S315000001702152710421627104217271042182710479
S315000001802192710421A2710421B2710421C2710469
S3150000019021D2710421E2710460F370082102710416
S315000001A0000A21027104001A2102710400122102C0
S315000001B0710400222102D09E400B0009AFB3000952
S315000001C04F134F234F024F124F222FE62FD62FC623
S315000001D02FB62FA62F962F862F762F662F562F46B1
S315000001E02F362F262F162F06D092400B000960F6C9
S315000001F061F662F663F664F665F666F667F668F625
S3150000020069F66AF66BF66CF66DF66EF64F264F16C5
S315000002104F064F274F17002B00094F134F234F024E
S315000002204F124F222FE62FD62FC62FB62FA62F9668
S315000002302F862F762F662F562F462F362F262F16D0
S315000002402F06D07D400B000960F661F662F663F674
S3150000025064F665F666F667F668F669F66AF66BF6AC
S315000002606CF66DF66EF64F264F164F064F274F1754
S31500000270002B000900000000000000000000000044
S315000002800000000000000000000000000000000068
S315000002900000000000000000000000000000000058
S315000002A00000000000000000000000000000000048
S315000002B00000000000000000000000000000000038
S315000002C00000000000000000000000000000000028
S315000002D00000000000000000000000000000000018
S315000002E00000000000000000000000000000000008
S315000002F000000000000000000000000000000000F8
S31500000300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
S31500000310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
S31500000320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
S31500000330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
S31500000340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
S31500000350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
S315000003600000000000000000000000000000000087
S315000003700000000000000000000000000000000077
S315000003800000000000000000000000000000000067
S315000003900000000000000000000000000000000057
S315000003A00000000000000000000000000000000047
S315000003B00000000000000000000000000000000037
S315000003C00000000000000000000000000000000027
S315000003D00000000000000000000000000000000017
S315000003E00000000000000000000000000000000007
S315000003F000000000000000000000000000000000F7
S31500000400D808482EE800480ED805480BEE00AFFE87
S31500000410000900090009000900090009000900098E
S31500000420000005D00000000000000538000005842B
S315000004300000048C00000440000004EC00000300EF
S315000004402F86D50D2FE64F22E611D10C7FEC6EF3E9
S31500000450410B64E3D10AE410410B65E3D809480B6C
S315000004600009D109410B0009480B00097E146FE30E
S315000004704F266EF6000B68F600001690000015F485
S315000004800000130C00000F9800000F6A2F86D5108D
S315000004902FE64F22E611D10F7FEC6EF3410B64E39A
S315000004A0D30DD20E613221292312D10DE410410B56
S315000004B065E3D80C480B0009D10B410B0009480B2A
S315000004C000097E146FE34F266EF6000B68F60009EE
S315000004D0000016A4000015F4ABCD0200FEFFFFFFDE
S315000004E00000130C00000F9800000F6A2F86D50D30
S315000004F02FE64F22E611D10C7FEC6EF3410B64E33D
S31500000500D10AE410410B65E3D809480B0009D1096B
S31500000510410B0009480B00097E146FE34F266EF667
S31500000520000B68F6000016B8000015F40000130C66
S3150000053000000F9800000F6A2F86D50D2FE64F2278
S31500000540E611D10C7FEC6EF3410B64E3D10AE410A3
S31500000550410B65E3D809480B0009D109410B000995
S31500000560480B00097E146FE34F266EF6000B68F603
S31500000570000016CC000015F40000130C00000F98C4
S3150000058000000F6A2F86D50D2FE64F22E611D10CFB
S315000005907FEC6EF3410B64E3D10AE410410B65E393
S315000005A0D809480B0009D109410B0009480B00097D
S315000005B07E146FE34F266EF6000B68F6000016E019
S315000005C0000015F40000130C00000F9800000F6ADD
S315000005D02F86D5452F96D8452FA62FB62FC62FD6B0
S315000005E02FE6E9114F2266937FB06EF3480B64E362
S315000005F06AE37A14D53E64A3480B669361E37128D7
S31500000600E04C0E16D53BE609480B64136DE37D34CA
S31500000610D53964D3480B6693D138410B0009D138DC
S31500000620410B0009D137410B0009DC374C0B00099F
S31500000630D836E400480B65E3E410480B65A3E200F6
S31500000640D133720132178FFD72014C0BEA00D8319B
S31500000650480BE400480BE410E1FC2A19D12E69A2EC
S31500000660410BE400D82D480B64A3480B6493DB27A9
S31500000670E410E04C4B0B05EE61E3714821926813E0
S31500000680D127410B64836203E10772F032168DE4D1
S31500000690E1FCC702322C012D012300090010001ACB
S315000006A00030FFBC003A0046003E0042D11D410B1F
S315000006B00009AFD2E1FCE4104B0B65D34C0B0009EB
S315000006C0E1FE2A194A0B0009AFC7E1FCD116410B1E
S315000006D00009AFC16A03AFBF6A82AFBD7AFC61820F
S315000006E02A12AFB97A040009000016F4000015F4C6
S315000006F0000017080000171C0000172800001464EB
S3150000070000001220000011F800000F980000130CE2
S31500000710001E847F000012DC0000136C0000124CE7
S3150000072000000CAC0000072C00000D802F8693E320
S31500000730D5842F96D8842FA62FB62FC62FD62FE670
S31500000740EA114F2266A33F386EF3480B64E36BE36E
S315000007507B14D57E64B3480B66A361E390CD712804
S31500000760D57B641366A3480B0E1660E392C6703CF5
S31500000770D578E9096403669332EC480B120762E305
S3150000078090BD7248D574642366A3480B0E2661E3B8
S3150000079090B6715CD571641366A3480B0E1660E3C0
S315000007A092AC7070D56E6403669332EC480B120AF5
S315000007B062E390A6727CD56B64236693480B0E2683
S315000007C091A090A0D568669331EC0E16480B641381
S315000007D09D9AD56666933DEC480B64D39095928DB1
S315000007E0D563669332EC30EC120D480B6403928DA0
S315000007F0908DD560669332EC0E26480B6423918764
S315000008009087D55D669331EC0E16480B6413908184
S315000008109281D55A669332EC30EC1200480B640391
S31500000820927A907AD556669332EC0E26480B64235C
S3150000083091749074D553669331EC0E16480B64137D
S31500000840906E9268D550669332EC30EC1203480BEA
S31500000850640392669066D54D669332EC0E26480B7D
S31500000860642391609060D54A669331EC0E16480B6E
S315000008706413905A924FD547669332EC30EC1206C9
S31500000880480B640392529052D543669332EC0E267F
S31500000890480B6423914C904CD540669331EC0E1670
S315000008A0480B641390469236D53D669332EC30EC95
S315000008B01209480B6403923E903ED53A669332EC99
S315000008C00E26480B642391389038D537669331EC61
S315000008D00E16480B64139032921DD534669332EC93
S315000008E030EC120C480B6403922A902AD53066939A
S315000008F032EC0E26A05E642302000194017C019C6A
S3150000090001A001A8008801AC009400A000AC01B4CD
S3150000091000B801B800C401BC00D001C000DC01C4AD
S3150000092000E800F401CC010001D0010C011801D847
S31500000930012401DC0130013C01E4014801E80154D5
S31500000940016001F00000173C000015F4000017508C
S31500000950000017640000177800001784000017983D
S31500000960000017AC000017B8000017C4000017D02D
S31500000970000017DC000017E8000017F4000018005C
S315000009800000180C00001818000018240000183089
S315000009900000183C000018480000185400001860B9
S315000009A00000186C000018780000188400001890E9
S315000009B00000189C480B000991E490E4D57E6693EC
S315000009C031EC0E16480B641390DE92DED57B6693EF
S315000009D032EC30EC120F480B640392D790D7D578DF
S315000009E0669332EC0E26480B6423DA76E4004A0B53
S315000009F065E3E4104A0B65B3DB734B0B0009DC734C
S31500000A004C0B000988018D028802A10700094B0BD7
S31500000A10000990BDE4004A0B05EE98BAD96C6482D1
S31500000A20490B000990B6E4104A0B05EE5481490BB8
S31500000A3000094C0B00094B0B000990ACE4004A0B73
S31500000A4005EE5482490B0009E4104A0B65D3548322
S31500000A50490B00094C0B00094B0B0009909CE40064
S31500000A604A0B05EE5484490B00099096E4104A0B94
S31500000A7005EE5485490B00094C0B00094B0B000988
S31500000A80908CE4004A0B05EE5486490B0009907CD5
S31500000A90E4104A0B05EE5487490B00094C0B00097C
S31500000AA04B0B0009907BE4004A0B05EE5488490B7A
S31500000AB000099075E4104A0B05EE5489490B0009AC
S31500000AC04C0B00094B0B0009906BE4004A0B05EE3A
S31500000AD0548A490B00099065E4104A0B05EE548BC5
S31500000AE0490B00094C0B00094B0B0009905BE40015
S31500000AF04A0B05EE548C490B00099055E4104A0B3D
S31500000B0005EE548D490B00094C0B00094B0B0009EF
S31500000B10904BE4004A0B05EE548E490B00099045B4
S31500000B20E4104A0B05EE548F490B78404C0B000934
S31500000B304B0B0009903BE4004A0B05EE5480490B31
S31500000B4000099035E4104A0B05EE5481490B000963
S31500000B504C0B00094B0B0009902BE4004A0B05EEE9
S31500000B605482490B00099025E4104A0B05EE548384
S31500000B70490B00094C0B00094B0B0009901BE400C4
S31500000B80A02805EE016C01F4017801BC018401FC8A
S31500000B9001A4030001A801AC01B001B401B801C071
S31500000BA001C401C801CC01D001D401D801DC01E0A7
S31500000BB001E401E801EC01F0000018A8000018B4F7
S31500000BC0000018C00000130C00000F9800000F6A08
S31500000BD00000124C4A0B00095484490B000990543A
S31500000BE0E4104A0B05EE5485490B00094C0B00092D
S31500000BF04B0B0009904AE4004A0B05EE5486490B5C
S31500000C0000099044E4104A0B05EE5487490B00098D
S31500000C104C0B00094B0B0009A02B00098F29E4009F
S31500000C2090364A0B05EE9034E4104A0B05EED91BBC
S31500000C309830519160E308166283D11932EC410B6A
S31500000C40642388178F0CE40090254A0B05EE4B0BA6
S31500000C50000960E3018ED21319116192A008212BBD
S31500000C60901A4A0B05EE4B0B00096192D20E212910
S31500000C70291297123E7C6FE34F266EF66DF66CF6E0
S31500000C806BF66AF669F6000B68F601F401F801FCEA
S31500000C90019401980190019C01A00200ABCD0200D5
S31500000CA000000CAC01000000FEFFFFFF2F86D12CD8
S31500000CB02F962FA62FB62FC62FD62FE66C434F2280
S31500000CC0E418410B6EF3D127410B64C2D326430BC4
S31500000CD0E401ED002DD88B02D121410BE418D1237C
S31500000CE0410B0009D122410B00096B03E30F3B3690
S31500000CF08D1662D3D11F410B64B3D11F410B640320
S31500000D0069DB79074908DA1DE40F4A0B6593610729
S31500000D1068C264B365934A0B2819280B2C8262D3E8
S31500000D20720142118D02612361D371084121E3FCF6
S31500000D302319333C431A011A6D233D18E10F3B1664
S31500000D408FC92DD8D308430BE40060B36FE34F2659
S31500000D506EF66DF66CF66BF66AF669F6000B68F6DB
S31500000D600000136C0000124C000012A400000F9843
S31500000D7000000F6A00000F3400001340000014E06A
S31500000D802F86D5502F96D8502FA62FB62FC62FD6E2
S31500000D902FE6E9114F2266937FA46EF3480B64E3B6
S31500000DA06AE37A14D54964A3480B669361E3712814
S31500000DB0E0480E16D546E609480B641363E3733420
S31500000DC0E04C0E36D5436433480B6693E100E040B1
S31500000DD030EC10161015D140E201410B1024D33F20
S31500000DE0E400430B65E3D03DE410400B65A3D83C1B
S31500000DF0480B000988538BFB480B000988338D0389
S31500000E006C0388378F4EE054DD364D0BEA006303E2
S31500000E106833698379FBEB004D0B4A186303308C0A
S31500000E20680C7B01E1033B178FF63A3CE05001EE7C
S31500000E3021188D056BA3E24032EC12B6E3001234A2
S31500000E4049158B084D0B79FF6303308C680C2A30EB
S31500000E5049158DF77A01D123410B00096303618798
S31500000E60E2FF681C3830612A60C388338D0321187D
S31500000E70E301E0540E368D09E410D118E04C410B25
S31500000E8005EED119410B0009A010E058D117410B0E
S31500000E90E410D117410B64B3E418D210E048420BBA
S31500000EA005EEE05403EE23388DA1E05800EE7E5C9B
S31500000EB06FE34F266EF66DF66CF66BF66AF669F61C
S31500000EC0000B68F6000018CC000015F4000018E0CE
S31500000ED0000018F400001900000011F80000130CBF
S31500000EE0000011C400000EF400000F6A0000136C2D
S31500000EF00000124C2F862F96D80C2FA62FE64F22D5
S31500000F00480B6EF3D90A490B6403480B6A03490B75
S31500000F10640361A341084108301C600C6FE34F264F
S31500000F206EF66AF669F6000B68F60009000011C451
S31500000F3000000F4E2FE66043C90FE10930168F02FD
S31500000F406EF3A0017037CB306FE3000B6EF62FE621
S31500000F50604CE13930168F036EF3E1C9A001301CF5
S31500000F6070D0C90F6FE3000B6EF62FE64F22A00379
S31500000F706EF3D107410BE408D106410B0009910538
S31500000F80301089F66FE34F26000B6EF600FF00095E
S31500000F900000115400000FC42FE64F22A0036EF389
S31500000FA0D106410BE408D106410B0009910530102A
S31500000FB08BF66FE34F26000B6EF600FF0000115410
S31500000FC000000FC42F862F96D8602FA62FB62FC6E7
S31500000FD02FD62FE6E1EF4F22E401D95D6EF32810FC
S31500000FE0490B00096080ED1FE1F7E4012D09281087
S31500000FF0490B00096080EC1FE1FBE4012C09281075
S31500001000490B00096080EB1FE1FDE4012B09281064
S31500001010490B00096080EA1FE1FEE4012A09281055
S31500001020490B00096080E21FE10768D378E93816AA
S315000010308D102209C701018C012300090818181810
S315000010400C181014A077E013A075E012A073E0113D
S31500001050A071E010E10F68C378F138168917C7024E
S31500001060018C01230009000912262626262626269B
S31500001070162626261A261E22A05DE014A05BE00F87
S31500001080A059E00EA057E00DA055E00CE10F68B3A3
S3150000109078F138168D17E10FC701018C012300097D
S315000010A010242424242424241424242418241C2036
S315000010B0A041E015A03FE00BA03DE00AA03BE009FF
S315000010C0A039E008E10F68A378F138168D17E10F13
S315000010D0C701018C0123000910242424242424247C
S315000010E01424242418241C20A025E016A023E0079D
S315000010F0A021E006A01FE005A01DE004E10F682383
S3150000110078F138168916C702018C012300090009F7
S315000011101226262626262626162626261A261E22A5
S31500001120A009E017A007E003A005E002A003E00184
S31500001130A001E00090096FE34F266EF66DF66CF69F
S315000011406BF66AF669F6000B68F600FFABCD000198
S31500001150000011542FE6644CE20032438D0B6EF30F
S31500001160930C32378904D1067201611032378BFA3B
S31500001170720132438BF46FE3000B6EF62710000901
S31500001180ABCD00002FE6644C6EF3D1056010C902AA
S3150000119020088FFA71FE710321406FE3000B6EF693
S315000011A0ABCD01022FE66EF3D1056010C901200810
S315000011B08FFA71FE71036110601C6FE3000B6EF60F
S315000011C0ABCD01022FE66EF3D10A6010C9012008EB
S315000011D08FFA71FE71036110621CD1066010C9029C
S315000011E020088FFA71FE7103212060236FE3000B44
S315000011F06EF60009ABCD01022FE6D30860306EF320
S31500001200A00573FE730362307102601073FDC9019D
S3150000121020088DF761336FE3000B6EF6ABCD01024C
S315000012202FE6D107E21221207101E2CF21206EF3D1
S31500001230D204D105611042108BFB6FE3000B6EF6F2
S31500001240ABCD010000010000ABCD00002F862F962C
S315000012502FA6E81C2FE6E9074F226A436EF3D10D4D
S31500001260E401410B6583D10C64A3410B6503D10BEB
S31500001270C90F410B6403D10A410B640379FF49117D
S315000012808DED78FC6FE34F266EF66AF669F6000B75
S3150000129068F60009000014E00000156800000F342D
S315000012A0000013402F86D10B2FE668434F22688C2F
S315000012B0410B6EF328888D05E400D107410BE50D3F
S315000012C0A0030009D104410BE50C6FE34F266EF62F
S315000012D0000B68F6000013A8000014182F86D10929
S315000012E02FE64F22644C410B6EF3E800D106410B0A
S315000012F0E4207801E10F38178BF86FE34F266EF67E
S31500001300000B68F60000136C000013402F86D10A0C
S315000013102FE6644C4F226853A0026EF3D107780182
S31500001320410B0009648024488FF8644C6FE34F2614
S315000013306EF6000B68F600090000136C00001340FF
S315000013402F86D1082FE668434F22688C410B6EF337
S31500001350D105E401410B65836FE34F266EF6000B62
S3150000136068F60009000013A8000014182F86E11F74
S315000013702FE668432819E10F4F2238168F016EF3C6
S315000013807830910C281BD106410B0009D105E400E9
S31500001390410B65836FE34F266EF6000B68F60080FF
S315000013A0000013A8000014182FE64F226EF3D10593
S315000013B0410BE400C98020088BF96FE34F26000B30
S315000013C06EF60009000013C82FE66743D111E3014A
S315000013D027396073CB0262137202220063106073B6
S315000013E06110CB0622006EF3E20BD30A6130421085
S315000013F08FFC613371036110E202272BE20B601C44
S31500001400613371022170D103611042108BFB6FE3CF
S31500001410000B6EF6ABCD00002FE66743655CD10F7F
S31500001420E3012150273971FD6213720222706310A5
S3150000143060736110CB0422006EF3E20BD3086130B7
S3150000144042108FFC613371022170E20BD1046110EE
S3150000145042108BFB6FE3000B6EF60009ABCD000369
S31500001460ABCD00002F862F962FE6D919E4004F2228
S31500001470E530490B6EF3D217D117611042108FFB7E
S31500001480E400490BE5309221D113611042108FFB25
S31500001490E400490BE530D811480B0009E400490B7C
S315000014A0E538480B0009E400490BE50C480B000938
S315000014B0E400490BE501480B0009E400490BE50689
S315000014C06FE34F266EF669F6000B68F607D0000943
S315000014D00000141800014050ABCD0000000013A816
S315000014E0E01F2509C701055C05236043782E242CDF
S315000014F0222A202838423640343E323C4E584C563A
S315000015004A5448526470626E606C5E6A40084008D5
S31500001510000B4008400840084008000B4000400807
S3150000152040084008000B4018400840084008401892
S31500001530000B4000400840084008000B40284008C7
S31500001540400840084028000B40004008400840087A
S315000015504028000B40184008400840084028401822
S31500001560000B4000000B0009E00000194424305431
S3150000157044243054442430544424305444243054B5
S3150000158044243054442430544424305444243054A5
S315000015904424305444243054442430544424305495
S315000015A04424305444243054442430544424305485
S315000015B04424305444243054442430544424305475
S315000015C04424305444243054442430544424305465
S315000015D04424305444243054442430544424305455
S315000015E04424305444243054442430544424000BBE
S315000015F0604300006043306C3548E10B361275FFDE
S315000016008B396353330C430167438902025C73FFD2
S315000016102024C80175FF77088B1DC802890273FF55
S31500001620015D20154301890E015D6119770475FC82
S31500001630025E212D20163072015E221D202689F7BA
S31500001640A0197505000975FE015E3072201689FB2A
S31500001650A0117503000943018903015D2014411996
S31500001660201475FE025E307220244219202542297C
S31500001670202489F77503304089047401025C3040E8
S30D0000168020248BFB000B00097E
S315000016904952513A205075736820746F2052544550
S315000016A0000000004E4D492F42524B3A476F746F6F
S315000016B0204D6F6E00000000545241503A50757331
S315000016C06820746F2052544500000000496C6C6518
S315000016D067616C3A476F746F204D6F6E00000000B3
S315000016E0416472734572723A476F746F204D6F6E24
S315000016F00000000053482D32204D6F6E69746F72E2
S3150000170020762E3100000000284329203230303365
S3150000171020542E4169746368000000004D656D6FAA
S3150000172072792D2D0000000052756E2D2D2D476FFC
S315000017306F64204C75636B210000000042524B2DF4
S3150000174046756E632053656C6563743F0000000048
S31500001750313A5245472020323A42524B20534554A3
S315000017600000000053657420427265616B20506F63
S31500001770696E742E00000000416464726573733FE5
S3150000178000000000427265616B20416363657074FE
S3150000179065642E2000000000427265616B20436183
S315000017A06E63656C65642E20000000005352202095
S315000017B02020203A00000000504320202020203A1C
S315000017C000000000535028523135293A000000002D
S315000017D0505220202020203A0000000052302020C5
S315000017E02020203A00000000523120202020203AFC
S315000017F000000000523220202020203A0000000085
S31500001800523320202020203A0000000052342020AD
S315000018102020203A00000000523520202020203AC7
S3150000182000000000523620202020203A0000000050
S31500001830523720202020203A000000005238202075
S315000018402020203A00000000523920202020203A93
S3150000185000000000523130202020203A0000000015
S31500001860523131202020203A00000000523132202F
S315000018702020203A00000000523133202020203A58
S3150000188000000000523134202020203A00000000E1
S31500001890523135202020203A000000004D414348B7
S315000018A02020203A000000004D41434C2020203AE1
S315000018B000000000474252202020203A000000008D
S315000018C0564252202020203A00000000476574202E
S315000018D0532D466F726D6174285333290000000042
S315000018E0706C656173652073656E642E2E2E2E2EC8
S315000018F0000000002D2D2D2D2D4F4B210000000046
S315000019004552523A42616420532D466F726D61749E
S3090000191000000000CD
S70500000000FA
/main.map
0,0 → 1,104
Archive member included because of file (symbol)
 
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_ashiftlt.o)
main.o (__ashlsi3)
/usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o)
main.o (__udivsi3)
/usr/local/sh-elf/lib/libc.a(memcpy.o)
main.o (memcpy)
 
Memory Configuration
 
Name Origin Length Attributes
ram 0x0000000000000000 0x0000000000003e00
stack 0x0000000000003e00 0x0000000000000200
*default* 0x0000000000000000 0xffffffffffffffff
 
Linker script and memory map
 
LOAD crt0.o
LOAD main.o
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a
LOAD /usr/local/sh-elf/lib/libc.a
LOAD /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a
 
.text 0x0000000000000000 0x1688
*(.text)
.text 0x0000000000000000 0x440 crt0.o
.text 0x0000000000000440 0x10a0 main.o
0x00000000000011f8 uart_rx_flush
0x0000000000001464 lcd_init
0x000000000000136c lcd_pos
0x0000000000000f4e asc2hex
0x0000000000000f34 hex2asc
0x0000000000001154 waitNms
0x000000000000048c nmi_handler
0x00000000000012a4 lcd_cursor
0x0000000000000f6a key_wait_on
0x00000000000005d0 main_sh
0x000000000000072c utility
0x0000000000001220 uart_set_baudrate
0x0000000000000cac command
0x00000000000013a8 lcd_ready
0x00000000000011a4 uart_rx
0x0000000000000440 irq_handler
0x00000000000011c4 uart_rx_echo
0x0000000000001418 lcd_wr
0x00000000000012dc lcd_erase
0x00000000000013c8 lcd_rd
0x0000000000000ef4 get_byte_rx_echo
0x00000000000004ec trap_handler
0x0000000000000d80 get_sformat
0x0000000000000584 error
0x0000000000000fc4 key_scan
0x0000000000000538 illegal
0x000000000000124c lcd_disp_long
0x0000000000001184 uart_tx
0x0000000000000f98 key_wait_off
0x0000000000001340 lcd_disp
0x000000000000130c lcd_message
.text 0x00000000000014e0 0x88 /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_ashiftlt.o)
0x00000000000014e0 __ashlsi3
.text 0x0000000000001568 0x8a /usr/local/lib/gcc-lib/sh-elf/2.95.3/m2/libgcc.a(_udivsi3.o)
0x0000000000001568 __udivsi3
*fill* 0x00000000000015f2 0xa04076800000002 00
.text 0x00000000000015f4 0x94 /usr/local/sh-elf/lib/libc.a(memcpy.o)
0x00000000000015f4 memcpy
*(.strings)
0x0000000000001688 _etext = .
 
.tors 0x0000000000001688 0x0
0x0000000000001688 ___ctors = .
*(.ctors)
0x0000000000001688 ___ctors_end = .
0x0000000000001688 ___dtors = .
*(.dtors)
0x0000000000001688 ___dtors_end = .
 
.rodata 0x0000000000001690 0x284
*(.rodata)
.rodata 0x0000000000001690 0x284 main.o
 
.rela.dyn
0x000000000000190c __idata_start = (((ADDR (.text) + SIZEOF (.text)) + SIZEOF (.tors)) + SIZEOF (.rodata))
 
.data 0x0000000000001920 0x0 load address 0x0000000000001920
0x0000000000001920 __idata_start = .
0x0000000000001920 _sdata = .
*(.data)
0x0000000000001920 _edata = .
0x0000000000001920 __idata_end = (__idata_start + SIZEOF (.data))
 
.bss 0x0000000000001920 0x0
0x0000000000001920 _bss_start = .
*(.bss)
*(COMMON)
0x0000000000001920 _end = .
 
.stack 0x0000000000003e00 0x0
0x0000000000003e00 _stack = .
*(.stack)
OUTPUT(main.elf elf32-sh)
 
.comment 0x0000000000000000 0x26
.comment 0x0000000000000000 0x26 main.o
/startup/sh.x
0,0 → 1,56
/**************************************
SuperH (SH-2) C Compiler Linker Script
**************************************/
 
OUTPUT_FORMAT("elf32-sh")
OUTPUT_ARCH(sh)
 
MEMORY
{
ram : o = 0x00000000, l = 0x3e00
stack : o = 0x00003e00, l = 0x0200
}
 
SECTIONS
{
.text : {
*(.text)
*(.strings)
_etext = . ;
} > ram
 
.tors : {
___ctors = . ;
*(.ctors)
___ctors_end = . ;
___dtors = . ;
*(.dtors)
___dtors_end = . ;
} > ram
 
.rodata : {
*(.rodata)
} >ram
 
__idata_start = ADDR(.text) + SIZEOF(.text) + SIZEOF(.tors) + SIZEOF(.rodata);
.data : AT(__idata_start) {
__idata_start = .;
_sdata = . ;
*(.data)
_edata = . ;
} > ram
__idata_end = __idata_start + SIZEOF(.data);
 
.bss : {
_bss_start = .;
*(.bss)
*(COMMON)
_end = .;
} >ram
 
.stack :
{
_stack = .;
*(.stack)
} > stack
}
/startup/crt0.S
0,0 → 1,383
/****************************************
SuperH (SH-2) C compiler Startup Routine
----------------------------------------
Rev1. March 21, 2003 by Thorn Aitch
****************************************/
 
/********************
Section: .text (ROM)
********************/
.section .text
 
/************
Vector Table
************/
_vector_top:
.long _start ! #000
.long _stack+0x200 ! #001
.long _start ! #002
.long _stack+0x200 ! #003
.long _gnrl_ilgl ! #004
.long _unexpected ! #005
.long _slot_ilgl ! #006
.long _unexpected ! #007
.long _unexpected ! #008
.long _cpuerr ! #009
.long _dmaerr ! #010
.long _nmi ! #011
.long _unexpected ! #012
.long _unexpected ! #013
.long _unexpected ! #014
.long _unexpected ! #015
.long _unexpected ! #016
.long _unexpected ! #017
.long _unexpected ! #018
.long _unexpected ! #019
.long _unexpected ! #020
.long _unexpected ! #021
.long _unexpected ! #022
.long _unexpected ! #023
.long _unexpected ! #024
.long _unexpected ! #025
.long _unexpected ! #026
.long _unexpected ! #027
.long _unexpected ! #028
.long _unexpected ! #029
.long _unexpected ! #030
.long _unexpected ! #031
.long _trap ! #032
.long _trap ! #033
.long _trap ! #034
.long _trap ! #035
.long _trap ! #036
.long _trap ! #037
.long _trap ! #038
.long _trap ! #039
.long _trap ! #040
.long _trap ! #041
.long _trap ! #042
.long _trap ! #043
.long _trap ! #044
.long _trap ! #045
.long _trap ! #046
.long _trap ! #047
.long _trap ! #048
.long _trap ! #049
.long _trap ! #050
.long _trap ! #051
.long _trap ! #052
.long _trap ! #053
.long _trap ! #054
.long _trap ! #055
.long _trap ! #056
.long _trap ! #057
.long _trap ! #058
.long _trap ! #059
.long _trap ! #060
.long _trap ! #061
.long _trap ! #062
.long _trap ! #063
.long _irq0 ! #064
.long _irq1 ! #065
.long _irq2 ! #066
.long _irq3 ! #067
.long _irq4 ! #068
.long _irq5 ! #069
.long _irq6 ! #070
.long _irq7 ! #071
 
/***************
General Illegal
Slot Illegal
***************/
_gnrl_ilgl:
_slot_ilgl:
mov.l _pillegal, r0
jsr @r0
nop
_restart:
mov.l _pvector_top, r1
mov.l @r1, r0
jmp @r0
mov.l @(4, r1), r15
 
/*****************
CPU Address Error
DMA Address Error
Unexpected Vector
*****************/
_cpuerr:
_dmaerr:
_unexpected:
mov.l _perror, r0
jsr @r0
nop
bra _restart
nop
 
/****************************
NMI (Non Maskable Interrupt)
****************************/
_nmi:
mov.l r0, @-r15
mov.l r1, @-r15
mov.l _pbreak_reg_top, r1
 
mov.l @(12, r15), r0 ! sr
mov.l r0, @r1
add #4, r1
mov.l @( 8, r15), r0 ! pc
mov.l r0, @r1
add #4, r1
mov r15, r0 ! sp
add #8, r0
mov.l r0, @r1
add #4, r1
sts pr, r0 ! pr
mov.l r0, @r1
add #4, r1
mov.l @( 4, r15), r0 ! r0
mov.l r0, @r1
add #4, r1
mov.l @( 0, r15), r0 ! r1
mov.l r0, @r1
add #4, r1
mov.l r2, @r1 ! r2
add #4, r1
mov.l r3, @r1 ! r3
add #4, r1
mov.l r4, @r1 ! r4
add #4, r1
mov.l r5, @r1 ! r5
add #4, r1
mov.l r6, @r1 ! r6
add #4, r1
mov.l r7, @r1 ! r7
add #4, r1
mov.l r8, @r1 ! r8
add #4, r1
mov.l r9, @r1 ! r9
add #4, r1
mov.l r10, @r1 ! r10
add #4, r1
mov.l r11, @r1 ! r11
add #4, r1
mov.l r12, @r1 ! r12
add #4, r1
mov.l r13, @r1 ! r13
add #4, r1
mov.l r14, @r1 ! r14
add #4, r1
mov r15, r0 ! r15
add #8, r0
mov.l r0, @r1
add #4, r1
sts mach, r0 ! mach
mov.l r0, @r1
add #4, r1
sts macl, r0 ! macl
mov.l r0, @r1
add #4, r1
stc gbr, r0 ! gbr
mov.l r0, @r1
add #4, r1
stc vbr, r0 ! vbr
mov.l r0, @r1
 
mov.l _pnmi_handler, r0
jsr @r0
nop
bra _restart
nop
 
/***********************
IRQ (Interrupt Request)
***********************/
_irq0:
_irq1:
_irq2:
_irq3:
_irq4:
_irq5:
_irq6:
_irq7:
stc.l gbr, @-r15
stc.l vbr, @-r15
sts.l mach, @-r15
sts.l macl, @-r15
sts.l pr, @-r15
mov.l r14, @-r15
mov.l r13, @-r15
mov.l r12, @-r15
mov.l r11, @-r15
mov.l r10, @-r15
mov.l r9, @-r15
mov.l r8, @-r15
mov.l r7, @-r15
mov.l r6, @-r15
mov.l r5, @-r15
mov.l r4, @-r15
mov.l r3, @-r15
mov.l r2, @-r15
mov.l r1, @-r15
mov.l r0, @-r15
mov.l _pirq_handler, r0
jsr @r0
nop
mov.l @r15+, r0
mov.l @r15+, r1
mov.l @r15+, r2
mov.l @r15+, r3
mov.l @r15+, r4
mov.l @r15+, r5
mov.l @r15+, r6
mov.l @r15+, r7
mov.l @r15+, r8
mov.l @r15+, r9
mov.l @r15+, r10
mov.l @r15+, r11
mov.l @r15+, r12
mov.l @r15+, r13
mov.l @r15+, r14
lds.l @r15+, pr
lds.l @r15+, macl
lds.l @r15+, mach
ldc.l @r15+, vbr
ldc.l @r15+, gbr
rte
nop
 
/************
TRAP Handler
************/
_trap:
stc.l gbr, @-r15
stc.l vbr, @-r15
sts.l mach, @-r15
sts.l macl, @-r15
sts.l pr, @-r15
mov.l r14, @-r15
mov.l r13, @-r15
mov.l r12, @-r15
mov.l r11, @-r15
mov.l r10, @-r15
mov.l r9, @-r15
mov.l r8, @-r15
mov.l r7, @-r15
mov.l r6, @-r15
mov.l r5, @-r15
mov.l r4, @-r15
mov.l r3, @-r15
mov.l r2, @-r15
mov.l r1, @-r15
mov.l r0, @-r15
mov.l _ptrap_handler, r0
jsr @r0
nop
mov.l @r15+, r0
mov.l @r15+, r1
mov.l @r15+, r2
mov.l @r15+, r3
mov.l @r15+, r4
mov.l @r15+, r5
mov.l @r15+, r6
mov.l @r15+, r7
mov.l @r15+, r8
mov.l @r15+, r9
mov.l @r15+, r10
mov.l @r15+, r11
mov.l @r15+, r12
mov.l @r15+, r13
mov.l @r15+, r14
lds.l @r15+, pr
lds.l @r15+, macl
lds.l @r15+, mach
ldc.l @r15+, vbr
ldc.l @r15+, gbr
rte
nop
 
/**********************
Break Information Area
**********************/
.org _vector_top + 0x300
_break_reg_top:
_break_sr: .long 0xffffffff
_break_pc: .long 0xffffffff
_break_sp: .long 0xffffffff
_break_pr: .long 0xffffffff
_break_r0: .long 0xffffffff
_break_r1: .long 0xffffffff
_break_r2: .long 0xffffffff
_break_r3: .long 0xffffffff
_break_r4: .long 0xffffffff
_break_r5: .long 0xffffffff
_break_r6: .long 0xffffffff
_break_r7: .long 0xffffffff
_break_r8: .long 0xffffffff
_break_r9: .long 0xffffffff
_break_r10: .long 0xffffffff
_break_r11: .long 0xffffffff
_break_r12: .long 0xffffffff
_break_r13: .long 0xffffffff
_break_r14: .long 0xffffffff
_break_r15: .long 0xffffffff
_break_mach: .long 0xffffffff
_break_macl: .long 0xffffffff
_break_gbr: .long 0xffffffff
_break_vbr: .long 0xffffffff
 
/************
Main Routine
************/
.org _vector_top + 0x400
_start:
mov.l _pvector_top, r8
ldc r8, vbr
mov #0x00, r8
ldc r8, sr
mov.l _pmain_sh, r8
jsr @r8
mov #0, r14
 
_endless:
bra _endless
nop
 
.align 4
_pmain_sh : .long _main_sh
_pvector_top: .long _vector_top
_pillegal: .long _illegal
_perror: .long _error
_pnmi_handler: .long _nmi_handler
_pirq_handler: .long _irq_handler
_ptrap_handler: .long _trap_handler
_pbreak_reg_top: .long _break_reg_top
 
 
/**********************
Section: .rodata (ROM)
**********************/
.section .rodata
.align 4
 
/********************
Section: .data (RAM)
********************/
.section .data
.align 4
 
/*******************
Section: .bss (RAM)
*******************/
.section .bss
.align 4
 
/*********************
Section: .stack (RAM)
*********************/
.section .stack
.align 4
_stack:
.end
 
/dump
0,0 → 1,4
#!/bin/bash
 
sh-elf-objdump -D -msh2 $1 | less
 
dump Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: main.s =================================================================== --- main.s (nonexistent) +++ main.s (revision 12) @@ -0,0 +1,638 @@ + .file "main.c" +gcc2_compiled.: +.section .rodata + .align 2 +.LC0: + .string "" + .text + .align 2 + .global _main_sh + .type _main_sh,@function +_main_sh: + mov.l r8,@-r15 + mov.l r14,@-r15 + sts.l pr,@-r15 + add #-28,r15 + mov r15,r14 + mov r14,r1 + mov.l .L10,r2 + mov r14,r1 + mov #17,r3 + mov r15,r7 + mov r1,r4 + mov r2,r5 + mov r3,r6 + mov.l .L11,r8 + jsr @r8 + nop + mov.l r14,@(20,r14) + mov r15,r1 + mov.l .L12,r8 + jsr @r8 + nop + mov r15,r1 + mov.l .L13,r8 + jsr @r8 + nop + mov r15,r1 + mov.w .L14,r2 + mov #0,r4 + mov r2,r5 + mov.l .L15,r8 + jsr @r8 + nop +.L3: + mov.l @(20,r14),r1 + mov.b @r1,r2 + extu.b r2,r1 + tst r1,r1 + bf .L5 + bra .L4 + nop + .align 2 +.L5: + mov r15,r1 + mov.l .L13,r8 + jsr @r8 + nop + mov r15,r2 + mov r14,r1 + add #20,r1 + mov.l @r1,r2 + mov.b @r2,r7 + extu.b r7,r3 + add #1,r2 + mov.l r2,@r1 + mov #1,r4 + mov r3,r5 + mov.l .L15,r8 + jsr @r8 + nop + bra .L3 + nop + .align 2 +.L4: + mov r14,r1 + mov r14,r2 + add #24,r2 + mov #0,r1 + mov.b r1,@r2 +.L6: + bra .L8 + nop + bra .L7 + nop + .align 2 +.L8: + mov r14,r1 + mov r14,r2 + add #24,r2 + mov.b @r2,r1 + extu.b r1,r2 + mov r2,r1 + shlr2 r1 + shlr2 r1 + extu.b r1,r2 + tst r2,r2 + bf .L9 + mov r15,r1 + mov.l .L13,r8 + jsr @r8 + nop + mov r15,r1 + mov.w .L16,r2 + mov #0,r4 + mov r2,r5 + mov.l .L15,r8 + jsr @r8 + nop +.L9: + mov r15,r1 + mov.l .L13,r8 + jsr @r8 + nop + mov r15,r1 + mov r14,r2 + mov r14,r1 + add #24,r1 + mov.b @r1,r2 + mov r2,r3 + add #1,r3 + mov.b r3,@r1 + extu.b r2,r1 + mov #1,r4 + mov r1,r5 + mov.l .L15,r8 + jsr @r8 + nop + bra .L6 + nop + .align 2 +.L7: +.L2: + add #28,r14 + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r8 + rts + nop + .align 1 +.L14: + .short 128 +.L16: + .short 192 +.L17: + .align 2 +.L10: + .long .LC0 +.L11: + .long _memcpy +.L12: + .long _lcdinit +.L13: + .long _lcdready +.L15: + .long _lcdwr +.Lfe1: + .size _main_sh,.Lfe1-_main_sh + .align 2 + .global _lcdready + .type _lcdready,@function +_lcdready: + mov.l r8,@-r15 + mov.l r14,@-r15 + sts.l pr,@-r15 + mov r15,r14 +.L19: + mov r15,r1 + mov #0,r4 + mov.l .L22,r8 + jsr @r8 + nop + mov.w .L23,r1 + and r0,r1 + extu.b r1,r2 + tst r2,r2 + bf .L21 + bra .L20 + nop + .align 2 +.L21: + bra .L19 + nop + .align 2 +.L20: +.L18: + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r8 + rts + nop + .align 1 +.L23: + .short 128 +.L24: + .align 2 +.L22: + .long _lcdrd +.Lfe2: + .size _lcdready,.Lfe2-_lcdready + .align 2 + .global _lcdrd + .type _lcdrd,@function +_lcdrd: + mov.l r14,@-r15 + add #-12,r15 + mov r15,r14 + mov.l r4,@r14 + mov.l .L34,r1 + mov r14,r3 + mov r14,r2 + add #3,r2 + mov r1,r3 + add #2,r1 + mov.b @r2,r3 + mov #1,r2 + and r3,r2 + mov.b @r1,r3 + mov.w .L35,r7 + and r3,r7 + mov r7,r3 + or r2,r3 + mov.b r3,@r1 + mov.l .L34,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov #2,r3 + or r2,r3 + mov.b r3,@r1 + mov.l .L34,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov.w .L36,r3 + and r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #8,r1 + mov.l .L34,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #8,r1 + mov.l .L34,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #8,r1 + mov.l .L34,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov.l .L34,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov #4,r3 + or r2,r3 + mov.b r3,@r1 + mov #0,r1 + mov.l r1,@(4,r14) +.L26: + mov.l @(4,r14),r1 + mov #25,r2 + cmp/gt r2,r1 + bf .L29 + bra .L27 + nop + .align 2 +.L29: + mov r14,r2 + mov r14,r1 + add #8,r1 + mov.l .L34,r2 + mov.b @r2,r3 + mov.b r3,@r1 +.L28: + mov.l @(4,r14),r1 + mov r1,r2 + add #1,r2 + mov.l r2,@(4,r14) + bra .L26 + nop + .align 2 +.L27: + mov r14,r2 + mov r14,r1 + add #9,r1 + mov.l .L34,r3 + mov r3,r2 + add #3,r3 + mov.b @r3,r2 + mov.b r2,@r1 + mov.l .L34,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov.w .L36,r3 + and r2,r3 + mov.b r3,@r1 + mov #0,r1 + mov.l r1,@(4,r14) +.L30: + mov.l @(4,r14),r1 + mov #25,r2 + cmp/gt r2,r1 + bf .L33 + bra .L31 + nop + .align 2 +.L33: + mov r14,r2 + mov r14,r1 + add #8,r1 + mov.l .L34,r2 + mov.b @r2,r3 + mov.b r3,@r1 +.L32: + mov.l @(4,r14),r1 + mov r1,r2 + add #1,r2 + mov.l r2,@(4,r14) + bra .L30 + nop + .align 2 +.L31: + mov r14,r1 + mov r14,r2 + add #9,r2 + mov.b @r2,r3 + extu.b r3,r1 + mov r1,r0 + bra .L25 + nop + .align 2 +.L25: + add #12,r14 + mov r14,r15 + mov.l @r15+,r14 + rts + nop + .align 1 +.L35: + .short 254 +.L36: + .short 251 +.L37: + .align 2 +.L34: + .long -1412628480 +.Lfe3: + .size _lcdrd,.Lfe3-_lcdrd + .align 2 + .global _lcdwr + .type _lcdwr,@function +_lcdwr: + mov.l r14,@-r15 + add #-16,r15 + mov r15,r14 + mov.l r4,@r14 + mov r5,r1 + mov r14,r2 + mov r14,r3 + add #4,r3 + mov.b r1,@r3 + mov.l .L47,r1 + mov r1,r2 + add #3,r1 + mov r14,r2 + mov r14,r3 + add #4,r3 + mov.b @r3,r2 + mov.b r2,@r1 + mov.l .L47,r1 + mov r14,r3 + mov r14,r2 + add #3,r2 + mov r1,r3 + add #2,r1 + mov.b @r2,r3 + mov #1,r2 + and r3,r2 + mov.b @r1,r3 + mov.w .L48,r7 + and r3,r7 + mov r7,r3 + or r2,r3 + mov.b r3,@r1 + mov.l .L47,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov.w .L49,r3 + and r2,r3 + mov.b r3,@r1 + mov.l .L47,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov.w .L50,r3 + and r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #12,r1 + mov.l .L47,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #12,r1 + mov.l .L47,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov r14,r2 + mov r14,r1 + add #12,r1 + mov.l .L47,r2 + mov.b @r2,r3 + mov.b r3,@r1 + mov.l .L47,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov #4,r3 + or r2,r3 + mov.b r3,@r1 + mov #0,r1 + mov.l r1,@(8,r14) +.L39: + mov.l @(8,r14),r1 + mov #25,r2 + cmp/gt r2,r1 + bf .L42 + bra .L40 + nop + .align 2 +.L42: + mov r14,r2 + mov r14,r1 + add #12,r1 + mov.l .L47,r2 + mov.b @r2,r3 + mov.b r3,@r1 +.L41: + mov.l @(8,r14),r1 + mov r1,r2 + add #1,r2 + mov.l r2,@(8,r14) + bra .L39 + nop + .align 2 +.L40: + mov.l .L47,r1 + mov r1,r2 + add #2,r1 + mov.b @r1,r2 + mov.w .L50,r3 + and r2,r3 + mov.b r3,@r1 + mov #0,r1 + mov.l r1,@(8,r14) +.L43: + mov.l @(8,r14),r1 + mov #25,r2 + cmp/gt r2,r1 + bf .L46 + bra .L44 + nop + .align 2 +.L46: + mov r14,r2 + mov r14,r1 + add #12,r1 + mov.l .L47,r2 + mov.b @r2,r3 + mov.b r3,@r1 +.L45: + mov.l @(8,r14),r1 + mov r1,r2 + add #1,r2 + mov.l r2,@(8,r14) + bra .L43 + nop + .align 2 +.L44: +.L38: + add #16,r14 + mov r14,r15 + mov.l @r15+,r14 + rts + nop + .align 1 +.L48: + .short 254 +.L49: + .short 253 +.L50: + .short 251 +.L51: + .align 2 +.L47: + .long -1412628480 +.Lfe4: + .size _lcdwr,.Lfe4-_lcdwr + .align 2 + .global _lcdinit + .type _lcdinit,@function +_lcdinit: + mov.l r8,@-r15 + mov.l r14,@-r15 + sts.l pr,@-r15 + add #-4,r15 + mov r15,r14 + mov r15,r1 + mov #0,r4 + mov #48,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov #0,r1 + mov.l r1,@r14 +.L53: + mov.l @r14,r1 + mov.l .L62,r2 + cmp/gt r2,r1 + bf .L55 + bra .L54 + nop + .align 2 +.L56: +.L55: + mov.l @r14,r1 + mov r1,r2 + add #1,r2 + mov.l r2,@r14 + bra .L53 + nop + .align 2 +.L54: + mov r15,r1 + mov #0,r4 + mov #48,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov #0,r1 + mov.l r1,@r14 +.L57: + mov.l @r14,r1 + mov.w .L63,r2 + cmp/gt r2,r1 + bf .L59 + bra .L58 + nop + .align 2 +.L60: +.L59: + mov.l @r14,r1 + mov r1,r2 + add #1,r2 + mov.l r2,@r14 + bra .L57 + nop + .align 2 +.L58: + mov r15,r1 + mov #0,r4 + mov #48,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov r15,r1 + mov.l .L64,r8 + jsr @r8 + nop + mov r15,r1 + mov #0,r4 + mov #56,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov r15,r1 + mov.l .L64,r8 + jsr @r8 + nop + mov r15,r1 + mov #0,r4 + mov #12,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov r15,r1 + mov.l .L64,r8 + jsr @r8 + nop + mov r15,r1 + mov #0,r4 + mov #1,r5 + mov.l .L61,r8 + jsr @r8 + nop + mov r15,r1 + mov.l .L64,r8 + jsr @r8 + nop + mov r15,r1 + mov #0,r4 + mov #6,r5 + mov.l .L61,r8 + jsr @r8 + nop +.L52: + add #4,r14 + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r8 + rts + nop + .align 1 +.L63: + .short 4999 +.L65: + .align 2 +.L61: + .long _lcdwr +.L62: + .long 204999 +.L64: + .long _lcdready +.Lfe5: + .size _lcdinit,.Lfe5-_lcdinit + .ident "GCC: (GNU) 2.95.3 20010315 (release)" Index: main.c =================================================================== --- main.c (nonexistent) +++ main.c (revision 12) @@ -0,0 +1,1140 @@ +//=============================== +// Monitor Program +//------------------------------- +// for VirtexE Evaluation Board +// May.1 2003 Ver.1 +//=============================== + +//====================================================== +// Address Map +//====================================================== +// address sz wt wd device +// 00000000-00001FFF 8K 0 32 ROM (code) +// 00002000-00003DFF 6K 0 32 RAM (data) +// 00003E00-00003FFF 512 0 32 RAM (stack) +// +// 00000000-0000FFFF 64K 0 32 RAM (shadow every 16KB) +// 00010000-0001FFFF 64K 3 32 RAM (shadow every 16KB) +// 00020000-0002FFFF 64K 0 16 RAM (shadow every 16KB) +// 00030000-0003FFFF 64K 3 16 RAM (shadow every 16KB) +// 00040000-ABCCFFFF (shadow RAM) +// ABCD0000-ABCD00FF 256 3 32 PIO (shadow every 4B) +// ABCD0100-ABCD01FF 256 3 32 UART(shadow every 4B) +// ABCD0200-ABCD02FF 256 3 32 SYS (shadow every 8B) +// ABCD0300-FFFBFFFF (shadow RAM) +// FFFC0000-FFFCFFFF 64K 0 32 RAM (shadow every 16KB) +// FFFD0000-FFFDFFFF 64K 3 32 RAM (shadow every 16KB) +// FFFE0000-FFFEFFFF 64K 0 16 RAM (shadow every 16KB) +// FFFF0000-FFFFFFFF 64K 3 16 RAM (shadow every 16KB) +// +//====================================================== +// PORT OUTPUT +//====================================================== +// ABCD0000 : reserved +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// -----------------------------------------------; +// +// ABCD0001 : KEYYO (Key SCAN Y-axis out) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | KY4 | KY3 | KY2 | KY1 | KY0 | +// ----------------------------------------------- +// +// ABCD0002 : LCDCON (LCD Control Signal) +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | E | R/W | RS | +// ----------------------------------------------- +// +// ABCD0003 : LCDOUT (Write Data to LCD) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | DW7 | DW6 | DW5 | DW4 | DW3 | DW2 | DW1 | DW0 | +// ----------------------------------------------- +// +//====================================================== +// PORT INPUT +//====================================================== +// ABCD0000 : reserved +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// -----------------------------------------------; +// +// ABCD0001 : KEYXI (Key SCAN X-axis in) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | KX4 | KX3 | KX2 | KX1 | KX0 | +// ----------------------------------------------- +// +// ABCD0002 : reserved +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | | | +// ----------------------------------------------- +// +// ABCD0003 : LCDIN (Read Data from LCD) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | DR7 | DR6 | DR5 | DR4 | DR3 | DR2 | DR1 | DR0 | +// ----------------------------------------------- +// +//====================================================== +// UART: SASC (www.opencores.com) +// Simple Asynchronous Serial Communication Device +//====================================================== +// ABCD0100 : UARTBG0 Baud Rate Generator Div0 (R/W) +// 31 30 29 28 27 26 25 24 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | B07 | B06 | B05 | B04 | B03 | B02 | B01 | B00 | +// ----------------------------------------------- +// +// ABCD0101 : UARTBG1 Baud Rate Generator Div1 (R/W) +// 23 22 21 20 19 18 17 16 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | B17 | B16 | B15 | B14 | B13 | B12 | B11 | B10 | +// ----------------------------------------------- +// +// ABCD0102 : UARTCON (TXF=full_o, RXE=empty_o) (R only) +// 15 14 13 12 11 10 9 8 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | | | | | | | TXF | RXE | +// ----------------------------------------------- +// +// ABCD0103 : UARTTXD(W only)/UARTRXD(R only) +// 7 6 5 4 3 2 1 0 +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// | TR7 | TR6 | TR5 | TR4 | TR3 | TR2 | TR1 | TR0 | +// ----------------------------------------------- +// +//====================================================== +// System Controller +// Interrupt and Exception Controller +//====================================================== +// ABCD0200 : INTCTL Interrupt Control (32bit R/W only) +// 31 30 29 28 27 26 25 24 +// ----------------------------------------------- +// |E_NMI|E_IRQ|E_CER|E_DER|E_MRS| |TMRON|BRKON| +// ----------------------------------------------- +// 23 22 21 20 19 18 17 16 +// ----------------------------------------------- +// |ILVL3|ILVL2|ILVL1|ILVL0|IVEC7|IVEC6|IVEC5|IVEC4| +// ----------------------------------------------- +// 15 14 13 12 11 10 9 8 +// ----------------------------------------------- +// |IVEC3|IVEC2|IVEC1|IVEC0|TMR11|TMR10|TMR09|TMR08| +// ----------------------------------------------- +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// |TMR07|TMR06|TMR05|TMR04|TMR03|TMR02|TMR01|TMR00| +// ----------------------------------------------- +// bit31: E_NMI Emulate NMI Interrupt (W only) +// bit30: E_IRQ Emulate IRQ Interrupt (W only) +// bit29: E_CER Emulate CPU Address Error (W only) +// bit28: E_DER Emulate DMA Address Error (W only) +// bit27: E_MRS Emulate Manual Reset (W only) +// bit26: reserved +// bit25: TMRON INTTMR OFF/ON (0:OFF, 1:ON) +// bit24: BRKON Address Break(NMI) OFF/ON (0:OFF, 1:ON) +// bit23: ILVL3 IRQ ILevel 3 +// bit22: ILVL2 IRQ ILevel 2 +// bit21: ILVL1 IRQ ILevel 1 +// bit20: ILVL0 IRQ ILevel 0 +// bit19: IVEC7 IRQ Vector 7 +// bit18: IVEC6 IRQ Vector 6 +// bit17: IVEC5 IRQ Vector 5 +// bit16: IVEC4 IRQ Vector 4 +// bit15: IVEC3 IRQ Vector 3 +// bit14: IVEC2 IRQ Vector 2 +// bit13: IVEC1 IRQ Vector 1 +// bit12: IVEC0 IRQ Vector 0 +// bit11: TMR11 (12 bit interval timer to generate IRQ) +// ... +// bit 0: TMR00 (12 bit interval timer to generate IRQ) +// +// ABCD0204 : BRKADR Break Address (16bit R/W only) +// 15 14 13 12 11 10 9 8 +// ----------------------------------------------- +// |ADR15|ADR14|ADR13|ADR12|ADR11|ADR10|ADR09|ADR08| +// ----------------------------------------------- +// 7 6 5 4 3 2 1 0 +// ----------------------------------------------- +// |ADR07|ADR06|ADR05|ADR04|ADR03|ADR02|ADR01|ADR00| +// ----------------------------------------------- +// bit15: ADR15 Break Address15 +// ... +// bit00: ADR00 Break Address00 +// + +#include "common.h" + +//================= +// Define Functions +//================= +void utility(void); +unsigned char command(unsigned long *data); +unsigned long get_sformat(void); +unsigned char get_byte_rx_echo(void); +unsigned char hex2asc(unsigned char hex); +unsigned char asc2hex(unsigned char asc); + +void waitNms(unsigned char n); +unsigned char key_scan(); +unsigned char key_wait_on(void); +void key_wait_off(void); + +void uart_tx(unsigned char data); +unsigned char uart_rx(void); +unsigned char uart_rx_echo(void); +void uart_rx_flush(void); +void uart_set_baudrate(void); + +void lcd_disp_long(unsigned long data); +void lcd_cursor(unsigned char con); +void lcd_erase(unsigned char pos); +void lcd_message(unsigned char pos, unsigned char *pstr); +void lcd_disp(unsigned char chr); +void lcd_pos(unsigned char pos); +void lcd_ready(void); +unsigned char lcd_rd(int); +void lcd_wr(int, unsigned char); +void lcd_init(void); + +//============ +// IRQ Handler +//============ +void irq_handler(void) +{ + unsigned char mes_irq[] = "IRQ: Push to RTE"; + + lcd_message(16, mes_irq); + key_wait_off(); + key_wait_on(); + key_wait_off(); +} + +//============ +// NMI Handler +//============ +void nmi_handler(void) +{ + unsigned char mes_nmi[] = "NMI/BRK:Goto Mon"; + + SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off + + lcd_message(16, mes_nmi); + key_wait_off(); + key_wait_on(); + key_wait_off(); +} + +//============= +// TRAP Handler +//============= +void trap_handler(void) +{ + unsigned char mes_trap[] = "TRAP:Push to RTE"; + + lcd_message(16, mes_trap); + key_wait_off(); + key_wait_on(); + key_wait_off(); +} + +//==================== +// Illegal Instruction +//==================== +void illegal(void) +{ + unsigned char mes_ilgl[] = "Illegal:Goto Mon"; + + lcd_message(16, mes_ilgl); + key_wait_off(); + key_wait_on(); + key_wait_off(); +} + +//============== +// Address Error +//============== +void error(void) +{ + unsigned char mes_error[]= "AdrsErr:Goto Mon"; + + lcd_message(16, mes_error); + key_wait_off(); + key_wait_on(); + key_wait_off(); +} + +//============= +// Main Routine +//============= +void main_sh(void) +{ + unsigned char mes_welcome[] = "SH-2 Monitor v.1"; + unsigned char mes_copyright[] = "(C) 2003 T.Aitch"; + unsigned char mes_memory[] = "Memory--"; + unsigned char mes_run[] = "Run---Good Luck!"; + + unsigned char key; + unsigned long adrs; + unsigned long data; + unsigned long data_edit; + + void (* userfunc)(void); + long i; + + //----------- + // Initialize + //----------- + lcd_init(); + uart_set_baudrate(); + uart_rx_flush(); + key_wait_off(); + + //---------------- + // Welcome Message + //---------------- + lcd_message( 0, mes_welcome); + lcd_message(16, mes_copyright); + for (i = 0 ; i < 2000000 ; i++); + + //---------- + // Clear LCD + //---------- + key_wait_off(); + lcd_erase(0); + lcd_erase(16); + + //---------------- + // Main Event Loop + //---------------- + adrs = 0x00000000; + + while(1) + { + adrs = adrs & 0xfffffffc; + data = * (unsigned long *) adrs; + lcd_pos(0); + lcd_disp_long(adrs); + lcd_disp_long(data); + + lcd_message(16, mes_memory); + + data_edit = data; + key = command(&data_edit); + + switch(key) + { + case KEYUTL: utility(); + break; + case KEYRUN: lcd_message(16, mes_run); + key_wait_off(); + adrs = adrs & 0xfffffffe; + userfunc = (void (*)) adrs; + (* userfunc)(); + break; + case KEYGET: adrs = get_sformat(); + break; + case KEYPUT: break; + case KEYADR: adrs = data_edit; + break; + case KEYINC: adrs = adrs + 4; + break; + case KEYDEC: adrs = adrs - 4; + break; + case KEYDAT: * (unsigned long *) adrs = data_edit; + adrs = adrs + 4; + break; + default: break; + } + } +} + +//**************************************************** +//* * +//* Service Utilities * +//* * +//**************************************************** + +//==================== +// "Utility" Functions +//-------------------- +// Input : none +// Output : none +//==================== +void utility(void) +{ + unsigned char mes_util[] = "BRK-Func Select?"; + unsigned char mes_menu[] = "1:REG 2:BRK SET"; + unsigned char mes_break[] = "Set Break Point."; + unsigned char mes_adrs[] = "Address?"; + unsigned char mes_brkok[] = "Break Accepted. "; + unsigned char mes_brkng[] = "Break Canceled. "; + unsigned char mes_SR[] = "SR :"; + unsigned char mes_PC[] = "PC :"; + unsigned char mes_SP[] = "SP(R15):"; + unsigned char mes_PR[] = "PR :"; + unsigned char mes_R0[] = "R0 :"; + unsigned char mes_R1[] = "R1 :"; + unsigned char mes_R2[] = "R2 :"; + unsigned char mes_R3[] = "R3 :"; + unsigned char mes_R4[] = "R4 :"; + unsigned char mes_R5[] = "R5 :"; + unsigned char mes_R6[] = "R6 :"; + unsigned char mes_R7[] = "R7 :"; + unsigned char mes_R8[] = "R8 :"; + unsigned char mes_R9[] = "R9 :"; + unsigned char mes_R10[] = "R10 :"; + unsigned char mes_R11[] = "R11 :"; + unsigned char mes_R12[] = "R12 :"; + unsigned char mes_R13[] = "R13 :"; + unsigned char mes_R14[] = "R14 :"; + unsigned char mes_R15[] = "R15 :"; + unsigned char mes_MACH[] = "MACH :"; + unsigned char mes_MACL[] = "MACL :"; + unsigned char mes_GBR[] = "GBR :"; + unsigned char mes_VBR[] = "VBR :"; + unsigned char key; + unsigned long adrs; + + lcd_message(0, mes_util); + lcd_message(16, mes_menu); + key_wait_off(); + + key = key_wait_on(); + if (key == KEY1) // Register Watcher + { + key_wait_off(); + lcd_message(0, mes_SR); lcd_disp_long(REG.SR); + lcd_message(16, mes_PC); lcd_disp_long(REG.PC); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_SP); lcd_disp_long(REG.SP); + lcd_message(16, mes_PR); lcd_disp_long(REG.PR); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R0); lcd_disp_long(REG.R0); + lcd_message(16, mes_R1); lcd_disp_long(REG.R1); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R2); lcd_disp_long(REG.R2); + lcd_message(16, mes_R3); lcd_disp_long(REG.R3); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R4); lcd_disp_long(REG.R4); + lcd_message(16, mes_R5); lcd_disp_long(REG.R5); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R6); lcd_disp_long(REG.R6); + lcd_message(16, mes_R7); lcd_disp_long(REG.R7); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R8); lcd_disp_long(REG.R8); + lcd_message(16, mes_R9); lcd_disp_long(REG.R9); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R10); lcd_disp_long(REG.R10); + lcd_message(16, mes_R11); lcd_disp_long(REG.R11); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R12); lcd_disp_long(REG.R12); + lcd_message(16, mes_R13); lcd_disp_long(REG.R13); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_R14); lcd_disp_long(REG.R14); + lcd_message(16, mes_R15); lcd_disp_long(REG.R15); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_MACH); lcd_disp_long(REG.MACH); + lcd_message(16, mes_MACL); lcd_disp_long(REG.MACL); + key_wait_on(); + key_wait_off(); + lcd_message(0, mes_GBR); lcd_disp_long(REG.GBR); + lcd_message(16, mes_VBR); lcd_disp_long(REG.VBR); + key_wait_on(); + key_wait_off(); + } + else if (key == KEY2) // Break Setting + { + lcd_message(0, mes_break); + lcd_message(16, mes_adrs); + adrs = SYS.BRKADR; + key = command(&adrs); + if (key == KEYDAT) + { + lcd_message(0, mes_brkok); + key_wait_off(); + SYS.BRKADR = adrs; + SYS.INTCTL = SYS.INTCTL | 0x01000000; // BRK on + } + else + { + lcd_message(0, mes_brkng); + key_wait_off(); + SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off + } + } +} + +//========================================= +// Command Handler +//----------------------------------------- +// Input : data = display long data +// Output : command = input command +// data = input long data +//========================================= +unsigned char command(unsigned long *data) +{ + unsigned char key; + int i; + + lcd_pos(24); + lcd_disp_long(*data); + + lcd_cursor(1); + i = 0; + + do + { + if (i == 0) lcd_pos(24); + + key_wait_off(); + key = key_wait_on(); + if (key <= KEYF) + { + lcd_disp(hex2asc(key)); + *data = (*data & ~((0x0000000F) << ((7-i) * 4))) | (key << ((7-i) * 4)); + } + + i = (i + 1) % 8; + } while (key <= KEYF); + + lcd_cursor(0); + return(key); +} + +//================================================= +// Get S-Format +//------------------------------------------------- +// Input : none +// Output : get_sformat = address of top-record +//================================================= +unsigned long get_sformat(void) +{ + unsigned char mes_get[] = "Get S-Format(S3)"; + unsigned char mes_send[] = "please send....."; + unsigned char mes_receive[] = "-----OK!"; + unsigned char mes_get_error[] = "ERR:Bad S-Format"; + + int topflag; + int endflag; + unsigned char rc; + unsigned char rxdata; + unsigned long adrs; + unsigned long adrs_record; + unsigned long adrs_top = 0; + int count; + unsigned char checksum; + int error; + int i; + + error = 0; + topflag = 1; + endflag = 0; + + uart_rx_flush(); + lcd_message( 0, mes_get); + lcd_message(16, mes_send); + + while(endflag == 0) + { + // + // Wait 'S' character + // + while (uart_rx_echo() != 'S'); + // + // Check Record Type + // + switch(rc = uart_rx_echo()) + { + case '3': //-------- Record of 4 byte length address + case '7': //-------- End of Record + // + // Get Record Length + // + rxdata = get_byte_rx_echo(); + checksum = rxdata; + count = rxdata - 5; + // + // Get Record Address + // + adrs = 0; + for (i = 0 ; i < 4 ; i++) + { + rxdata = get_byte_rx_echo(); + checksum = checksum + rxdata; + adrs = (adrs << 8) + (unsigned long) rxdata; + } + adrs_record = adrs; + if (topflag) + { + adrs_top = adrs; + topflag = 0; + } + // + // Get Record Data and Save to memory + // + while(count > 0) + { + rxdata = get_byte_rx_echo(); + checksum = checksum + rxdata; + * (unsigned char *) adrs = rxdata; + adrs = adrs + 1; + count = count - 1; + } + // + // Check checksum + // + rxdata = get_byte_rx_echo(); + checksum = (~checksum) & 0x0ff; + error = (checksum != rxdata); + // + // Continue ? or Finish ? + // + if (rc == '3') // S3 format + break; + else // S7 format + { + endflag = 1; + break; + } + // + // ignore another Record + // + default : continue; + } + if (error) + { + lcd_message(16, mes_get_error); + rc = key_wait_on(); + break; + } + else + { + lcd_pos(16); + lcd_disp_long(adrs_record); + lcd_message(24, mes_receive); + } + } + return(adrs_top); +} + +//============================================== +// Get Byte from Rx with echo +//---------------------------------------------- +// Input : none +// Output : get_byte_rx_echo = received byte +//============================================== +unsigned char get_byte_rx_echo(void) +{ + unsigned char hex; + + hex = asc2hex(uart_rx_echo()); + hex = (hex << 4) + asc2hex(uart_rx_echo()); + + return(hex); +} + +//============================= +// Convert Hex(nibble) to Ascii +//----------------------------- +// Input : hex (0x00-0x0F) +// Output : hex2asc +//============================= +unsigned char hex2asc(unsigned char hex) +{ + hex = hex & 0x0f; + if (hex <= 0x09) + return(hex + '0'); + else + return(hex - 0x0a + 'A'); +} + +//============================= +// Convert Ascii to Hex(nibble) +//----------------------------- +// Input : asc(0-9, A-F) +// Output : asc2hex +//============================= +unsigned char asc2hex(unsigned char asc) +{ + if (asc <= '9') + return((asc - '0') & 0x0f); + else + return((asc - 'A' + 0x0a) & 0x0f); +} + +//**************************************************** +//* * +//* Key Utilities * +//* * +//**************************************************** + +//=================================== +// Wait until Key On +//----------------------------------- +// Input : none +// Output : key = pushed key code +//=================================== +unsigned char key_wait_on(void) +{ + unsigned char key; + + while((key = key_scan()) == KEYNONE) waitNms(8); + + return(key); +} + +//=================== +// Wait until Key Off +//------------------- +// Input : none +// Output : none +//=================== +void key_wait_off(void) +{ + while(key_scan() != KEYNONE) waitNms(8); +} + +//=================================== +// Key Scan +//----------------------------------- +// Input : none +// Output : key = pushed key code +//=================================== +unsigned char key_scan() +{ + unsigned char keyx4; + unsigned char keyx3; + unsigned char keyx2; + unsigned char keyx1; + unsigned char keyx0; + + PORTO.KEYYO.BYTE = 0xef; // KEYY4 + waitNms(1); + keyx4 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xf7; // KEYY3 + waitNms(1); + keyx3 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfb; // KEYY2 + waitNms(1); + keyx2 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfd; // KEYY1 + waitNms(1); + keyx1 = PORTI.KEYXI.BYTE & 0x1f; + + PORTO.KEYYO.BYTE = 0xfe; // KEYY0 + waitNms(1); + keyx0 = PORTI.KEYXI.BYTE & 0x1f; + + switch(keyx4) + { + case 0x17 : return(KEYPUT); + case 0x1b : return(KEYGET); + case 0x1d : return(KEYRUN); + case 0x1e : return(KEYUTL); + } + switch(keyx3) + { + case 0x0f : return(KEYADR); + case 0x17 : return(KEYF); + case 0x1b : return(KEYE); + case 0x1d : return(KEYD); + case 0x1e : return(KEYC); + } + switch(keyx2) + { + case 0x0f : return(KEYINC); + case 0x17 : return(KEYB); + case 0x1b : return(KEYA); + case 0x1d : return(KEY9); + case 0x1e : return(KEY8); + } + switch(keyx1) + { + case 0x0f : return(KEYDEC); + case 0x17 : return(KEY7); + case 0x1b : return(KEY6); + case 0x1d : return(KEY5); + case 0x1e : return(KEY4); + } + switch(keyx0) + { + case 0x0f : return(KEYDAT); + case 0x17 : return(KEY3); + case 0x1b : return(KEY2); + case 0x1d : return(KEY1); + case 0x1e : return(KEY0); + } + return(KEYNONE); +} + +//================== +// Wait n ms +//------------------ +// Input : n ms +// Output : none +//================== +void waitNms(unsigned char n) +{ + int i, j; + unsigned char dummy; + + for (i = 0 ; i < n ; i++) + { + // 1ms = 20000 * 50ns (20MHz) + for (j = 0 ; i <= 10000 ; i++) dummy = PORTI.RESERVED_0; + } +} + +//**************************************************** +//* * +//* UART Utilities * +//* * +//**************************************************** + +//============================== +// Send Tx +// ----------------------------- +// Input : data = send data +// Output : none +//============================== +void uart_tx(unsigned char data) +{ + while(UART.UARTCON.BIT.TXF); + UART.BYTE.TX = data; +} + +//==================================== +// Receive RX +// ----------------------------------- +// Input : none +// Output : uart_rx = receive data +//==================================== +unsigned char uart_rx(void) +{ + while(UART.UARTCON.BIT.RXE); + return(UART.BYTE.RX); +} + +//========================================= +// Receive RX with echo to TX +// ---------------------------------------- +// Input : none +// Output : uart_rx_echo = receive data +//========================================= +unsigned char uart_rx_echo(void) +{ + unsigned char data; + + while(UART.UARTCON.BIT.RXE); + data = UART.BYTE.RX; + + while(UART.UARTCON.BIT.TXF); + UART.BYTE.TX = data; + + return(data); +} + +//================== +// Flush RXD FIFO +//------------------ +// Input : none +// Output : none +//================== +void uart_rx_flush(void) +{ + unsigned char dummy; + + while(UART.UARTCON.BIT.RXE == 0) dummy = UART.BYTE.RX; +} + +//============================== +// Set Baud Rate 9600bps +//------------------------------ +// 9600*4=38.4KHz +// 20MHz/38.4KHz=520.8=20*26 +// (BRG0 + 2) = 20, BRG0=18 =0x12 +// (BRG1 + 1) = 26, BRG1=25 =0x19 +// +// 4800*4=19.2KHz +// 20MHz/19.2KHz=1041.7=20*52 +// (BRG0 + 2) = 20, BRG0=18 =0x12 +// (BRG1 + 1) = 52, BRG1=51 =0x33 +// +// 2400*4=9.6KHz +// 20MHz/9.6KHz=2083.3=20*104 +// (BRG0 + 2) = 20, BRG0=18 =0x12 +// (BRG1 + 1) =104, BRG1=103=0x67 +// +// 1200*4=4.8KHz +// 20MHz/4.8KHz=4166.7=20*208 +// (BRG0 + 2) = 20, BRG0=18 =0x12 +// (BRG1 + 1) =208, BRG1=207=0xcf +// +// Input : none +// Output : none +//============================== +void uart_set_baudrate(void) +{ + int i; + unsigned char dummy; + + UART.UARTBG0 = 18; + UART.UARTBG1 = 207; + + for (i = 0; i < 65536; i++) dummy = PORTI.RESERVED_0; +} + +//**************************************************** +//* * +//* LCD Utilities * +//* * +//**************************************************** + +//====================================== +// LCD Display Long Hex data (8 digit) +//-------------------------------------- +// Input : data = display long data +// Output : none +//====================================== +void lcd_disp_long(unsigned long data) +{ + int i; + unsigned char digit; + + for (i = 7 ; i >= 0 ; i--) + { + digit = (unsigned char) (data / (1 << i * 4)) % 0x10; + lcd_disp(hex2asc(digit)); + } +} + +//================================ +// Cursor On/Off +//-------------------------------- +// Input : cur = off(0)/on(1) +// Output : none +//================================ +void lcd_cursor(unsigned char con) +{ + lcd_ready(); + if (con) + lcd_wr(INST, 0x0d); + else + lcd_wr(INST, 0x0c); +} + + +//=============================== +// Erase 1 line from the position +//------------------------------- +// Input : pos = position +// 1st line = 00-15 +// 2nd line = 16-31 +// Ouput : none +//=============================== +void lcd_erase(unsigned char pos) +{ + int i; + + lcd_pos(pos); + for (i = 0; i < 16; i++) lcd_disp(' '); +} + +//======================================== +// Print a Message from Current Position +//---------------------------------------- +// Input : pstr = message top address +// Outpur : none +//======================================== +void lcd_message(unsigned char pos, unsigned char *pstr) +{ + unsigned char *pmessage; + + lcd_pos(pos); + pmessage = pstr; + while (*pmessage) lcd_disp(*pmessage++); +} + +//========================================== +// Display One Character on Current Position +//------------------------------------------ +// Input : chr = display charcter +// Output : none +//========================================== +void lcd_disp(unsigned char chr) +{ + lcd_ready(); + lcd_wr(DATA, chr); +} + +//================================ +// Set LCD Display Position +//-------------------------------- +// Input : pos = position +// 1st line = 00-15 +// 2nd line = 16-31 +// Ouput : none +//================================ +void lcd_pos(unsigned char pos) +{ + unsigned char phypos; + + phypos = pos % 32; + if (phypos >= 16) + phypos = (phypos - 16) + 64; + phypos = phypos | 0x80; + + lcd_ready(); + lcd_wr(INST, phypos); +} + +//===================== +// Wait until LCD ready +//--------------------- +// Input : none +// Output : none +//===================== +void lcd_ready(void) +{ + while ((lcd_rd(INST) & 0x80) == 0x80); +} + +//================================= +// LCD Read +//--------------------------------- +// Input : rs (0=Instr,1=Data) +// Output : lcd_rd (Read Data) +//================================= +unsigned char lcd_rd(int rs) +{ + int i; + unsigned char dummy; + unsigned char data; + + PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); + + // wait 60ns = 2cyc@20MHz + dummy = PORTI.RESERVED_0; + dummy = PORTI.RESERVED_0; + + + PORTO.LCDCON.BYTE = 0x06 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + data = PORTI.LCDIN; + + PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + return(data); +} + +//================================= +// LCD Write +//--------------------------------- +// Input : rs (0=Instr,1=Data) +// wd (Write Data) +// Output : none +//================================= +void lcd_wr(int rs, unsigned char wd) +{ + int i; + unsigned char dummy; + + PORTO.LCDOUT = wd; + + PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); + + // wait 60ns = 2cyc@20MHz + dummy = PORTI.RESERVED_0; + dummy = PORTI.RESERVED_0; + + PORTO.LCDCON.BYTE = 0x04 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; + + PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); + + // wait 500ns = 10cyc@20MHz + for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; +} + +//================== +// LCD Initialize +//------------------ +// Input : none +// Output : none +//================== +void lcd_init(void) +{ + int i; + unsigned char dummy; + + lcd_wr(INST, 0x30); + + // wait 4100us=82000cyc@20MHz + for (i = 0 ; i < 82000 ; i++) dummy = PORTI.RESERVED_0; + + lcd_wr(INST, 0x30); + + // wait 100us=2000cyc@20MHz + for (i = 0 ; i < 2000 ; i++) dummy = PORTI.RESERVED_0; + + lcd_wr(INST, 0x30); + + // set function (8bit, 2lines) + lcd_ready(); + lcd_wr(INST, 0x38); + + // display (disp on, cursor off, blink off) + lcd_ready(); + lcd_wr(INST, 0x0c); + + // clear + lcd_ready(); + lcd_wr(INST, 0x01); + + // entry mode (increment, no-shift) + lcd_ready(); + lcd_wr(INST, 0x06); +} + +//=============== +// End of Program +//=============== Index: main.elf =================================================================== --- main.elf (nonexistent) +++ main.elf (revision 12) @@ -0,0 +1,27 @@ +ELF*44 (   @@ . ....8....................@ ѿ`@+_п@ //ѿP!qP!q`p!q*!qP!qP!q!"q!2q!Bq!Rq!bq!rq!q!q!q!q!q!q!q`p!q +!q!q!q"!О@ OO#OOO"////////v/f/V/F/6/&//В@ `abcdefghijklmnO&OOO'O+ OO#OOO"////////v/f/V/F/6/&//}@ `abcdefghijklmnO&OOO'O+ H.HH 8@/ +/O" nA d +A e H A H ~oO&n h j//O"nA d +a2!)# +A e H A H ~oO&n h  j/ +/O" nA d +A e H A H ~oO&n h j/ +/O" nA d +A e H A H ~oO&n h j/ +/O" nA d +A e H A H ~oO&n h j/E/E/////O"fnH djz>dH faq(L; H dm}49dH f8A 8A 7A 7L 6H eH e3r2rL 1H H *.iA -H dH d'LK aqH!h'A dbr22,-# 0:F>BA K eL *J A jjza*z (d  lL , +/Մ/؄/////O"f?8nH dk{~dH faq({dfH `p>:f2&H d#887f1H d24f20 H d**0f2&^d#| $0<HT`<Pdx $0<HT`lxH ~f1H dޒ{f20H dאxf2&H d#vJ eJ esK sL  K J ldI J TI L K J TI J eTI L K J TI J TI L K J TI |J TI L K {J TI uJ TI L K kJ TI eJ TI L K [J TI UJ TI L K KJ TI EJ TI x@L K ;J TI 5J TI L K +J TI %J TI L K (lx jLJ TI TJ TI L K JJ TI DJ TI L K + )6J 4J 0Q`b2A d# %J K `a!+J K a!))>|oO&nmlkji h /,//////lCO"A n'A d&C -؋!A #A "A k;6bA dA diyIJ eahdeJ (( ,brBa#aqA!#32A&J +Z $H  >  +%>, 7.C N.V.^8ciou{(&$,<048 ) 3=GQ[ e$o(y,048<@DHLPTX\  '@66@hHQ[_vgnVw$F0vHbd|(d|l<  N! , 34<T0E`R8^j.k\t|, ,   @L4L0P@L!* +t7 >LE JhU_8Lh vLX%> ,@, 4./startup/crt0.S_vector_top_start_stack_gnrl_ilgl_unexpected_slot_ilgl_cpuerr_dmaerr_nmi_trap_irq0_irq1_irq2_irq3_irq4_irq5_irq6_irq7_pillegal_restart_pvector_top_perror_pbreak_reg_top_pnmi_handler_pirq_handler_ptrap_handler_break_reg_top_break_sr_break_pc_break_sp_break_pr_break_r0_break_r1_break_r2_break_r3_break_r4_break_r5_break_r6_break_r7_break_r8_break_r9_break_r10_break_r11_break_r12_break_r13_break_r14_break_r15_break_mach_break_macl_break_gbr_break_vbr_pmain_sh_endless*ABS*main.cgcc2_compiled.libgcc1.SlongwayshortwayvshortwayretL_smallL_evenL_odddstL_al4dstL_al4bothL_2l_loopL_cleanupL_al4both_loopL_al4srcL_odd_loopL_readyL_cleanup_loop_uart_rx_flush___ashlsi3_lcd_init_lcd_pos_etext__idata_end_asc2hex_bss_start_sdata_hex2asc_waitNms_nmi_handler_lcd_cursor_key_wait_on_main_sh_memcpy_utility_uart_set_baudrate_command_lcd_ready_uart_rx___dtors_irq_handler_uart_rx_echo_lcd_wr_lcd_erase_lcd_rd_get_byte_rx_echo_trap_handler___ctors_end___ctors_get_sformat_edata_error_end___udivsi3_key_scan_illegal__idata_start_lcd_disp_long_uart_tx_key_wait_off___dtors_end_lcd_disp_lcd_message \ No newline at end of file Index: Makefile =================================================================== --- Makefile (nonexistent) +++ Makefile (revision 12) @@ -0,0 +1,76 @@ +#======================================== +# SuperH (SH-2) C Compiler Makefile +#---------------------------------------- +# Rev.1 March 21, 2003 by Thorn Aitch +#======================================== + +#------------- +# Command Path +#------------- +CMD_PATH = /usr/local/bin +CC = $(CMD_PATH)/sh-elf-gcc +OBJCOPY = $(CMD_PATH)/sh-elf-objcopy +SIZE = $(CMD_PATH)/sh-elf-size + +#------------- +# Output Files +#------------- +TARGET = main.srec +TARGET_ELF = main.elf +MAP_FILE = $(TARGET_ELF:.elf=.map) + +OUTPUT_FORMAT = srec --srec-forceS3 + +#------------------------- +# Compile and Link Options +#------------------------- +INCLUDES = -I./include +#CFLAGS = -m2 -g -Os $(INCLUDES) -Wall +CFLAGS = -m2 -Os $(INCLUDES) -Wall + +LDSCRIPT = startup/sh.x + +LDFLAGS = -m2 -T $(LDSCRIPT) -O3 -nostartfiles -Wl,-Map,$(MAP_FILE) + +#------------ +# Input Files +#------------ +STARTUP = crt0.S +LIBS = +SRCS = main.c +OBJS = $(STARTUP:.S=.o) $(LIBS:.c=.o) $(SRCS:.c=.o) + +#--------------- +# Make Operation +#--------------- +$(TARGET) : $(TARGET_ELF) + $(OBJCOPY) -v -O $(OUTPUT_FORMAT) $(TARGET_ELF) $(TARGET) + +$(TARGET_ELF) : $(OBJS) + $(CC) $(LDFLAGS) $(OBJS) -o $(TARGET_ELF) + $(SIZE) -Ax $(TARGET_ELF) + +$(OBJS) : Makefile + +clean : + rm -f *.o $(TARGET) $(TARGET_ELF) $(MAP_FILE) + +%.o : %.c + $(CC) -c $(CFLAGS) $< + +%.o : %.S + $(CC) -c $(CFLAGS) $< + +%.o : %.s + $(CC) -c $(CFLAGS) $< + +#------------------- +# Header and Startup +#------------------- +vpath %.h ./include +vpath %.S ./startup + +#------------------ +# Source and Object +#------------------ +main.o : main.c Index: common.h =================================================================== --- common.h (nonexistent) +++ common.h (revision 12) @@ -0,0 +1,159 @@ +//=============================== +// C Source Header +//------------------------------- +// for VirtexE Evaluation Board +// Apr.19 2003 Ver.1 +//=============================== + +//-------------------------- +// Peripheral I/O definition +//-------------------------- +struct st_porto +{ + unsigned char RESERVED_0; + union + { + unsigned char BYTE; + struct + { + unsigned char :3; + unsigned char KY4:1; + unsigned char KY3:1; + unsigned char KY2:1; + unsigned char KY1:1; + unsigned char KY0:1; + } BIT; + } KEYYO; + union + { + unsigned char BYTE; + struct + { + unsigned char :5; + unsigned char E :1; + unsigned char RW:1; + unsigned char RS:1; + } BIT; + } LCDCON; + unsigned char LCDOUT; +}; + +struct st_porti +{ + unsigned char RESERVED_0; + union + { + unsigned char BYTE; + struct + { + unsigned char :3; + unsigned char KX4:1; + unsigned char KX3:1; + unsigned char KX2:1; + unsigned char KX1:1; + unsigned char KX0:1; + } BIT; + } KEYXI; + unsigned char RESERVED_2; + unsigned char LCDIN; +}; + +struct st_uart +{ + unsigned char UARTBG0; + unsigned char UARTBG1; + union + { + unsigned char BYTE; + struct + { + unsigned char :6; + unsigned char TXF:1; + unsigned char RXE:1; + } BIT; + } UARTCON; + union + { + unsigned char TX; + unsigned char RX; + } BYTE; +}; + +struct st_sys +{ + unsigned long INTCTL; + unsigned long BRKADR; +}; + +struct st_reg +{ + unsigned long SR; + unsigned long PC; + unsigned long SP; + unsigned long PR; + unsigned long R0; + unsigned long R1; + unsigned long R2; + unsigned long R3; + unsigned long R4; + unsigned long R5; + unsigned long R6; + unsigned long R7; + unsigned long R8; + unsigned long R9; + unsigned long R10; + unsigned long R11; + unsigned long R12; + unsigned long R13; + unsigned long R14; + unsigned long R15; + unsigned long MACH; + unsigned long MACL; + unsigned long GBR; + unsigned long VBR; +}; + +#define PORTO (*(volatile struct st_porto *)0xabcd0000) +#define PORTI (*(volatile struct st_porti *)0xabcd0000) +#define UART (*(volatile struct st_uart *)0xabcd0100) +#define SYS (*(volatile struct st_sys *)0xabcd0200) +#define REG (*(volatile struct st_reg *)0x00000300) + +//----------- +// LCD Access +//----------- +#define INST 0 +#define DATA 1 + +//--------- +// Key Code +//--------- +#define KEY0 0 +#define KEY1 1 +#define KEY2 2 +#define KEY3 3 +#define KEY4 4 +#define KEY5 5 +#define KEY6 6 +#define KEY7 7 +#define KEY8 8 +#define KEY9 9 +#define KEYA 10 +#define KEYB 11 +#define KEYC 12 +#define KEYD 13 +#define KEYE 14 +#define KEYF 15 +#define KEYUTL 16 +#define KEYRUN 17 +#define KEYGET 18 +#define KEYPUT 19 +#define KEYADR 20 +#define KEYINC 21 +#define KEYDEC 22 +#define KEYDAT 23 +#define KEYNONE 255 + + + +

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.