Browse Source

Extract bbc-microbit-classic-gcc from microbit-targets@5630495e44

When the yotta registry is deprecated, targets will need to be accessed
directly from GitHub. This commit pulls the target from

https://github.com/lancaster-university/microbit-targets/
at
5630495e44

in order to make this simple
master v0.2.2
Jonathan Austin 1 year ago
parent
commit
172374ac37
6 changed files with 6349 additions and 2 deletions
  1. +43
    -0
      CMake/toolchain.cmake
  2. +2
    -2
      README.md
  3. +458
    -0
      bootloader/BLE_BOOTLOADER_RESERVED.hex
  4. +151
    -0
      ld/NRF51822.ld
  5. +5649
    -0
      softdevice/s110_nrf51822_8.0.0_softdevice.hex
  6. +46
    -0
      target.json

+ 43
- 0
CMake/toolchain.cmake View File

@ -0,0 +1,43 @@
# Copyright (C) 2014-2015 ARM Limited. All rights reserved.
if(TARGET_NORDIC_NRF51822_16K_GCC_TOOLCHAIN_INCLUDED)
return()
endif()
set(TARGET_NORDIC_NRF51822_16K_GCC_TOOLCHAIN_INCLUDED 1)
# legacy definitions for building mbed 2.0 modules with a retrofitted build
# system:
set(MBED_LEGACY_TARGET_DEFINITIONS "NORDIC" "NRF51_MICROBIT" "MCU_NRF51822" "MCU_NRF51_16K" "MCU_NORDIC_16K" "MCU_NRF51_16K_S110")
# provide compatibility definitions for compiling with this target: these are
# definitions that legacy code assumes will be defined.
add_definitions("-DNRF51 -DTARGET_NORDIC -DTARGET_M0 -D__MBED__=1 -DMCU_NORDIC_16K -DTARGET_NRF51_MICROBIT -DTARGET_MCU_NORDIC_16K -DTARGET_MCU_NRF51_16K_S110 -DTARGET_NRF_LFCLK_RC -DTARGET_MCU_NORDIC_16K -D__CORTEX_M0 -DARM_MATH_CM0")
# append non-generic flags, and set NRF51822-specific link script
set(_CPU_COMPILATION_OPTIONS "-mcpu=cortex-m0 -mthumb -D__thumb2__")
set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} ${_CPU_COMPILATION_OPTIONS}")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_ASM_FLAGS_INIT} ${_CPU_COMPILATION_OPTIONS}")
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} ${_CPU_COMPILATION_OPTIONS} -std=c++11 -fwrapv")
set(CMAKE_MODULE_LINKER_FLAGS_INIT "${CMAKE_MODULE_LINKER_FLAGS_INIT} -mcpu=cortex-m0 -mthumb")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} -mcpu=cortex-m0 -mthumb -T\"${CMAKE_CURRENT_LIST_DIR}/../ld/NRF51822.ld\"")
# used by the apply_target_rules function below:
set(NRF51822_SOFTDEVICE_HEX_FILE "${CMAKE_CURRENT_LIST_DIR}/../softdevice/s110_nrf51822_8.0.0_softdevice.hex")
set(NRF51822_BOOTLOADER_HEX_FILE "${CMAKE_CURRENT_LIST_DIR}/../bootloader/BLE_BOOTLOADER_RESERVED.hex")
# define a function for yotta to apply target-specific rules to build products,
# in our case we need to convert the built elf file to .hex, and add the
# pre-built softdevice:
function(yotta_apply_target_rules target_type target_name)
if(${target_type} STREQUAL "EXECUTABLE")
add_custom_command(TARGET ${target_name}
POST_BUILD
# objcopy to hex
COMMAND arm-none-eabi-objcopy -O ihex ${target_name} ${target_name}.hex
# and append the softdevice hex file
COMMAND srec_cat ${NRF51822_BOOTLOADER_HEX_FILE} -intel ${NRF51822_SOFTDEVICE_HEX_FILE} -intel ${target_name}.hex -intel -o ${target_name}-combined.hex -intel --line-length=44
COMMENT "hexifying and adding softdevice to ${target_name}"
VERBATIM
)
endif()
endfunction()

+ 2
- 2
README.md View File

@ -1,2 +1,2 @@
# yotta-target-bbc-microbit-classic-gcc
Yotta target for microbit-dal gcc builds (including softdevice for bluetooth support)
## yotta Target Description using GCC to compile for Nordic nRF51822 16KB device.

+ 458
- 0
bootloader/BLE_BOOTLOADER_RESERVED.hex View File

