增加can烧写固件,增加指示灯显示canid

This commit is contained in:
shen 2026-04-07 17:44:06 +08:00
parent f175b617cd
commit bf731467e4
16 changed files with 910 additions and 125 deletions

View File

@ -70,7 +70,7 @@
/** \brief Enable/disable CAN transport layer. */
#define BOOT_COM_CAN_ENABLE (1)
/** \brief Configure the desired CAN baudrate. */
#define BOOT_COM_CAN_BAUDRATE (500000)
#define BOOT_COM_CAN_BAUDRATE (1000000)
/** \brief Configure CAN message ID target->host. */
#define BOOT_COM_CAN_TX_MSG_ID (0x7E1 /*| 0x80000000*/)
/** \brief Configure CAN message ID host->target. */
@ -126,7 +126,7 @@
/** \brief Configure the size of the default memory device (typically flash EEPROM). */
#define BOOT_NVM_SIZE_KB (1024)
/** \brief Enable/disable hooks functions to override the user program checksum handling. */
#define BOOT_NVM_CHECKSUM_HOOKS_ENABLE (0)
#define BOOT_NVM_CHECKSUM_HOOKS_ENABLE (1)
/****************************************************************************************

View File

@ -55,7 +55,7 @@ blt_bool CpuUserProgramStartHook(void)
* board. to force the bootloader to stay active after reset, keep it pressed during
* reset for at least BOOT_BACKDOOR_ENTRY_TIMEOUT_MS.
*/
if (LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_13) == 0)
if (LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_9) == 0)
{
/* pushbutton pressed, so do not start the user program and keep the
* bootloader active instead.
@ -87,7 +87,7 @@ void CopInitHook(void)
/* this function is called upon initialization. might as well use it to initialize
* the LED driver. It is kind of a visual watchdog anyways.
*/
LedBlinkInit(1000);
LedBlinkInit(500);
} /*** end of CopInitHook ***/

View File

@ -33,8 +33,10 @@
#include "led.h" /* module header */
#include "stm32l4xx.h" /* STM32 CPU and HAL header */
#include "stm32l4xx_ll_gpio.h" /* STM32 LL GPIO header */
#include "flash_config.h" /* flash configuration header */
#include "timer.h" /* timer driver header */
extern FlashConfig_t *g_flashConfig;
/****************************************************************************************
* Local data declarations
****************************************************************************************/
@ -50,8 +52,28 @@ static blt_int16u ledBlinkIntervalMs;
****************************************************************************************/
void LedBlinkInit(blt_int16u interval_ms)
{
blt_bool ledOn = BLT_FALSE;
int i = 0;
/* store the interval time between LED toggles */
ledBlinkIntervalMs = interval_ms;
while(i < g_flashConfig->can_id)
{
/* toggle the LED state */
if (ledOn == BLT_FALSE)
{
ledOn = BLT_TRUE;
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_15);
blt_delay(200);
}
else
{
ledOn = BLT_FALSE;
LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_15);
blt_delay(300);
i++;
}
}
} /*** end of LedBlinkInit ***/

View File

@ -179,15 +179,15 @@ void HAL_MspInit(void)
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_15);
LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_15);
/* Configure GPIO pin for (optional) backdoor entry input. */
GPIO_InitStruct.Pin = LL_GPIO_PIN_13;
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
// GPIO_InitStruct.Pin = LL_GPIO_PIN_13;
// GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
// LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
#if (BOOT_COM_RS232_ENABLE > 0)
/* UART TX and RX GPIO pin configuration. */

View File

@ -30,7 +30,10 @@
* Include files
****************************************************************************************/
#include "boot.h" /* bootloader generic header */
#include "flash_config.h" /* flash configuration header */
#include <stdio.h>
FlashConfig_t *g_flashConfig = NULL;
/************************************************************************************//**
** \brief Initializes the bootloader core.
@ -41,12 +44,13 @@ void BootInit(void)
{
/* initialize the CPU */
CpuInit();
/* initialize the watchdog */
CopInit();
/* initialize the millisecond timer */
TimerInit();
/* initialize the non-volatile memory driver */
NvmInit();
g_flashConfig = Flash_ReadConfig();
/* initialize the watchdog */
CopInit();
#if (BOOT_FILE_SYS_ENABLE > 0)
/* initialize the file system module */
FileInit();

View File