@ -0,0 +1,458 @@
:020000040003F7
:20C00000903C002061DC030073DC030075DC0300000000000000000000000000000000004E
:20C0200000000000000000000000000069C10300000000000000000079DC03007BDC030021
:20C040007DDC03007DDC03007DDC03007DDC03007DDC0300000000007DDC03007DDC03005C
:20C060007DDC03007DDC03007DDC03007DDC03007DDC03007DDC03007DDC03007DDC0300E0
:20C080007DDC0300B3D703007DDC03007DDC0300C9D703007DDC0300A9F303007DDC030005
:20C0A0007DDC03007DDC0300000000000000000000000000000000000000000000000000C8
:20C0C00000F002F800F040F80CA030C8083824182D18A246671EAB4654465D46AC4201D18E
:20C0E00000F032F87E460F3E0FCCB6460126334200D0FB1AA246AB46334318476C3600006D
:20C100008C360000103A02D378C878C1FAD8520701D330C830C101D504680C607047000078
:20C120000023002400250026103A01D378C1FBD8520700D330C100D50B6070471FB5C04655
:20C14000C0461FBD10B510BD03F091FA1146FFF7F5FF00F0D3F803F0A9FA03B4FFF7F2FFBD
:20C1600003BC03F0ADFA00000648704502D1EFF3098101E0EFF30881886902380078024AE9
:20C1800010470000FDFFFFFF95D40300401E00BF00BF00BF00BF00BF00BF00BF00BF00BFCD
:20C1A00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BFB4
:20C1C00000BF00BF00BFF1D170470000401E00BF00BF00BF00BF00BF00BF00BF00BF00BF94
:20C1E00000BF00BF00BFF1D170470000056885F3088846680A4AEFF305839A42304602D183
:20C20000084CA6463047074C064D0646064FF0B4034C034D024E024FF0B404480047000005
:20C2200000000000FFFFFFFF00000021F9FFFFFF70B505460C46164602E00FCC0FC5103EEE
:20C24000102EFAD2082E02D303CC03C5083E042E07D301CC01C5361F03E021782970641C63
:20C260006D1C761EF9D270BD0A4610B50146664803F012F810BD10B502F026FC10BD10B56A
:20C28000624C86B01ECC03946C460EC4002807D0684618DF002803D00022114602F0FCFFB0
:20C2A0000F20800313DF002803D00022114602F0F3FF574B48225749092003F051F8002849
:20C2C00003D00022114602F0E7FF00200490059001206946087404A860DF002803D000229D
:20C2E000114602F0D9FF4C4803F056F8002803D00022114602F0D0FF06B010BD08B5474844
:20C30000C169B12943D0002445480F2140698903884204D000221146104602F0BDFF0120B4
:20C320000007006901218902884204D000221146104602F0B1FF3B4800903B4B05220321ED
:20C34000002001F068FA002803D00022114602F0A3FF00F015FC00F058FC012500281AD0E5
:20C3600000F062FC002803D00022114602F094FF20466840FFF783FF00F038F800F07AFC6A
:20C3800000280ED00022114602F086FF09E001240021C161B8E720466840FFF770FF00F054
:20C3A00025F803252D03002C04D1A86800F03EFB002807D100F0F5FB002803D0002211467A
:20C3C00002F06AFFA86800F031FB002806D000F01CFC002802D1A86800F0EFFBBFF34F8F5B
:20C3E00013491248C860BFF34F8FFEE7094A10B548321421082002F0B9FE002803D0002235
:20C40000114602F049FF10BDEFBEADDEE8F60300C7F203002C2B002077C2030000050040F1
:20C42000001000104BDC0300EC2800200400FA0500ED00E070B5FF4C1E46A068154602294C
:20C4400002D0042916D108E0052813D1A369002B10D03246294604200BE002280AD1F648AD
:20C46000406880470320A060A369002B02D0324629469847280003D00022114602F00CFFEA
:20C4800070BD4CB5EB4E0120307005200195009400F006FB4CBD10B5E64C2078002801D0A3
:20C4A000082010BD206901F0A2FA002803D00022114602F0F1FE0F2100228904206901F0C3
:20C4C00059FA040003D00022114602F0E5FE204610BDD84910B5D7481C31416102218160B9
:20C4E000C1681C3002F007FD002803D00022114602F0D2FE10BD00B589B01822CF4902A8E4
:20C50000FFF796FE069807990090019102A80FC800F0C6FA09B000BD00B5C64987B04988BE
:20C520006A4611810321090389680691C249012050394A6803928A680492C9680591069A16
:20C540000091019202A90EC900F0AAFA002007B000BD10B588B0182102A802F0C5FF002453
:20C56000B4480294408869468881B34807995038C06806900191009003A90EC9204600F0CD
:20C580008FFA204608B010BD00B5AA4987B049886A461181A849032050394A6803928A685F
:20C5A0000492C9680591069A0091019202A90EC900F076FA0020CAE73EB5A04A6B461832CF
:20C5C00007CA07C39B4D00246C7029466C801C31684602F044FC002801D0AC603EBD03202D
:20C5E0009449000380681C3148609248944A0021103001F063F9002803D00022114602F0B2
:20C600004BFE0F2100228904286901F0B3F9002803D00022114602F03FFE01206C60A8602C
:20C6200000203EBD83498861704770B5426882481468536891685038D26804604360C260BF
:20C6400081600078440701D5840705D19C0703D18C0701D1940701D0062070BD5B189A183F
:20C66000744D0F239B02EA60994207D80321090389687723DB02591A914201D20C2070BD1C
:20C680006D4C7049216070496160C10701D06F4804E0800701D56E4800E06E48A060A86840
:20C6A000012802D00826304670BDFFF7F4FE0600FAD12168E8688847F5E770B5050004D073
:20C6C000287A800703D0102070BD0E2070BD594CA068032805D0042801D0052803D00820D4
:20C6E00070BD0520A0606868E168860060688019884204D90020C04360600C2070BDFFF70F
:20C70000CAFE0028FAD1A96832466368606902F0C2FB0028F2D1616889196160E26891425E
:20C72000ECD0092070BD10B5424C08206168002900D010BDA1680429FBD13F486178403803
:20C7400002F010FC002802D00021617010BD0521A16010BDF8B5374C0746A068032804D0AA
:20C76000042804D008252846F8BD0420A0606068002801D00820F8BDFFF78DFE0500FAD156
:20C780007868860060788119402901D90920F8BD294AB968403A1018324602F046FE6078E4
:20C7A00080196070DFE710B5224CA068052813D1E168606888420FD10620A060FFF76BFEBE
:20C7C000002808D16069E168406802F005FC002801D10721A16010BD082010BD10B51548A4
:20C7E0008168072901D0082010BD006901F0FFF8002803D00022114602F04EFD0E4880681A
:20C80000804710BD1CB506200195009400F048F91CBDF8B51C4617460D46064600F0CEF898
:20C8200000282AD00120000385421AD9291B301B234611E000280020142D0020F8F6030075
:20C8400083C40300D3C40300F7C4030019C5030089C5030053C503001A46FFF7DAFF002892
:20C860000BD13A462946304600F0B3F8002804D13A462946304600F0A1F8F8BDF0B589B05E
:20C88000684600F00BFA049800282AD001210903079A4018904226D9501A45081046049A94
:20C8A0000C46871802466800161800190890032000038068049988420DD2611908460422B6
:20C8C00000F087F800280CD121460422084600F080F8002805D1BA1B2B4630460899FFF750
:20C8E00098FF09B0F0BD049A079800F072F8F8E700B58DB004A800F0D1F9099800280DD0C7
:20C90000089800280CD008990B984018019000210998009180080290684618DF0DB000BDBA
:20C92000032000038068F1E700B58DB004A800F0B5F909980028F1D0089800280ED0089904
:20C940000B984018032100910F21029089030998019180080390684618DFDFE703200003FA
:20C960008068EFE730B591B0684600F097F90498002814D001210903079A4018904214D917
:20C98000501A43081046049A5C0082180019611803242403A468049DAC4202D20E2011B0BA
:20C9A00030BD121AFFF735FFF9E703200CAB07C3049880080F900CA818DFF0E71FB5032371
:20C9C00001909008039000930291684618DF04B010BD1FB501230190900803900093029175
:20C9E000684618DFF3E7000010B5BB480368012B02D1022900D10160100003D000221146CD
:20CA000002F04AFC10BD10B5B34C48DF002803D00022114602F040FC02F0FCFB20680228E9
:20CA200003D0032801D00428EFD110BD38B50068401C19D00024684600F058F900980168C0
:20CA4000012910D1818800290AD0C168032000038068002202F0CEFA00998988814201D16D
:20CA6000012400E00024204638BD10B504469A482021001D02F0B9F9002803D000221146CB
:20CA800002F00AFC9448002320222146001D02F01BF9002803D00022114602F0FDFB10BDA8
:20CAA0000FB4F8B5684600F021F96846818B069D0122894CFF238948002D13D0012D17D0E1
:20CAC000032D2BD00021022D37D02A46052D46D0042D4ED0062A01D104202060F8BC08BCAF
:20CAE00004B0184781800A9983600260C16010E08180099D089949190A9D4919C160A5218F
:20CB000083600160089901610999856141610B99C16122607148FFF7A8FFDFE700990B6834
:20CB200003608B888380C968C160AA21816008990161099941610A990BE0009D2E68A52EA3
:20CB400009D00660AE888680ED68C5600161836041618161DDE781800360C160F6E700F001
:20CB600085F9002803D00022114602F095FB0320B3E781800360C160009989688160C9E7E4
:20CB80000EB557480090202001900120029002F001F8002804D150496846091D02F023F8BD
:20CBA0000EBD10B5FFF708FD002805D100F02FFB0446FFF728FF204610BD70B511DF0028FB
:20CBC00003D00022114602F067FB464900200B68444C012180340A4682401A4204D0C50620
:20CBE000ED0E0A46AA402260401C2028F3D303242403A06813DF002803D00022114602F066
:20CC00004BFBA06802F0F2F970BD08B5684600F06DF800980168A52904D08068AA2801D0CE
:20CC2000002008BD012008BD10B5FFF79BFE002803D1FFF779FE00281BD0642001F0F2FDF5
:20CC4000FFF71CFE002803D00022114602F024FBFFF788FE002803D00022114602F01CFB46
:20CC6000FFF746FE040003D00022114602F014FB204610BD00B589B018221B4902A8FFF7CA
:20CC8000D7FA069807990090019102A80FC8FFF707FFFFF7B8FE002009B000BD10B50E4988
:20CCA00088B0044600232022091D684602F04FF80098206068468088A0800398E06002981D
:20CCC000A06004982061059860610698A0610798E06108B010BD000024280020202D0020FC
:20CCE000E9C9030000E100E01CF70300014901607047000000FC030008280CD004DC002833
:20CD000007D006280FD108E00B280AD00C280AD105E0012070470220704703207047042096
:20CD20007047042901D0062070470520704770B515460A46032823D0042820D1FE4C002907
:20CD400006D0E088FD49884219D0132176DF10E0284602F0A3F9002803D00022114602F0C1
:20CD60009BFAE069A8420AD101220321F44801F003F8002803D00022114602F08DFA70BD87
:20CD800001211046FFF7B8FF02460121EEE7F0B5054608790E4685B081070CD00322114655
:20CDA000284600F0E9FF002803D00022114602F073FA05B0F0BDE0490090183102F047F9C4
:20CDC000010011D1DC4CB168009AA06902F02DFB009802F097F9010006D120466946183023
:20CDE00002F09CF9010003D0284600F0AFFAE0E704200190009880080290A069039001A85E
:20CE0000FFF75BFC07000BD0092F10D0A06902F045F9010002D0284600F098FA3946E3E786
:20CE20003079616940186061A069E061C1E7307961694118616160780028BAD06089401E15
:20CE40000004000C6081B4D1284601F0E9F8002803D00022114602F01FFA20896081A8E784
:20CE600010B50022114602F017FA10BD10B5B24C01202070E088B149884208D0132176DFA3
:20CE8000002810D00022114602F006FA0BE0A078002808D074DF002803D00022114602F063
:20CEA000FBF90020A07001F034FC002803D00022114602F0F1F9002010BD70B50D6804460C
:20CEC00001209D4A2B0002F002FC0A2B3043061320575C466012FFF766FC0421FFF70CFF65
:20CEE000024604212EE00022114602F0D5F970BDFFF7BCFF002803D00022114602F0CCF975
:20CF0000FFF76CFC002808D170BDFFF7AFFF002803D00022114602F0BFF9FFF773FC70BD31
:20CF2000106188680078107170BD02201061886800780128F8D1FFF7F6FB0221FFF7DCFEA3
:20CF400002460221204600F017FF0028CBD170BD0320106170BD12692046012A06D0022A3A
:20CF600007D0032AF6D1FFF712FF70BD00F001FA70BD00F03BFA70BD507088881081508116
:20CF800070BD00205070108170BD2046516901F010F8DAE710B5044669488EB08179684646
:20CFA000817068490180342101A802F09DFA02200190002168464172847201210182059062
:20CFC000002101A801F03FFA002803D00022114602F062F90EB010BDF0B5574C8BB0A07876
:20CFE00000283AD156481821183802F07DFA2046534CC078183C00250126002837D02746F5
:20D00000483700950195029510226946F81D039502F0DEF9002822D0F81D08900997684663
:20D02000067509A804906846067708A806900420FFF7B0FF25700220207204A8E060282079
:20D0400020823F486582183873DF002803D00022114602F021F9384886700BB0F0BD05209B
:20D06000FFF798FF2670676025722582E9E70620FFF790FF257065602572E0E770B52E4CB6
:20D0800001880022E588A6B017290AD01EDC11293FD008DC022977D0102902D18088E080FB
:20D0A000A27026B070BD264C303426461836132951D01429F5D1C289638D00219A4200D162
:20D0C000314600238088E21D82DF1BE0512970D00EDC18296CD01929E3D180790028E0D16A
:20D0E000A270E068401EE0604FD0FFF775FFD8E7522976D05529D4D180790028D1D1132115
:20D10000284676DF0028CCD00022114602F0C4F8C7E78020694688803220E060012301AAFB
:20D1200006A92846AADF002803D00022114602F0B3F82078002807E030280020FFFF00001B
:20D14000582D00203015000001D1FFF745FF0020C043E080A5E70722C14910A802F065F98F
:20D160001022E11D0CA802F060F91C22314612A802F05BF90CA80A9012A8099006ABB94A76
:20D18000852128467FDFBDE70DE01822B64906A8FFF74EF80A980B990090019106A80FC87C
:20D1A000FFF77EFC7DE70021284667DFAAE700E017E0817900299AD0807A042803D00628AA
:20D1C00001D0052893D1022909D0012069460872FF208330888102A92846A8DF92E7022089
:20D1E000F4E700F08DF88DE710B5044601F0C2FA9B482146303800F09AFE2046FFF73EFFDC
:20D2000010BD10B50022114602F046F810BD30B5944D87B00024203D2C7094482C6102F091
:20D22000B3F800286AD19248FFF7FCF901F000FF002863D18A4800F059F9002801D10120A0
:20D24000E87011206946087207228AA102A87CDF002803D00022114602F01EF800940C2186
:20D2600068460194018018214180FF2184809131C1807ADF002803D00022114602F00CF806
:20D2800004206946009408807C4801907C4802907348303800F00BFE002803D00022114664
:20D2A00001F0FAFF1C21684602F01EF9754801900120800302900094032168460173C481ED
:20D2C0000474714806900594684601F0FEF9002803D00022114601F0DFFF6249E1220878E7
:20D2E0004008400010400C30DF22104008700720487010208870FFF76FFE002007B030BD23
:20D3000070B5584C614D203CE088A84201D1082070BDE178002914D051490123082234310E
:20D32000A9DF0028F4D12A460C21E088A7DF5849884204D0082802D0891C8842E8D1002064
:20D3400070BD00231A461946A9DF70BD10B50A46044603211046FFF7CFFC0246032120469D
:20D3600000F00AFD002803D00022114601F094FF10BD30B5054687B00020009001900290B7
:20D38000039038486A46203800791070364A0C3A10689268049068460692059008790C281D
:20D3A00006D003221BE00022114601F075FFA5E78C68204600F049F80190201D00F045F887
:20D3C00002902046083000F040F8039004A8FFF72CF9002892D00121FFF78EFC0246012105
:20D3E000284600F0C9FC0028DDD187E7FEB50446087982070ED08207920F04239B1A0022B9
:20D40000154604E08E683554401CC0B2521C9A42F8D30871012000908868029008798008B6
:20D4200001906846FFF796F900280DD00221FFF763FC02460221204600F09EFC002803D055
:20D440000022114601F028FFFEBD10B5044602F04DF80002E178000A0906084310BD0000AE
:20D46000882D00205028002040F70300E9D103002FCD03004466755461726700BBCE030010
:20D4800003D20300CD0C000061CE0300FFFF00000230000010B50C46002802D001200860DF
:20D4A00010BD2168002911D01C48421A814212D03C2A0DD23C303C3101220B780370134617
:20D4C000491E401E521C3C2BF7D904E00E200BE03C2201F0AAFF00223C21104801F08AFD9E
:20D4E0000E49891E08800020206010BD70B5054600223C21094801F07DFD084CA41E2188CF
:20D50000884201D00B2070BD3C220449284601F08CFF2088401C2080002070BD823F0020B1
:20D520008307FF22DB0E9A408907090E994000280BDA0007000F08388308FA489B001B18FF
:20D54000D86990430843D86170478308F6489B001B181868904308431860704770B50124CE
:20D56000F24960040860F24940108860F04940398860F04D6C602F20FEF708FEAC60EE4DFD
:20D5800000242F206C61FEF701FE2C7170BDF0B5E94F2821BC6841430D1939694A1C09D0B8
:20D5A00028224A431619AB68B268934204D8D21AB26069623861F0BD0A4602E00A46796A13
:20D5C0009B1B4E1C0BD028264E433719BE689E42F4D328264E433619B768FF1AB760AB60CC
:20D5E000696228214A4311194862F0BD70B5D24C2269A5681346114606E0814207D00A46AE
:20D60000282671434919496A4E1CF6D170BD002EFCD08A420CD1282043435819406A206188
:20D62000401C05D1C34B01209860002363616071282041434819282381685A43406A5219C6
:20D640005062421CE2D028225043401982685118816070BDF8B5B84C2569681C35D0B748AA
:20D66000002640686169401A07023F0A19E028204543A0682A189068B84214D8A3693F1A10
:20D680008619556A002B09D0116AD0699847002807D00022114601F0FFFD02E0D169106A9A
:20D6A0008847681CE3D1A178E078814206D1401CC0B2E070022801D10020E0709E490006E1
:20D6C000800D1C310E5000F0BAF9F8BDF8B50446994800270169009146785CE09648F100F7
:20D6E000C2688D1851E0601C07D0934A28209268604321468018446A24E028781821414307
:20D700006A68401CC0B252182870A978884200D12F70894B516828209B684843C018136856
:20D72000012B34D1037E002B31D19368C360D368036113694361526902627F4A5279002A50
:20D7400000D0C7607C4BC2685B6996469C46D31A1A027B4B120A9A4202D20369D21808E086
:20D76000724663469A1A12020369120A934202D99A1A826000E08760C760012207610276C1
:20D78000921E42620846FFF702FF601CABD1287869788842A7D13046761EF6B200289DD1ED
:20D7A000654801690098814201D00120F8BD0020F8BD64490020086048608860C8606149E4
:20D7C00040390860486045E7FEB50020C0435A4D02906869019068462E6900F035F9074673
:20D7E00000F04FF90446002F08D002AA0199009800F08FF90298FFF769FF06E00298FFF7DC
:20D8000065FF002801D1002C02D0304600F0AAF900206871FEBDFFB59807002481B01E46E3
:20D8200015460F4600280BD1002E09D0FFF796FE41490A9888610F70324600208E6008E0A1
:20D84000072005B0F0BD28234343D4509B181C76401CB842F7DB28204743BB19032048705C
:20D860000F461846CB6019461830002218232E465E43D3005B181C705C709D705860301806
:20D88000521C032AF5DB0020C0433861BC70FC7001242D482405046003211420FFF740FE16
:20D8A000224880380460254C0198A06003211120FFF736FE606878610020C2E770B51E4C60
:20D8C000A568002D06D0002A06D0002804D00023247809E0082070BD072070BD28265E43FC
:20D8E000AE59002E04D05B1CA342F7DB042070BD282401265C432E516419E261616003602B
:20D90000002070BD07494868C005C00D2CD010381CD50207120F083A920892005118C969C0
:20D9200019E0000000ED00E000E400E080E100E04013014000100140582800200015014041
:20D94000FFFF7F004011014080E200E08108B14A8900891809688007C00EC1400806800F64
:20D96000012803D0032803D0022070470020704701207047FEB50446A748174682680D469F
:20D98000002A0CD001788C4201D2052D01D20720FEBD2146282359435358012B01D0082062
:20D9A000FEBD8818406801281DD00026FFF7AAFFC00099490190C9684018694600F018F91D
:20D9C000002812D0012144600160944949680830E2C091490198C96841180098487000F071
:20D9E0002EF80020FEBD2E46E0E70420FEBDF8B5894D0446A868002809D029788C4201D3EB
:20DA00000720F8BD282161434058012801D00820F8BDFFF777FFC600E8686946301800F065
:20DA2000E7F8002809D0022112C0E86831180098487000F004F80020F8BD0420F8BD01206D
:20DA4000774900050860704710B5734900238A78CC78A24212D0521CD2B28A70022A00D149
:20DA60008B708A786C4B92001C339A580260486910180002000A4861012010BD03600020BE
:20DA800010BDF8B5644801690091457833E06248E900C0680E1834782AE01820604371684A
:20DAA000641C0818B178E4B2A14200D100240168022902D003291BD113E0574A406828212C
:20DAC000926841438F18397E002911D0FFF78EFD002038760CE028277843C0180276406A21
:20DAE00003E04D4900228B680869471CF3D108617078A042D1D128466D1EEDB20028C6D1D4
:20DB0000454801690098814201D00120F8BD0020F8BDF7B5404C0025A76823691EE02821F8
:20DB20005943C9198E68864202D9301A886017E0801B751900268E600E764E699C464B6A96
:20DB4000B646002E0AD0019E76193602360ACE6076460E6116684E6261461160591CDED158
:20DB60002361FEBDF8B52C4801694A1C3DD028225143826889188E6828494C6847690079BB
:20DB8000E11B0D022D0AED1C002815D10120254A00045060234A403A5060214940008031F6
:20DBA0000860214908602149012008602F20FEF7EDFA194901200871B54200D23546E819CC
:20DBC00000021649000A4031086014494968001B091B0902090A0002C91C000A814203D906
:20DBE00001200F4940040860F8BDFFF7B7FCF8BD42788378521C934200D1002203789342B2
:20DC000001D1002070470A6041684078182250430818704700E400E0582800200015014032
:20DC200000E200E04013014000E100E00010014010B50446082904D000221146104601F0A8
:20DC40002BFB21686068884710BD1CB501910090024A0821684601F09DFA1CBD31DC03002A
:20DC60000A48026803210A4302600948804709480047FEE7FEE7FEE7FEE7FEE7FEE7000007
:20DC800005480649064A074B7047000024050040A9DC0300C1C0030090300020903C00204E
:20DCA0009034002090340020F8B500F035F82B4E002804D02A4870602A49F01388612A484A
:20DCC0000124018CC9B201290DD1818C09070AD1018D0906090F042905D1808D0006000F3D
:20DCE00001D1224884600027B461214D6F60A8058460686800280ED1C820FEF757FA1D4890
:20DD00007F1C8742F5D30020B06101208007846068680028FCD0F8BD1348018CC9B2012914
:20DD200017D1818C090714D1018D09060A0F03D1828D1206120F0ED0090F012903D1828D24
:20DD40001206120F07D0032903D1808D0006000F01D00020704701207047000000050040CC
:20DD6000DFFF07C0006C0040C00F00F000060040000100408813000030B585B0002822D03D
:20DD80000388FE4CA34220D0FD4B1B78002B1CD0FB4B10255B1C1D705970002401259A704B
:20DDA000032269460A820094019402940394028A0A808D708C8004A9029103930088694681
:20DDC000A6DF05B030BD0E20FBE70820F9E7F0B58BB00446022768460773002609968784B9
:20DDE000C68408A80A900D46A18A208809AAA5DF002804D0E16A00291AD0884718E0684663
:20DE0000008CC007C00F13D068460682208803A9A8DF002813D1A97E28461B3001220B00D2
:20DE200001F055FC09430F1B202224263E284300FF20FE3069460882208803A9A8DF0BB0D9
:20DE4000F0BD00960AE0062219E069460A71029022E0204690470020F1E700922B8B022B0C
:20DE6000F3D2F0E700971DE003201AE0042018E0052016E0298B032905D2032208212046B3
:20DE8000FFF77AFFDBE741780278080210436946888003D006200090A26ADAE70720FAE7AC
:20DEA000092000906946A26AD3E70322E7E730B585B00D46040038D0002D36D0686800289D
:20DEC00033D00020C043AF4B20800FCB049301AB07C3AD4869460880891C01A863DF0028B7
:20DEE00022D1221D69460120A0DF00281CD168468078A071204600F0CEF8002814D1204646
:20DF000000F055F900280FD12946204600F002F9002809D16868A062A868002800D0E062DD
:20DF200097490120087000204BE70E2049E73EB5002828D0002926D0826A002A23D00A88EB
:20DF4000102A21D0112A30D0502A1FD0512A1AD104460846891D0A78022A14D14A88238A3C
:20DF60009A4210D1807A04280DD006280BD0052809D0891C2046FFF72AFF002803D0E16A62
:20DF8000002900D088473EBD898810E0CA8803899A42F8D1082200928A7F6B461A712031E8
:20DFA0000291826A694690473EBD0021C94301803EBDF0B585B00A4605002DD028886F4924
:20DFC00088422BD06E480078002827D06C4C1020641C2070072060700127A770032168462F
:20DFE00001820026E11C104600F04CF801466846008A0918684601820096019602960396C2
:20E00000298A01808770868004A80394029028886946A6DF05B0F0BD0E20FBE70820F9E79C
:20E02000F0B585B00A46050028D028885349884226D053480078002822D0514C1120641C32
:20E0400020700127684607820026611C104600F019F801466846008A091868460182009670
:20E06000019602960396298A01808770868004A80394029028886946A6DFCBE70E20C9E75E
:20E080000820C7E70870020A4A70020C8A70000EC8700420704730B58FB005461C216846E9
:20E0A00001F022FA694608780421084369460870002401940394049405940694A87908A9A0
:20E0C000887031486946801C0884601C00070794000F0C77103048778A7FF9200240921C37
:20E0E000E7200240012002438A77142109A801F0FBF908A8099007A80A9069468C8514201F
:20E10000CC8508860D942B46A888083309AAA2DF0FB030BDF0B58FB00F4605461C21684654
:20E1200001F0E2F968460178022631430170002401940394049405940694A97908A8817001
:20E1400011496846091D0184601C0107090F10316846079401770020014668464177817FA1
:20E16000F9200140891CE72001400120014368468177142109A801F0B7F907E0FFFF0000E1
:20E180008028002058F703003015000008A8099007A80A9068468685C48506860D972B46EB
:20E1A000A888203309AA6946A2DF0FB0F0BD30B58FB005461C21684601F096F96946087884
:20E1C000082108431022104369460870002401940394049405940694A87908A988701448DE
:20E1E00069460884601C00070794000F0C7710304877887FF9210840801CF721084010437D
:20E200000121084369468877142109A801F06CF908A8099007A80A9069468C851720CC85CD
:20E2200008860D942B46A888103309AAA2DF6FE731150000FFB583B0074600200C9C864633
:20E24000267805463AE07868A90041180A88684682804988C1800022694601A865DF00289F
:20E2600010D1684601780598814226D17046002801D0002200E002222078891841181F2990
:20E2800002D90C2007B0F0BD7146002908D1401CC0B2411C069B049A21701A540120864604
:20E2A000217806980A18694601A865DF0028E9D1694620780978401820706D1C3888A842A4
:20E2C000C1DC7046002804D020780699801B401E88550020D6E7F8B51546069C1E460746AA
:20E2E00002220094FFF7A6FF002806D133461022294638460094FFF79DFFF8BDF7B582B07B
:20E3000000260546167000681446002805D02846039900F0CAF8060008D1687900281ED0B5
:20E320002078039F001D1F2802D90C2005B0F0BD684679DF0028F9D121780322481C20702C
:20E340007A5421781922481C20707A542078C1196846008800F0A4F8217840182070A87983
:20E360000223002810D02078039A411C2170135420780399471C012227700A542078AA797C
:20E38000471C039927700A54A868002815D00021415620788C460246C01C03991F28C4D8A7
:20E3A000501C20708B5422780A23501C20708B5420786246431C23700A54A889002809D01E
:20E3C00028460094062202210C30039BFFF783FF0600ABD1A88A002809D0284600940722BE
:20E3E00003211430039BFFF776FF06009ED1A88B002809D028460094152214211C30039BAB
:20E40000FFF769FF060091D1686A002805D02246039900F07FF8060088D1A86A002805D08E
:20E420002246039900F0B5F8060084D13020405D002806D022462846039900F0DCF80600B9
:20E44000C7D1304672E770B50C4692B000216A46117007251171002809D0817949070CD570
:20E4600002A9FFF74BFF002808D102AE00E00026002C0ED0A079002802D0284612B070BD80
:20E4800001AA0AA92046FFF739FF0028F6D10AAA00E00022684603790178304672DFEDE7A7
:20E4A0000870000A487002207047F8B514780746A01C15460E461F2803D83879801C1F28A2
:20E4C00001D90C20F8BD1D20001B80B26946864608803019801C7DDF0028F3D138680228FD
:20E4E00005D168460088704501D8092107E038790821002801D0704501D968460088421C7B
:20E500003255641CE2B2B1542978801C081828700020F8BDF8B50D4611780646881D1446BD
:20E520001F2801D90C20F8BD33880720062BFAD31927FF01BB4202D94D4A9342F3D17288B7
:20E54000062AF0D3BA4202D9494FBA42EBD1484FBB4203D0BA4201D09342E4D8481C052251
:20E5600020706A5420781222411C21702A54207841193088FFF794FF21784018C0B22070EF
:20E5800041197088FFF78CFF2178401820700020F8BD70B5054600790E46801C1446C0B2AD
:20E5A0001178821C8A181F2A01D90C2070BD0A46491C401C2170B0542078FF22411C2170C9
:20E5C0003254207881192888FFF76AFF21784018C0B22070AA88002A09D0A968002908D03A
:20E5E000801900F022FF2078297940182070002070BD072070BDF7B582B002981446C06AB2
:20E600000F46002832D0029800252030009028E00298C16A0C2068430E18217830794A1C6A
:20E62000C01C2270785421781622481C20707A542078C1193088FFF733FF21784018C0B258
:20E640002070B288002A09D0B16800290ED0C01900F0EBFE20783179401820706D1C0098D0
:20E66000EDB2007CA842D3D800205FE607205DE6FFFF000038B56749674A488890420FD04E
:20E680004A78664C521CD2B24A70237B934208D3083175DF002803D0A169002900D08847B2
:20E6A00038BD00254D70217C002907D03B2176DF002803D0A169002900D088476169002975
:20E6C000EED068460095884738BD70B5054601461C225248FDF7ACFD4E4C00262670296862
:20E6E000002907D00822A01800F09FFE204608307ADF02E0474808307BDF002808D1401E52
:20E70000608044486670464A0021001DFFF7D6F870BD10B53F484068FFF769F910BDF8B532
:20E720003C48103000F069F800263A4D3B4C002806D06169002919D001200090684614E063
:20E740002878002804D0616900290FD00096F5E7687800280CD0A16800226868FFF70AF901
:20E76000002803D0A169002900D088472E70F8BD6168F1E7F8B5294C02880027254DE68924
:20E78000102A18D029464968112A21D0122A2DD0502A0FD1801D0288B2420BD1028B022AC8
:20E7A00008D1C27E837E10021843C007C00F13D0FFF7B5FFF8BD818869800146154808223A
:20E7C0001631103000F031FE6F70002EF0D0F8BD0020C04368806F700846FFF708F90028BA
:20E7E000F5D0A1690029F2D08847F8BD811D09480822103000F019FEDAE74188054808306C
:20E800000288914204D34088814201D8012070470020704788280020FFFF0000C42D0020D2
:20E8200075E6030031B5054C04E0401E00902046FDF7CCFC00980028F7D138BDE7030000E8
:20E8400018225043FE4A00218018017181604161012281610261C1607047FFB581B0F94C8B
:20E86000049B039A054626691A4303200092002E03D1002A0ED0012222612769039A01266C
:20E88000360792003B0000F022FF072707162940526127000222EFE77069326992B250438A
:20E8A000326933691204920C9BB2594329DF002812D102210FE0084628DF00280CD1039969
:20E8C000002901D0032106E00499002916D12978042946D017E0216105B0F0BD7069326954
:20E8E00092B25043326993B24B4301461846039A29DF0028F0D10499002901D00421EAE713
:20E900002978042920D00521E5E773693069366980B2434368681B189B18B6B24E43301884
:20E9200080181946049A29DF0028E9D0D4E7306980B24843696880188A08696929DF00284B
:20E94000CAD1009900290CD00621C4E77069316989B24843316989B200F0D9FD28DF0028A9
:20E96000BAD10721B7E7F8B5B54918230A780F205A435418241DB34922782669CF68022ADD
:20E980001BD001252D07042A2AD0052A5BD1286981B2304600F0BBFD0146A36828699A1937
:20E9A00080B24843101A820860681818861928694B1C80B25843801B34E0B802626861698D
:20E9C000121A0918A3683018181801239B029A4202D2920829DF31E0FF22013229DF2DE0DA
:20E9E000E268974914205043F4314018001D0BC8B04203D160685943814218D0022A16D0D2
:20EA0000286981B2304600F082FD0146286980B24843301A820828694B1C80B25843636854
:20EA20009B19C01A83082046FFF717FF06E0286981B2304600F06BFDC01928DF002802D1F8
:20EA40007F4901228A70F8BDF8B57D4C069E65780A2D1DD027787D19EDB20A2D01D30A3DDB
:20EA6000EDB218277D432D192871AA6103C9EE60AB6069612861A1780020002904D1FFF769
:20EA800072FF112800D100206178491C6170F8BD0420F8BD38B50246694818230178594308
:20EAA000081803690179022B0AD014246343644CF434E4588368009383691030A04738BDD1
:20EAC000604B14331C68F5E7F8B55D4B9978012914D100255B499D700A69082A05D00228F5
:20EAE0000FD003280AD10D2006E0022807D00D7000F025FA002801D0FFF7CCFFF8BD0D61B4
:20EB0000F6E74F48182403784E496343CC681818641C001DCC600378022B05D14668A10291
:20EB2000B14201D3012700E00027052B01D1072A03D00021042B02D003E00121FAE7072AA0
:20EB400003D00026042B02D007E00126FAE74068A302834201D3002A1AD0002031430143FA
:20EB60003943C5D0374E28463561FFF793FF344C2078FFF765FEF5606078401E607020780F
:20EB8000401CC0B220700A28B2D30A382070AFE70120E3E770B500252A4C2948E560256111
:20EBA0000570457085702E463046FFF749FE761C0A2EF9D3012212076560516928461269D5
:20EBC000491E92B25143E560A1601D49F4310D608D600D61CD601B4914310D6088800121F0
:20EBE0002170206170BDF8B5164A044610780E46002830D0002C30D0002E2ED02068002873
:20EC00002BD0012000076768016989B28F4228D8102F26D3A168002923D0956879434369CA
:20EC20004A19006980B243439A421AD801200007006980B2814212D901200007006903E09D
:20EC4000E02D0020A028002080B2394600F05FFC002906D103E00820F8BD0E20F8BDB80741
:20EC600001D00720F8BDBD49486801281CD00F461421BB4A21C641438E1875602368535079
:20EC80006168B160A168F160A268616800235143012212075B1C14699BB2A4B28C4205D23E
:20ECA0001469A4B2091B02E00420F8BD00211469A4B265191469A4B28C42EBD9BD60401C52
:20ECC000336178600020F8BDF8B50446A3481E46007815460F46002807D0002F07D0002C54
:20ECE00005D02068002817D103E00820F8BD0E20F8BD9B48016800290ED0C26881684068F6
:20ED00004A4310186268904206D9002D04D0A94202D3A819884201D90720F8BD384600F053
:20ED200008F9002811D0304600F003F900280CD0606800F0FEF8002807D02B463A4621465E
:20ED400002200096FFF780FEF8BD1020F8BDFFB5824881B000781F4616460D46002808D0B2
:20ED6000002D08D00198002805D02868002817D103E00820B0E50E20AEE5794C2068002882
:20ED80000ED0E168A0686268414389186A68914206D9002E04D0B04202D3F119814201D961
:20EDA000072099E5019800F0C4F800281BD0384600F0BFF8002816D0686800F0BAF8002889
:20EDC00011D068683246C119019800F02EFB00962868142148432458002203212846019BCC
:20EDE000A047002078E5102076E5F8B505465B480F460078002805D0002D05D02868002805
:20EE000021D103E00820F8BD0E20F8BD544C00262068002817D0A168E06848436168411802
:20EE2000686881420FD900F084F800280DD0296814225143091968684A688968801A00F06C
:20EE400066FB002903D00720F8BD1020F8BD3B460022294604200096FFF7F6FDF8BD3F4AA1
:20EE60001278002A0DD000280DD000290BD00268002A08D0394A14321368002B05D0042024
:20EE80007047082070470E20704702230B600068106000207047F8B5044630481E4600786D
:20EEA00017460D46002807D0002D07D0002C05D0206802281BD103E00820F8BD0E20F8BD5D
:20EEC000264814300068002811D0084600F031F800280ED0304600F02CF8002809D03B4696
:20EEE0002A46214602200096FFF7AEFDF8BD0720F8BD1020F8BD08B5184A1278002A05D0C4
:20EF0000002805D00268022A11D103E0082008BD0E2008BD114A14321268002A07D00B464C
:20EF20000022014604200092FFF78EFD08BD072008BD800701D00020704701207047084928
:20EF400010B5F43949780020002906D0FFF70BFD002802D0112800D1002010BDA028002008
:20EF6000D42E002070B500250C290ED304464318008941000919581A0A38C2B21748022ACB
:20EF8000027002D30A318B4201D2092070BD144800F04BFA134914480A88824202D02388DD
:20EFA000934217D14988814202D06088884211D10D4A0323521E20891B03A8420AD96900B0
:20EFC00009194989914203D09E896D1CB142F4D1002070BD0B2070BD00207047BC280020AF
:20EFE000E82E002080100010FFFF000010B5FDF7FDF810BD10B50446002A02D010880022FD
:20F0000010E00A48FBE7030A00020343A05C584003061B0F43401803584083B21806C00C5B
:20F020005840521C8A42EED310BD0000FFFF00004B48002101704C484A4A02608160C160C1
:20F04000016108224161426081610846704710B500291DD000220A60434A5368002B1BD034
:20F06000202817D85B1E5360D0682423401CD060106914684343E3180B6001238340916960
:20F08000401C19434007400F91611061002010BD0E2010BD0C2010BD042010BDF0B5324ACC
:20F0A0000646916800292BD057691020791A4907490F14680B4624254D436519B54206D1CA
:20F0C000012495698C4065400020956104E0491C4907490F8F42EED1491C4E07760F9569C8
:20F0E00001210C469C402B4623420AD19368002B07D05B1E936053685B1C53603346F0E771
:20F100000420F0BD184A2423117C1268491E4907490F5943203150500020704770B50028AE
:20F120001AD0002918D0104AD368002B16D05B1ED360936824265B1C9360536915681C4638
:20F140007343EE1820330660E858641C08606007400F5061002070BD0E2070BD042070BDB2
:20F16000BD280020F42E00201430002030B5CB0008339DB293070024002B01D0072030BDDC
:20F180003B4B9A605219DA605C701C7058809980002030BDF7B5364C0E466088814237D8B8
:20F1A000344F00F069F822786078A188884201DA401C00E00020C0B2904202D100F062F87E
:20F1C00024E065786078884201DA401C00E00020607000F057F8BD4218D0A068EF000299ED
:20F1E000C151009900290CD0002E0AD0608832464543E068281800F018F9A0683818868088
:20F2000002E00021381881800020FEBD0420FEBD0920FEBD0EB504E068468188029A00986A
:20F22000904702AA01A9684600F003F80028F3D00EBD70B50E4B05241D785E78AE4215D06B
:20F240001D781C789E88B44201DA641C00E000241C705C88DE686C43A41904609B68E80099
:20F26000C418A4880C80185800241060204670BDC4280020FFFF000072B606480168491C15
:20F280000160704703490868401E086000D162B670470000D4280020BFF34F8F03490248F2
:20F2A000C860BFF34F8FFEE70400FA0500ED00E010B5002904D0002211461046FFF7ECFF6F
:20F2C00000F010F810BD10B50021024A0846FFF761FF10BDB1F2030010B508461146FCF7C3
:20F2E000C3FF10BDF8B5384C2078002837D02069002807D00026E068002805D00025002E41
:20F3000004D013E00126F6E70125F8E7684651DF052806D0002806D000221146FFF7BCFF14
:20F3200004E0012602E0216900988847002D12D1608869460880A06861DF052806D000284D
:20F3400006D000221146FFF7A7FF04E0012502E0E168A0688847002ED8D0002DCFD0F8BD5F
:20F3600070B5002901D08C0701D0072070BD164C0125A16062801549636010DF0028F5D14D
:20F38000257016202EDF70BD002803D00E49C860002070470E207047002803D00A4908617B
:20F3A000002070470E20704710B507484068002807D08047002803D000221146FFF76CFF3A
:20F3C00010BDFFF78FFF10BDD8280020D9F20300034610B50B439B070FD1042A0DD308C865
:20F3E00010C9121FA342F8D018BA21BA884201D9012010BD0020C04310BD002A03D0D30750
:20F4000003D0521C07E0002010BD03780C78401C491C1B1B07D103780C78401C491C1B1B13
:20F4200001D1921EF1D1184610BDF8B5042A2CD3830712D00B78491C0370401C521E830766
:20F440000BD00B78491C0370401C521E830704D00B78491C0370401C521E8B079B0F05D014
:20F46000C91ADF002023DE1B08C90AE0FCF7E0FEF8BD1D4608C9FD401C46B4402C4310C047
:20F48000121F042AF5D2F308C91A521EF0D40B78491C0370401C521EEAD40B78491C0370F4
:20F4A000401C521EE4D409780170F8BD01E004C0091F0429FBD28B0701D50280801CC90704
:20F4C00000D00270704700290BD0C30702D00270401C491E022904D3830702D50280801CDD
:20F4E000891EE3E70022EEE70022DFE70378C2781946437812061B0219438378C0781B040A
:20F50000194311430902090A000608437047002203098B422CD3030A8B4211D300239C4658
:20F520004EE003460B433CD4002243088B4231D303098B421CD3030A8B4201D394463FE049
:20F54000C3098B4201D3CB01C01A524183098B4201D38B01C01A524143098B4201D34B01A6
:20F56000C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A524183088B42FC
:20F5800001D38B00C01A524143088B4201D34B00C01A5241411A00D20146524110467047E7
:20F5A0005DE0CA0F00D04942031000D34042534000229C4603098B422DD3030A8B4212D343
:20F5C000FC22890112BA030A8B420CD3890192118B4208D3890192118B4204D389013AD0C4
:20F5E000921100E08909C3098B4201D3CB01C01A524183098B4201D38B01C01A52414309DE
:20F600008B4201D34B01C01A524103098B4201D30B01C01A5241C3088B4201D3CB00C01A59
:20F62000524183088B4201D38B00C01A5241D9D243088B4201D34B00C01A5241411A00D297
:20F640000146634652415B10104601D34042002B00D54942704763465B1000D3404201B5AF
:20F660000020C046C04602BD704770477047754600F022F8AE46050069465346C008C000EC
:20F68000854618B020B5FEF7FBFA60BC00274908B6460026C0C5C0C5C0C5C0C5C0C5C0C544
:20F6A000C0C5C0C5403D49008D4670470446C046C0462046FCF751FD004870473030002074
:20F6C00001491820ABBEFEE726000200704730B47446641E2578641CAB4200D21D46635D5C
:20F6E0005B00E31830BC184702000000000000000000000000000000040000000000000063
:20F700000000000000000000000000000000000035C40300000000000000000002000000EB
:20F720000000000000000000000000000000000000000000030000000000000000000000C6
:20F7400005000000000000000000000000000000000000000000000023D1BCEA5F782315FB
:20F76000DEEF12120000000088F7030000280020EC00000004C1030074F80300EC28002077
:20F78000A413000020C10300000000000000000000000000000000000000000000000000CE
:20F7A000000000000000000000000000000000000000000000000000000000000000FFFF4B
:20F7C0000000000032000000000000000000000000000000000000000000000000000000F7
:20F7E000000000000000000000000000000000000000000000000000000000000000000009
:20F80000000000000024F400000000000000000000000000000000000000000000000000D0
:20F820000000000000000000000000000000000000000000000000000000000000000000C8
:20F840000000000000000000000000000000000000000000000000000000000000000000A8
:14F86000000000000000000000000000000000000000000094
:20FC00000100000000000000FE0000000000000000000000000000000000000000000000E5
:020000041000EA
:0410140000C0030015
:040000050003C0C173
:00000001FF

+ 151
- 0
ld/NRF51822.ld View File

@ -0,0 +1,151 @@
/* Linker script to configure memory regions. */
MEMORY
{
FLASH (rx) : ORIGIN = 0x00018000, LENGTH = 0x28000
RAM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x2000
}
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
ENTRY(Reset_Handler)
SECTIONS
{
.text :
{
KEEP(*(.Vectors))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
*(.rodata*)
KEEP(*(.eh_frame*))
} > FLASH
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > FLASH
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > FLASH
__exidx_end = .;
__etext = .;
.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)
. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);
*(.jcr)
. = ALIGN(4);
/* All data end */
__data_end__ = .;
} > RAM
.bss :
{
. = ALIGN(4);
__bss_start__ = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
.heap (COPY):
{
__end__ = .;
end = __end__;
*(.heap*)
__HeapLimit = .;
} > RAM
/* .stack_dummy section doesn't contains any symbols. It is only
* used for linker to calculate size of stack sections, and assign
* values to stack symbols later */
.stack_dummy (COPY):
{
*(.stack*)
} > RAM
/* Set stack top to end of RAM, and stack limit move down by
* size of stack_dummy section */
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
}

+ 5649
- 0
softdevice/s110_nrf51822_8.0.0_softdevice.hex
File diff suppressed because it is too large
View File


+ 46
- 0
target.json View File

@ -0,0 +1,46 @@
{
"name": "bbc-microbit-classic-gcc",
"version": "0.2.3",
"description": "Official mbed build target for the BBC micro:bit, using the gcc toolchain.",
"licenses": [
{
"url": "https://spdx.org/licenses/Apache-2.0",
"type": "Apache-2.0"
}
],
"inherits": {
"mbed-gcc": "https://github.com/lancaster-university/target-mbed-gcc.git#v0.1.3"
},
"keywords": [
"mbed-target:nrf51822",
"mbed-official",
"nrf51822",
"nordic",
"gcc"
],
"config": {},
"similarTo": [
"nrf51822",
"nrf",
"nordic",
"cortex-m0",
"armv6-m",
"mbed-classic",
"microbit"
],
"toolchain": "CMake/toolchain.cmake",
"scripts": {
"debug": [
"valinor",
"--target",
"NRF51822",
"$program"
],
"test": [
"mbed_test_wrapper",
"--target",
"NRF51822",
"$program"
]
}
}

Loading…
Cancel
Save