@ -34,8 +34,9 @@
#if (BOOT_COM_CAN_ENABLE > 0)
#include "stm32l4xx.h" /* STM32 CPU and HAL header */
#include "stm32l4xx_ll_rcc.h" /* STM32 LL RCC header */
#include "flash_config.h" /* flash configuration header */
extern FlashConfig_t *g_flashConfig;
/****************************************************************************************
* Macro definitions
****************************************************************************************/
@ -163,7 +164,7 @@ void CanInit(void)
blt_int16u prescaler = 0;
blt_int8u tseg1 = 0, tseg2 = 0;
CAN_FilterTypeDef filterConfig;
blt_int32u rxMsgId = BOOT_COM_CAN_RX_MSG_ID;
blt_int32u rxMsgId = g_flashConfig->can_id | 0x10; /* set the ID-type bit to filter both standard and extended IDs */
blt_int32u rxFilterId, rxFilterMask;
/* the current implementation supports CAN1 and 2. throw an assertion error in case a
* different CAN channel is configured.
@ -252,7 +253,7 @@ void CanInit(void)
****************************************************************************************/
void CanTransmitPacket(blt_int8u *data, blt_int8u len)
{
blt_int32u txMsgId = BOOT_COM_CAN_TX_MSG_ID;
blt_int32u txMsgId = g_flashConfig->can_id;
CAN_TxHeaderTypeDef txMsgHeader;
blt_int32u txMsgMailbox;
blt_int32u timeout;
@ -309,7 +310,7 @@ void CanTransmitPacket(blt_int8u *data, blt_int8u len)
****************************************************************************************/
blt_bool CanReceivePacket(blt_int8u *data, blt_int8u *len)
{
blt_int32u rxMsgId = BOOT_COM_CAN_RX_MSG_ID;
blt_int32u rxMsgId = g_flashConfig->can_id | 0x10;
blt_bool result = BLT_FALSE;
CAN_RxHeaderTypeDef rxMsgHeader;

View File

@ -0,0 +1,91 @@
#include "flash_config.h"
#include <stdint.h>
#include "stm32l4xx.h"
#define FLASH_BASE_ADDR 0x08000000UL
// #define FLASH_PAGE_SIZE 0x800 // 2KB
#define FLASH_PAGE_NUM 128
#define FLASH_USER_PAGE (FLASH_PAGE_NUM - 1)
#define FLASH_USER_ADDR (FLASH_BASE_ADDR + FLASH_USER_PAGE * FLASH_PAGE_SIZE)
#define FLASH_EMPTY_DWORD 0xFFFFFFFFFFFFFFFFULL
static uint16_t Flash_CalcCrc(const FlashConfig_t *cfg)
{
uint16_t crc = 0xA55A;
crc ^= cfg->can_id;
crc ^= ((uint16_t)cfg->sensorDir << 8) | cfg->debugFlag;
return crc;
}
static void Flash_LoadDefaultConfig(FlashConfig_t *cfg)
{
cfg->can_id = 0x01;
cfg->sensorDir = 0;
cfg->debugFlag = 0;
cfg->crc = Flash_CalcCrc(cfg);
}
static uint64_t Flash_PackConfig(const FlashConfig_t *cfg)
{
uint64_t data = 0;
data |= (uint64_t)(cfg->can_id & 0xFFFFU);
data |= ((uint64_t)cfg->sensorDir << 16);
data |= ((uint64_t)cfg->debugFlag << 24);
data |= ((uint64_t)cfg->crc << 32);
return data;
}
static void Flash_UnpackConfig(uint64_t data, FlashConfig_t *cfg)
{
cfg->can_id = (uint16_t)(data & 0xFFFFU);
cfg->sensorDir = (uint8_t)((data >> 16) & 0xFFU);
cfg->debugFlag = (uint8_t)((data >> 24) & 0xFFU);
cfg->crc = (uint16_t)((data >> 32) & 0xFFFFU);
}
FlashConfig_t currentCfg;
FlashConfig_t *Flash_ReadConfig(void)
{
uint64_t rawData = *(volatile uint64_t *)FLASH_USER_ADDR;
if (rawData == FLASH_EMPTY_DWORD)
{
Flash_LoadDefaultConfig(&currentCfg);
return &currentCfg;
}
Flash_UnpackConfig(rawData, &currentCfg);
if ((currentCfg.can_id > 0x7FFU) || (currentCfg.crc != Flash_CalcCrc(&currentCfg)))
{
Flash_LoadDefaultConfig(&currentCfg);
}
return &currentCfg;
}
void Flash_WriteConfig(FlashConfig_t *cfg)
{
uint64_t data;
cfg->crc = Flash_CalcCrc(cfg);
data = Flash_PackConfig(cfg);
HAL_FLASH_Unlock();
FLASH_EraseInitTypeDef erase;
uint32_t page_error;
erase.TypeErase = FLASH_TYPEERASE_PAGES;
erase.Page = FLASH_USER_PAGE;
erase.NbPages = 1;
HAL_FLASHEx_Erase(&erase, &page_error);
uint32_t addr = FLASH_USER_ADDR;
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr, data);
HAL_FLASH_Lock();
}

View File

@ -0,0 +1,16 @@
#ifndef _FLASH_CONFIG_H_
#define _FLASH_CONFIG_H_
#include <stdint.h>
typedef struct
{
uint16_t can_id;
uint8_t sensorDir; // 0: 正常1: 反转
uint8_t debugFlag; // 0: 无调试信息1: 输出调试信息
uint16_t crc; // 可选,简单校验
} FlashConfig_t;
FlashConfig_t *Flash_ReadConfig(void);
void Flash_WriteConfig(FlashConfig_t *cfg);
#endif /* _FLASH_CONFIG_H_ */

View File

@ -185,5 +185,19 @@ uint32_t HAL_GetTick(void)
return TimerGet();
} /*** end of HAL_GetTick ***/
void blt_delay(blt_int32u Delay)
{
blt_int32u tickstart = TimerGet();
blt_int32u wait = Delay;
/* Add a period to guaranty minimum wait */
if (wait < 0xFFFFFFFFU)
{
wait += (blt_int32u)1;
}
while ((TimerGet() - tickstart) < wait)
{
}
} /*** end of HAL_Delay ***/
/*********************************** end of timer.c ************************************/

View File

@ -35,7 +35,7 @@ void TimerInit(void);
void TimerUpdate(void);
blt_int32u TimerGet(void);
void TimerReset(void);
void blt_delay(blt_int32u Delay);
#endif /* TIMER_H */
/*********************************** end of timer.h ************************************/

View File

@ -1,7 +1,6 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
* UVISION generated file: DO NOT EDIT!
* Generated by: uVision version 5.41.0.0
*
* Project: 'arm_joint_sensor_bootloader'
* Target: 'arm_joint_sensor_bootloader'

File diff suppressed because one or more lines are too long

View File

@ -145,41 +145,89 @@
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U16004A002933353739303541 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_256.FLM -FS08000000 -FL08000 -FP0($$Device:STM32L431CCUx$CMSIS\Flash\STM32L4xx_256.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0</Name>
<Name>-U16004A002933353739303541 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L4xx_256.FLM -FS08000000 -FL03000 -FP0($$Device:STM32L431CCUx$CMSIS\Flash\STM32L4xx_256.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0-R0</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>203</LineNumber>
<LineNumber>118</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134224634</Address>
<Address>134219106</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Drivers\OpenBLT\rs232.c</Filename>
<Filename>..\Drivers\OpenBLT\cpu.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\arm_joint_sensor_bootloader\../Drivers/OpenBLT/rs232.c\203</Expression>
<Expression>\\arm_joint_sensor_bootloader\../Drivers/OpenBLT/cpu.c\118</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>494</LineNumber>
<LineNumber>60</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134220444</Address>
<Address>134218678</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Drivers\OpenBLT\boot.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\arm_joint_sensor_bootloader\../Drivers/OpenBLT/boot.c\60</Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>71</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134218682</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Drivers\OpenBLT\boot.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\arm_joint_sensor_bootloader\../Drivers/OpenBLT/boot.c\71</Expression>
</Bp>
<Bp>
<Number>3</Number>
<Type>0</Type>
<LineNumber>77</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134221972</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Core\Src\led.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\arm_joint_sensor_bootloader\../Core/Src/led.c\77</Expression>
</Bp>
<Bp>
<Number>4</Number>
<Type>0</Type>
<LineNumber>494</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\Drivers\OpenBLT\flash.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\arm_joint_sensor_bootloader\../Drivers/OpenBLT/flash.c\494</Expression>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
@ -330,7 +378,7 @@
<Group>
<GroupName>Drivers/STM32L4xx_HAL_Driver</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@ -1094,6 +1142,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Drivers\OpenBLT\flash_config.c</PathWithFileName>
<FilenameWithoutPath>flash_config.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>

View File

@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32L431CCUx</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32L4xx_DFP.3.1.0</PackID>
<PackID>Keil.STM32L4xx_DFP.3.0.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000-0x2000BFFF) IRAM2(0x10000000-0x10003FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@ -82,7 +82,7 @@
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --m32 arm_joint_sensor_bootloader\arm_joint_sensor_bootloader.axf --output arm_joint_sensor_bootloader\arm_joint_sensor_bootloader.srec</UserProg1Name>
<UserProg1Name>fromelf.exe --m32 arm_joint_sensor_bootloader\arm_joint_sensor_bootloader.axf --output output\arm_joint_sensor_bootloader.srec</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@ -734,6 +734,11 @@
<FileType>1</FileType>
<FilePath>..\Drivers\OpenBLT\xcp.c</FilePath>
</File>
<File>
<FileName>flash_config.c</FileName>
<FileType>1</FileType>
<FilePath>..\Drivers\OpenBLT\flash_config.c</FilePath>
</File>
</Files>
</Group>
<Group>

View File

@ -0,0 +1,555 @@
S31508000000880C00202D020008350200083702000877
S31508000010390200083B0200083D0200080000000003
S315080000200000000000000000000000003F02000879
S31508000030410200080000000043020008251C0008D1
S31508000040470200084702000847020008470200085E
S31508000050470200084702000847020008470200084E
S31508000060470200084702000847020008470200083E
S31508000070470200084702000847020008470200082E
S31508000080470200084702000847020008470200081E
S31508000090470200084702000847020008470200080E
S315080000A047020008470200084702000847020008FE
S315080000B04702000800000000000000004702000890
S315080000C047020008470200084702000847020008DE
S315080000D047020008470200084702000847020008CE
S315080000E04702000847020008000000000000000060
S315080000F000000000000000000000000000000000F2
S31508000100000000004702000800000000470200083F
S31508000110000000000000000047020008470200082F
S31508000120470200084702000847020008470200087D
S315080001304702000800000000000000000000000060
S3150800014047020008470200084702000800000000AE
S31508000150470200084702000847020008470200084D
S31508000160470200084702000847020008000000008E
S3150800017047020008470200080000000000000000CF
S3150800018047020008470200084702000800F002F884
S3150800019000F03CF80AA090E8000C82448344AAF1D7
S315080001A00107DA4501D100F031F8AFF2090EBAE8D5
S315080001B00F0013F0010F18BFFB1A43F0010318478D
S315080001C05C2000007C200000103A24BF78C878C163
S315080001D0FAD8520724BF30C830C144BF04680C603F
S315080001E0704700000023002400250026103A28BF87
S315080001F078C1FBD8520728BF30C148BF0B6070478B
S315080002001FB501F0CCFF1FBD10B510BD00F058F8A2
S315080002101146FFF7F5FF01F0B9FF00F076F803B4D1
S31508000220FFF7F2FF03BC00F07BF80000094880479F
S3150800023009480047FEE7FEE7FEE7FEE7FEE7FEE7BA
S31508000240FEE7FEE7FEE7FEE704480549054A064BD2
S3150800025070470000FD1C00088D0100088806002074
S31508000260880C002088080020880800204FF000022B
S3150800027000B5134694469646203922BFA0E80C508E
S31508000280A0E80C50B1F12001BFF4F7AF090728BF69
S31508000290A0E80C5048BF0CC05DF804EB890028BFE5
S315080002A040F8042B08BF704748BF20F8022B11F00E
S315080002B0804F18BF00F8012B70477047704770478A
S315080002C0754600F029F8AE4605006946534620F003
S315080002D00700854618B020B5FFF7B6FFBDE82040F1
S315080002E04FF000064FF000074FF000084FF0000BE4
S315080002F021F00701AC46ACE8C009ACE8C009ACE897
S31508000300C009ACE8C0098D4670470446AFF30080C3
S315080003102046FFF784FF00000048704728060020A3
S3150800032001491820ABBEFEE726000200704700F020
S31508000330D5F9FCE710B500F089F9012812D00A4C66
S31508000340207801280ED101F0E1FCD4E9011211440C
S3150800035001F5FA61884205D300202070BDE81040F7
S3150800036000F0D6B910BD000038000020044910B5C9
S315080003700120087000F006F8BDE81040FFF7DABF64
S315080003803800002010B5044C2078012802D101F06D
S31508000390BDFCA06010BD00003800002010B500F0BC
S315080003A0A1F901F0BBFC01F0D5FA00F0F1FB054913
S315080003B0086000F08DF900F039F9BDE81040FFF744
S315080003C0D5BF00004400002010B500F087F901F001
S315080003D0FDFC00F043F9BDE81040FFF7ABBF000095
S315080003E02DE9FF410446984615460E46684601F033
S315080003F04FF902984FF47A71B0FBF1F216480023D0
S315080004004FF4806700EB430C10F813109CF801C0FA
S315080004106144491C6143B2FBF1FC01FB1C2CBCF195
S31508000420000F12D1B2FBF1F189B23180491EB942EF
S315080004300BD210F8131000EB43002970417888F8A6
S315080004400010012004B0BDE8F0815B1CDBB2122B62
S31508000450D8D30020F6E70000F021000870B58EB06A
S3150800046000242A48ADF828408DF82C408DF83040F5
S3150800047000680CAB0BAA00880AA940F010054FF4D7
S315080004807A70FFF7ADFF18B9B62121A0FFF74FFF25
S315080004902748264901260160047644768476C6767E
S315080004A0047744778460C4609DF82C10491E0904BB
S315080004B001619DF830100905A1F580114161BDF86B
S315080004C02810416000F0DBFC002D02DB69051948A5
S315080004D004E0042000EBC501164840420A0C89B224
S315080004E00594CDE90021CDE90646010C80B2CDE997
S315080004F0021004940E20CDE9086069460C4800F005
S31508000500CDFB0B4800F058FD0EB070BD440000202E
S315080005102E2E5C447269766572735C4F70656E4206
S315080005204C545C63616E2E6300000000006400405A
S31508000530640000200400E0FF70B50E46104988B03C
S315080005400025096803466A4609880E4841F01004E2
S31508000550294600F01AFC80B9002C05DB0098A04259
S315080005600BD1029830B108E00198A04205D1029853
S31508000570042802D104980125307008B0284670BDB9
S315080005804400002064000020154A10B5126888B09F
S3150800059013880022002B02DB0093029202E00193EB
S315080005A004230293CDE90321024606AB69460D48AA
S315080005B000F016FB002811D101F0A8FB00F1320467
S315080005C006E000BF00F08AF801F0A0FBA04205D8BB
S315080005D00448069900F0E0FC0028F3D108B010BDE5
S315080005E04400002064000020704700000648007898
S315080005F0042807D2DFE800F0060602040820704740
S315080006003F20704781207047480000200648007840
S31508000610042807D2DFE800F006060204082070471F
S315080006203F207047812070474800002010B501F030
S315080006308DFCFFF713FF044C0220207001F03EFAF0
S315080006400020207010BD00004800002010B50024CE
S3150800065001F08AFC00B10124204610BD38B5694670
S315080006600D48FFF769FF0D4C012806D102202070BE
S315080006709DF80010084801F081FC6946064801F01B
S3150800068055FA012806D1002020709DF8001002486E
S3150800069001F074FC38BD00008C00002048000020E2
S315080006A070B50A4D06460C462878022803D1E1B2F1
S315080006B03046FFF769FF287818B9E1B2304601F0ED
S315080006C08BFABDE8704001F029BD00004800002003
S315080006D0AFF300804FF4FA7001F0EAB8AFF3008088
S315080006E001F00EB9AFF3008072B6704762B6704774
S315080006F070B515460E46044606E000BF16F8010B0F
S3150800070004F8010BFFF7EAFF6D1EADB2F6D270BD15
S3150800071010B501F021F9002818D000F01DF80028BE
S3150800072014D0FFF761FF00F073FC01F033FB01F012
S315080007300FF9074908400749086001F009F94468B4
S31508000740FFF7D4FFA446BDE81040604710BD00007F
S3150800075080FFFF1F08ED00E010B54FF090414FF401
S3150800076000700969884301D0002010BD01F09AF88D
S31508000770012010BD144A117F1448012901D003290C
S315080007800FD1036823F400730360036843F400631E
S315080007900360036823F400630360036843F400738B
S315080007A00360022901D003290BD1016841F4805165
S315080007B00160016821F480510160016841F480619B
S315080007C001600020107770471400002000200240C6
S315080007D0C107054803D0416941F0040141614169F7
S315080007E041F48031416170470020024008494A6956
S315080007F0C0B222F47E7242EAC0004861486940F0FD
S3150800080002004861486940F480304861704700003A
S3150800081000200240054910B54C6944F001044C61BA
S315080008200260BFF36F8F436010BD000000200240D6
S31508000830094A10B55469402344F480245461EFF3FF
S31508000840108272B610C910C05B1E13F0FF03F9D1EF
S3150800085082F3108810BD00000020024070B50546DE
S3150800086000F0CAFC0646134C08E0681C06D000F0E7
S31508000870C3FC801BA84201D3032070BD2069C003B6
S31508000880F3D420690C4908400CD00C494A68024345
S315080008904A60810F01D0A169A161810000D0206161
S315080008A0012070BD2069C00701D001202061002009
S315080008B070BD000000200240FAC3020014000020A8
S315080008C02DE9F04104464D0A00686D021F46904620
S315080008D00E46401C05D12946204600F0BDF80028E2
S315080008E026D02068A84205D02946204600F0C4F83C
S315080008F004001FD02068301A051946464FF40078C0
S3150800090015F10405FFF7EAFE281B001F404508D32A
S315080009102168204601F5007100F0AEF8040009D000
S31508000920251D16F8010B05F8010B7F1EEAD10120DB
S31508000930BDE8F0810020FBE70A4810B50068401CB6
S3150800094004D0084800F0DEF8002809D006480068F8
S31508000950401C04D0044800F0D5F8002800D0012037
S3150800096010BD000014030020100100202DE9F043FB
S315080009702E4A0127131A4A1E85B0934209D3C60A7E
S315080009802B4AF602964204D34218521EB2F1016F60
S3150800099003D3002005B0BDE8F083801B0844C0F3EC
S315080009A0CF25400501D06D1CADB200F011FC2149E0
S315080009B04FF40040086100200090012000244FF405
S315080009C08029DFF8748003902AE000BFFFF786FECF
S315080009D0D8F8001006EBC420CA4313041B0C12D027
S315080009E00B049B0903F1006383420ED9A0F1006052
S315080009F0C00A02900120019004A9684600F020FB75
S31508000A0060B100270EE04B46ECE71204120C03D047
S31508000A1009048909401AE9E74946FBE7641CA4B2B8
S31508000A20AC42D3D300F078FB3846B3E7FFFF0F0894
S31508000A300030000800200240E075FF1F004870479C
S31508000A400030000803494FF0FF30086001F50171D6
S31508000A50086070471001002010B5CA0501D00020B3
S31508000A6010BD02688A4204D002C04FF40072FFF734
S31508000A703FFE012010BD000070B504460C480D4627
S31508000A80844202D1A0F501740AE00A48854202D1DF
S31508000A90074C054604E0204600F034F8002806D046
S31508000AA029462046FFF7D8FF002800D0204670BD0B
S31508000AB0140300200030000830B40E4B1C1A4B1EDD
S31508000AC09C4207D30C4B984204D34418641EB4F1D5
S31508000AD0016F02D330BC00207047440A64029C426E
S31508000AE00B46014601D1054800E0054830BCFFF732
S31508000AF0E7BE0000FFFF0F080030000814030020BF
S31508000B00100100202DE9F04707464FF0010800F0D4
S31508000B105FFB14494FF4004008610024386800EB75
S31508000B20C40907EBC40045688668FFF7D7FD2A465F
S31508000B3033464946002000F0F9FA10B14FF0000894
S31508000B400AE0D9F80000D9F8041068407140084353
S31508000B50F4D1641C402CE1D300F0DEFA4046BDE82F
S31508000B60F087000000200240018840884AF25A5265
S31508000B70514040BA4840704710B5044601202080CD
S31508000B800020A070E0702046FFF7EEFFA08010BDA1
S31508000B9070B5114801684068CA4372EA000215D068
S31508000BA08BB20C0C0D4A44EA0044090E138094706B
S31508000BB041EA0021D17090801446B3F5006F05D242
S31508000BC01046FFF7D1FFA188884202D00348FFF7F5
S31508000BD0D3FF024870BD000000F803085C0000203F
S31508000BE0F0B590F820500468A468012D05D0022DB0
S31508000BF003D0416A41F480214DE014F0406F01D1E1
S31508000C00E50045D5C4F301640125A5401D608D683E
S31508000C104FF4C0739DB1CE6835434E6845EAC605A4
S31508000C20066803EB0417F5514FF4C275076805EB20
S31508000C3004150E697E51097D012905D009E00E8843
S31508000C40CD6845EA4655EBE701684E5946F4807685
S31508000C504E511179D2F805504FF4C67641EA05216E
S31508000C60056806EB0416A9511178D2F801204FF44D
S31508000C70C47541EA0221026805EB04155151006862
S31508000C8003EB0411425842F0010242500020F0BD25
S31508000C90416A41F4001141620120F0BD10B590F897
S31508000CA02020012A07D0022A05D0416A41F4802172
S31508000CB04162012010BD0068D0F8002242F001020E
S31508000CC0C0F800220A7D02F01F0301229A40D0F8DC
S31508000CD01C329343C0F81C32CB69B3B9D0F80C3236
S31508000CE09343C0F80C328C894B6864F31F434C69F4
S31508000CF000EBC404C4F840320C890B6864F31F4344
S31508000D004C6900EBC404C4F84432CB69012B16D1F4
S31508000D10D0F80C321343C0F80C320C884B6864F3D5
S31508000D201F434C6900EBC404C4F840320C89CB68F5
S31508000D3064F31F434C6900EBC404C4F844328B695E
S31508000D40002BD0F804320FD053EA0203C0F804325D
S31508000D500B69002BD0F8143208D01343C0F81432AC
S31508000D60096A012904D008E09343EFE79343F5E7BE
S31508000D70D0F81C121143C0F81C12D0F8001221F04A
S31508000D800101C0F80012002010BD70B590F820408F
S31508000D90012C05D0022C03D0416A41F4802128E0B9
S31508000DA0046809B32469A40720D04FF4D8740568E9
S31508000DB004EB01142D5915F00405956005682D59A5
S31508000DC01AD0ED08556005682C5904F00204D46061
S31508000DD04FF4DA74056804EB01142E5906F00F0671
S31508000DE0082E0CD308250DE0E468DCE7416A41F4D7
S31508000DF000114162012070BD6D0D1560E3E72D59A4
S31508000E0005F00F05156105682D59C5F30725956188
S31508000E1005682C59240C54614FF4DC72046802EB03
S31508000E200112A4581C700468A458240A5C7004684B
S31508000E30A458240C9C700468A258120EDA704FF459
S31508000E40DE72046802EB0112A4581C710468A458E7
S31508000E50240A5C710468A458240C9C710468A2587E
S31508000E60120EDA71006829B1016941F020010161A9
S31508000E70002070BDC16841F02001C160F8E770B577
S31508000E80040003D094F8200010B104E0012070BDDE
S31508000E90204600F090F82068016841F001010160E1
S31508000EA000F0AAF90546052604E000F0A5F9401B5E
S31508000EB00A2811D820684068C007F6D0206801685B
S31508000EC021F00201016000F097F905460BE000F0F9
S31508000ED093F9401B0A2806D9606A40F4003060621C
S31508000EE084F82060D2E7206840688007EFD4207E27
S31508000EF00128206801683DD021F080010160607EEC
S31508000F0001282068016838D021F040010160A07EE0
S31508000F1001282068016833D021F020010160E07EB5
S31508000F200128206801682ED041F010010160207F59
S31508000F3001282068016829D021F008010160607F36
S31508000F4001282068016824D021F004010160D4E951
S31508000F5002010843D4E90412114308436168491E93
S31508000F6008432168C86100206062012084F82000D7
S31508000F70002070BD41F08001C0E741F04001C5E79F
S31508000F8041F02001CAE721F01001CFE741F008013E
S31508000F90D4E741F00401D9E70346002093F820205E
S31508000FA0012A01D0022A05D11A6889069268914356
S31508000FB000D001207047704770B5044690F82000AD
S31508000FC0012804D0606A40F40020606218E002201C
S31508000FD084F820002068016821F00101016000F012
S31508000FE00BF905460EE000BF00F006F9401B0A287B
S31508000FF008D9606A40F400306062052084F8200051
S31508001000012070BD20684068C007EDD1606270BDE0
S315080010100A4810B54FF0FF318163C163002282632D
S31508001020C2630164026481628262C162C262016350
S31508001030026300F015F9002010BD00000010024000
S315080010402DE9F05F054632488946017801290CD01A
S315080010500126804606704CF2503B5846FFF7FEFBC9
S3150800106007004FF0000A03D04EE00220BDE8F09FCB
S3150800107051464046C8F804A0264C226892050AD56F
S315080010802168490505D5216821F48061216003217D
S3150800109009E0067708E02268520504D5216821F49C
S315080010A080612160022101772868012807D04FF066
S315080010B0FF31C9F8001040F2FA3BAE681DE06868D7
S315080010C0FFF786FB5846FFF7C9FB0746606920F01D
S315080010D00400606116E030466968FFF787FB4CF24A
S315080010E05030FFF7BBFB0700606920EA0B00606120
S315080010F002D0C9F8006005E0761CD5E9020108446B
S31508001100B042E8D8FFF736FB88F800A03846ADE7C6
S3150800111014000020002002400348416941F00041C4
S315080011204161002070470000002002402DE9FF5F62
S31508001130254C0646904620789A4601280BD0012071
S3150800114020704CF2503B5846FFF788FB07004FF0DB
S31508001150000904D02AE0022004B0BDE8F09F484602
S31508001160C4F80490194D2968490504D5286820F45F
S31508001170806028600220207726B1012E09D0022E31
S3150800118007D00CE0424653460198FFF743FB012679
S3150800119012E041460198FFF74BFB022E0AD058464B
S315080011A0FFF75CFB4FEA0007FFF7E4FA84F80090C4
S315080011B03846D1E74FF480265846FFF74FFB0746D7
S315080011C06869B0436861EFE7140000200020024018
S315080011D0064900204A69002A07DA054A8A60054A4C
S315080011E08A604969002900DA012070470020024018
S315080011F023016745AB89EFCD00F088BD10B5002403
S31508001200032000F0CBF80F2000F008F808B10124FD
S3150800121001E000F059F8204610BD000070B50E4EEA
S3150800122005460024307898B14FF47A71B1FBF0F096
S315080012300A490968B1FBF0F000F0C2F840B9102D70
S3150800124006D200222946501E00F088F8756000E094
S315080012500124204670BD000008000020340000204C
S3150800126010B500F0D3F94FF090442020A06213483F
S3150800127000F0EEF8124800F0EBF8204600F0E8F827
S315080012801048816D21F000718165016E21F480415D
S315080012900166C16C21F00401C164C16C21F0020130
S315080012A0C164C16C21F00101C164816D21F08051D6
S315080012B08165016E21F00101016610BD0008004834
S315080012C00004004800100240F0B587B0012000F085
S315080012D0B3F84FF0805000F0A3F8012000F084F82E
S315080012E0022000F081F8042000F07EF84FF48040D8
S315080012F000F0A2F84FF0007000F092F84FF40046A4
S31508001300012000240096CDE90104CDE903404FF001
S3150800131090456946284600F0DDF8AE614FF4C06096
S315080013200226CDE9000607200327CDE90440CDE9CA
S3150800133002746946284600F0CDF83802CDE9000661
S315080013400920CDE90440CDE902746946024800F057
S31508001350C1F807B0F0BD000000040048F0B40E4B19
S315080013601B680C46C3F30223C3F10705042D00D9F5
S315080013700425191D072901D2002300E0DB1E0126DA
S3150800138006FA05F1491E214099409E40761E1640F0
S315080013903143F0BC00F0DCBE0CED00E0064900F07D
S315080013A0070208684FF6FF03184040EA0220034A7E
S315080013B010430860704700000CED00E00000FA05D5
S315080013C010B5401EB0F1807F01D3012010BD4FF04B
S315080013D0E02460610F21601700F0BAFE0020A061CA
S315080013E007202061002010BD044908B5CA6C0243D5
S315080013F0CA64C96C0140009108BD00000010024093
S315080014000249CA6A0243CA627047000000100240D5
S315080014100249CA6A8243CA62704700000010024045
S31508001420044908B58A6D02438A65896D01400091B1
S3150800143008BD000000100240044908B50A6E0243C0
S315080014400A66096E0140009108BD000000100240BE
S3150800145010B50024B0F1904F07D01949884209D138
S315080014600220FFF7CDFF022023E00120FFF7C8FF87
S3150800147001201EE01349884204D10420FFF7C0FF6B
S31508001480042016E01049884204D10820FFF7B8FF67
S3150800149008200EE00D49884204D11020FFF7B0FF5E
S315080014A0102006E00A49884206D18020FFF7A8FFE7
S315080014B08020FFF7ADFF00E00124204610BD0000A4
S315080014C00004004800080048000C004800100048C6
S315080014D0001C0048F0B50A680F2692FAA2F2B2FA82
S315080014E082F303248AE001259D402A407ED04D6878
S315080014F0012D01D0022D20D18D68876892FAA2FCB1
S31508001500BCFA8CFC4FEA4C0E04FA0EFC27EA0C07D0
S3150800151092FAA2FCBCFA8CFC4FEA4C0C05FA0CF5C4
S315080015202F438760CF680D68D0F804C02CEA050CF5
S315080015307D434CEA050CC0F804C00F69D0F80CC00E
S3150800154092FAA2F5B5FA85F54FEA450E04FA0EF5B4
S315080015502CEA050C92FAA2F5B5FA85F56D00AF40AE
S315080015604CEA070CC0F80CC04D68022D2FD1FF2A93
S3150800157015D8D1F814C0056A92FAA2F7B7FA87F710
S31508001580BF0006FA07F7BD4392FAA2F7B7FA87F73C
S31508001590BF000CFA07FC45EA0C05056217E0D1F80E
S315080015A014E0476A150A95FAA5FCBCFA8CFC4FEAC2
S315080015B08C0C06FA0CFC95FAA5F5B5FA85F5AD007E
S315080015C027EA0C070EFA05FE47EA0E0747624D683A
S315080015D0076892FAA2FCBCFA8CFC4FEA4C0C04FA97
S315080015E00CFE27EA0E0792FAA2F200E005E0B2FA2C
S315080015F082F2520095402F4307605B1C0A6832FA54
S3150800160003F57FF470AF0020F0BD00001E4808B552
S31508001610016841F0010101600168C1F34001002938
S31508001620FAD0016821F0F00141F0600101604168DB
S3150800163021F47F414160416821F0F85141F0805121
S315080016404160002181600268104B1A4022F08062D6
S3150800165000920260026812F0206FFBD14FF48052AC
S31508001660C2600261026822F480220260816140F24F
S315080016707F7100910162D0F8941041F40001C0F81E
S315080016809410002008BD000000100240FFF4FEFE82
S3150800169010B5044600F092F9206000F065F9606024
S315080016A000F070F9A060606800F07AF9E06010BD9B
S315080016B070B500242F49304D4FF40046032804D056
S315080016C00C281ED0302837D034E0D1F8880000F036
S315080016D0030040F44030B0F5403F0BD06FF4403182
S315080016E0401804D001283ED0022823D135E000F066
S315080016F065F91EE000F062F900F036F900F050F9DD
S3150800170017E0D1F8880000F00C0040F44020B0F54E
S31508001710402F08D0001FB0F54020E8D0042822D07A
S31508001720082807D119E000F049F900F01DF900F082
S3150800173029F90446204670BDD1F8880000F030002B
S3150800174040F44010B0F5401FEDD01038B0F5401009
S31508001750CDD0102807D02028ECD100F017F80028A3
S31508001760E8D03446E6E700F009F80028E2D02C462F
S31508001770E0E70000001002400024F4000248006878
S31508001780C0F3802070470000001002400248D0F8DD
S315080017909000C0F3400070470010024002480068FD
S315080017A000F0F00070470000001002400248D0F830
S315080017B0940000F470607047001002400248006808
S315080017C0C0F3C00070470000001002400248C0681D
S315080017D000F0700070470000001002400248C06820
S315080017E000F003007047000000100240014908603D
S315080017F0704700003400002070B5044600680D46A6
S31508001800012610F0010F35D1E9686868AA6908430E
S3150800181029691143084321681E4A1140084320607C
S31508001820A868616821F44051014361606869A1684C
S3150800183021F440710143A1601748844201D1032075
S3150800184008E01648844201D10C2003E0144884427B
S3150800185010D13020FFF72CFF60B1296851B1AA6971
S315080018600026B2F5004F07D000EB5100B0FBF1F0AF
S3150800187080B2E060304670BD400000EB5100B0FB1E
S31508001880F1F081B24FF6F07201EA0200C1F34201AB
S315080018900843EEE7F369FFEF0038014000440040D3
S315080018A0004800404FF090414FF40040886270476E
S315080018B02DE9F04710490026354648804FF4004484
S315080018C04FF090484FF496790C4F07E066B1002622
S315080018D0C8F82840484600F04BFC6D1C386800885C
S315080018E0A842F3DCBDE8F0870126C8F81840C820EE
S315080018F000F03EFCF2E70000000000204400002053
S3150800190010B500F003FA0B4C616888420DD32278B3
S315080019104FF400404FF0904142B100222270886295
S3150800192000F0F4F961880844606010BD0122227055
S315080019308861F5E70000002010B500F013F80028CC
S3150800194003D0BDE81040FEF7F7BF10BDFFF70EB88D
S31508001950FFF774B8FFF776B8AFF300800120704739
S31508001960FFF7AAB80120704704498968044A01F0BC
S31508001970F0010909515CC840704700000010024098
S31508001980A821000804498968044A01F4E06102EBC9
S3150800199011210978C840704700100240E821000864
S315080019A004498968044A01F4605102EBD121097897
S315080019B0C840704700100240E8210008184810B5D2
S315080019C08068184C10F00C0005D004281AD0082896
S315080019D01AD00C281AD0FFF7F1FED8B1FFF7EEFEA1
S315080019E050B1FFF7DBFE09E0FFF7D8FE02E000BFC3
S315080019F0FFF7DCFE000A02E0FFF7D8FE000954F8FC
S31508001A00200010BD084810BD084810BDBDE81040AC
S31508001A1000F00EB8FFF7D2FE0028E9D0E4E7000090
S31508001A2000100240B82100080024F40000366E01B8
S31508001A3010B5FFF7D3FE1D4C012803D002282AD083
S31508001A4003282AD0FFF7BAFE28B1FFF7B7FE48B336
S31508001A50FFF7A4FE06E0FFF7B1FE00B3FFF79EFE10
S31508001A60000A00E0000954F8204000BFFFF7AEFE68
S31508001A70012101EB1010B4FBF0F20D48C368C068F1
S31508001A80C3F306235A4300F0C06001EB50604000E0
S31508001A90B2FBF0F010BD074CE8E7074CE6E7FFF7A6
S31508001AA085FEDDE7FFF782FEDCE70000B8210008C7
S31508001AB0001002400024F40000366E0110B588B00C
S31508001AC01C216846FEF7D2FB104C206820F0010066
S31508001AD020604FF4E1300090002001900C21029024
S31508001AE0CDE903010590069069462046FFF784FE76
S31508001AF0606820F490406060A06820F02A00A0602A
S31508001B00206840F00100206008B010BD0038014090
S31508001B10054A01460020D369C3F34013002B02D0BF
S31508001B20506A087001207047003801402DE9F041DD
S31508001B301C4C80461C4D60780F46002680B12078E4
S31508001B402844401CFFF7E4FF012819D000F0DEF80E
S31508001B506168C831884200D966700020BDE8F08106
S31508001B601148FFF7D5FF0128F7D12878401E8028AD
S31508001B70F3D800F0CBF86060267001206070ECE7BF
S31508001B802078401CC2B2227028789042E5D1227093
S31508001B90691C4046FEF7ACFD667020783870012057
S31508001BA0DCE700004C0000201805002070B5094D40
S31508001BB0A86200F0ABF800F10A0405E0FEF78EFD16
S31508001BC000F0A4F8A04204D8E869C0F3C0100028C1
S31508001BD0F4D070BD0038014070B50D46064681291F
S31508001BE003D9982108A0FEF7A2FB2846FFF7DEFFD7
S31508001BF0002406E0FEF772FD305DFFF7D7FF641C90
S31508001C00A4B2AC42F6D370BD2E2E5C4472697665DA
S31508001C1072735C4F70656E424C545C727332333229
S31508001C202E630000704700002A4810B5016821F0AD
S31508001C30070141F004010160006800F0070004286C
S31508001C4003D06A2124A0FEF772FB2848016821F414
S31508001C50C06141F4007101602548016841F4807152
S31508001C6001600168C1F380210029FAD0416821F09A
S31508001C70F85141F080514160C26840F602211D4B7F
S31508001C801A401143C160C16841F08071C1600168A2
S31508001C9041F0807101600168C1F340610029FAD002
S31508001CA0816841F003018160816801F00C010C290B
S31508001CB0FAD1816821F0F0018160816821F4E06140
S31508001CC08160816821F460518160BDE810400A484E
S31508001CD0FFF78CBD002002402E2E2F436F72652F12
S31508001CE05372632F6D61696E2E63000000700040A9
S31508001CF0001002408C80FFF900B4C4040248016851
S31508001D0041F470010160704788ED00E000B500F00D
S31508001D105DF80148406800BD54000020184808B521
S31508001D20816D41F001018165816D01F0010100912C
S31508001D308168144A01F4E06102EB112180680A788F
S31508001D4011490968D14010F4E06F16D002204143CA
S31508001D500122900702604FF6FF72C2620B4AB1FB7E
S31508001D60F2F1491E8162416941F001014161084968
S31508001D7000224A60406A088008BD0120E7E70000A3
S31508001D8000100240E821000834000020A086010067
S31508001D90540000200B48816B41F001018163816B7F
S31508001DA021F001018163816D21F0010181654FF008
S31508001DB0E020002101614161816103494FF0007013
S31508001DC0086070470010024004ED00E04FF08040C4
S31508001DD0416A0A480288891A89B264290CD364239D
S31508001DE0B1FBF3F143680B44436001EBC10303EB1A
S31508001DF0011102EB810101807047000054000020A8
S31508001E002DE9F041114FFF21001D397000F092F8BD
S31508001E1004460025D7F8886006E000BF16F8010BCF
S31508001E202844C5B2FEF75AFC641EF7D20121797020
S31508001E3028463C46391D00F083F90020A070E07062
S31508001E400820A4F88600BDE8F08100009C05002063
S31508001E5070B50F4C0020012584F8820084F8815063
S31508001E60FF21217010216170A070FEF7BFFBE070A2
S31508001E70FEF7CCFB2071FEF7C9FB000A6071A5715D
S31508001E80E5710820A4F88600BDE87040FFF762BD3A
S31508001E909C05002070B50446FEF7A8FB6178801EF5
S31508001EA0884201DA222018E00E4DFF202870012012
S31508001EB0A5F88600617859B1A21CD5F88800FFF705
S31508001EC04FFD48B155F8880F61780844286070BD01
S31508001ED0FFF732FD0028FAD13120BDE8704000F046
S31508001EE025B900009C05002070B50546FEF77EFB67
S31508001EF06978401E884204DABDE87040222000F066
S31508001F0015B9281D00F016F8094C0146C4F88800D2
S31508001F106A78601CFEF7ECFBFF2004F8480B69782A
S31508001F20206C084420646878401CE08770BD000077
S31508001F309C0500200178427841EA02218278C0781F
S31508001F4041EA024141EA0060704700000548002165
S31508001F5000F8811FC0F80710C170A0F8051081703D
S31508001F60417070479C050020034890F881000028BE
S31508001F7000D00120704700009C0500202DE9F041A3
S31508001F8001780127634C0546FF2912D094F8810091
S31508001F9001287AD10020FF26F32941D011DCD02967
S31508001FA078D009DCC9295DD0CC2970D0CF296FD16A
S31508001FB096E0FFF74DFF8EE0D1297BD0D22967D175
S31508001FC06CE0F4390B2963D2DFE801F0210625908D
S31508001FD090902E903B3D4700FEF708FB6A78401E1E
S31508001FE0904201DA222071E0601CD4F88810483447
S31508001FF0FEF77EFB04F8486D6978D4F88800084433
S31508002000C4F888006878401CA4F8860063E028466F
S31508002010FFF76AFF5FE02670281DFFF78BFF31E0A8
S315080020202846FFF7EDFE56E026703B49C4F88810AF
S315080020306070A070E0700720211D00F081F808206C
S31508002040E2E7002042E02670607094F88210A170E2
S31508002050E070207160710620D6E784F8810084F864
S3150800206082003FE0FEF7C2FA411E6A1CD4F88800D7
S31508002070FFF776FC58B12670FEF7B8FAD4F8881040
S31508002080401E0844C4F8880023E041E002E02BE043
S315080020902CE00FE02846FFF7FDFE1CE02670607076
S315080020A00546A070FEF7A2FAE07025716571A57164
S315080020B00720A9E72846001DD4F88850FFF73AFFFD
S315080020C001462846FFF742FC70B10BE000F02EF8F7
S315080020D001E0A4F8867094F88400012808D00AE084
S315080020E0FEF716FB2670F4E73120EFE72020EDE730
S315080020F0102000F01BF8B4F98600002808DD84F8E3
S315080021008470BDE8F041034A81B21046FEF7C8BAAA
S31508002110BDE8F0819C050020142200080249002031
S3150800212081F88400704700009C0500200349FE22C0
S315080021300A7048700220A1F8860070479C050020A6
S315080021400870020A4A70020C8A70000EC87070473E
S315080021500907090E002804DB00F1E02080F80014C6
S31508002160704700F00F0000F1E02080F8141D70475A
S3150800217030B50446FFF7CAFD0546601C00D0641C4E
S31508002180FFF7C4FD401BA042FAD330BDFFF736F86F
S31508002190FFF74AFDFEF702F9FEF716F9FCE74FF0DE
S315080021A04070E1EE100A70470000000000000000D1
S315080021B00102030406070809A0860100400D030072
S315080021C0801A060000350C0040420F0080841E006D
S315080021D000093D0000127A000024F40000366E0162
S315080021E00048E801006CDC0200000000010203045C
S315080021F005020602060307030803090309040A047D
S315080022000B040C040C050D050E050F050F0610062C
S31508002210100710084F70656E424C54003C220008A7
S315080022200000002064000000C8010008A022000881
S3150800223064000020240C0000E401000800000000EF
S31508002240000000000100000010000000000000006F
S315080022500000000000000000000000000000000070
S31508002260010000000000000000000000000000005F
S3150800227000093D000000000000000000000000000A
S31508002280000000000500000000000000000000003B
S315080022900000000000000000000000000000000030
S7050800018D64

View File

@ -616,9 +616,9 @@ ARM Macro Assembler Page 10
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M4.fp.sp --apcs=
interwork --depend=arm_joint_sensor_bootloader\startup_stm32l431xx.d -oarm_join
t_sensor_bootloader\startup_stm32l431xx.o -I.\RTE\_arm_joint_sensor_bootloader
-ID:\Keil_Package\ARM\CMSIS\5.9.0\CMSIS\Core\Include --predefine="__UVISION_VER
SION SETA 539" --predefine="_RTE_ SETA 1" --predefine="STM32L431xx SETA 1" --pr
edefine="_RTE_ SETA 1" --list=startup_stm32l431xx.lst startup_stm32l431xx.s
-ID:\Keil_Pack\ARM\CMSIS\5.6.0\CMSIS\Core\Include --predefine="__UVISION_VERSIO
N SETA 541" --predefine="STM32L431xx SETA 1" --predefine="_RTE_ SETA 1" --list=
startup_stm32l431xx.lst startup_stm32l431xx.s