Uzaktan yazılım güncelleme

Başlatan gokhangokcen, 26 Ekim 2020, 13:55:48

gokhangokcen

Alıntı yapılan: z - 07 Kasım 2020, 12:52:51Forumda STM32 icin flash write flash delete gibi C fonksiyonlari vardi.

Asagidaki linkteki Flash dokumani da isine yarayacaktir.

http://www.cncdesigner.com/wordpress/?page_id=4096


@z hocam, benim tıkandığım nokta *.bin dosyasını işlemciye nasıl yazdıracağım? Stlink utility bu işi nasıl yapıyor? Bin dosyası not defteri ya da başka bir şeyle açılan uzantı değil. Bin dosyasının içeriğinde 0x8000 adresinin içeriği şu 0x8001 içeriği bu diye yazıyor mu? Nasıl görebilirim? Bunu işlemciye nasıl yazdırırım?
Bu sorunun cevabını arıyorum şu an için
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

JOKERAS

Alıntı yapılan: z - 07 Kasım 2020, 14:09:19Hemen hemen flasha write kadar basit.
Tamam,anladım çok basit diyorsun.Basit bir örnek C kodu yazarmısın?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

#33
Alıntı yapılan: z - 07 Kasım 2020, 14:17:59Ben asmciyim.
Vay arkadaş ya.Asm'ci olduğunu biliyoruz.Sanki C yazamıyorsun.
Asm'de olabilir.Örnek olsun.

Hala bekliyorum @z .
Sen istesen C'de yazarsın.Sen ki Ortadoğu ve Balkanların en haşin Embededçilerindensin.
Haydi bekliyorum-ruz.  Bu olayı anlamam lazım.

kantirici

Alıntı yapılan: gokhangokcen - 07 Kasım 2020, 10:36:48@kantirici üstad binary dosyasını nasıl açarım array yaparım?

Bu iş için kendinizde bir program yazabilirsiniz veya hazır programlarda bulabilirsiniz internetten.

Denemeler için aşağıdaki web sitesini kullanabilirsiniz. Bin dosyayı C array'e çeviriyor.

https://www.netzmal.de/bin2hex/

gokhangokcen

@kantirici üstad, link için teşekkür ediyorum. Peki bu dönüşümü kendimiz yapmak istersek nasıl yazarız? İşlem/ işleyiş nasıldır? Bu vermiş olduğunuz linki yarın deneyeceğim haberdar ederim
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

Alıntı yapılan: gokhangokcen - 08 Kasım 2020, 13:26:31@kantirici üstad, link için teşekkür ediyorum. Peki bu dönüşümü kendimiz yapmak istersek nasıl yazarız? İşlem/ işleyiş nasıldır? Bu vermiş olduğunuz linki yarın deneyeceğim haberdar ederim

@kantirici hocam verdiğiniz linki denedim array formatında byte-byte olarak veri oluşturuyor. Peki bu bilgilerin hangi adrese yazılacağını nereden bileceğim?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

kantirici

#37
Merhaba,

Herhangi bir dosyayı C array'e çevirmek için kullandığınız programlama dilinde ilgili dosyayı açıp dosya sonuna kadar byte byte okuyup bu verileri string olarak başka bir dosyaya kayıt yapmalısınız.

İkinci sorunuza gelince; O adres bilgisi sizin tasarımınıza göre değişecektir. Mesela bootloader 0x8000 adresinde başlayıp 0x8500 adresinde bitiyorsa, bootloader'ın bitişi sizin programınızın başlangıç adresi olabilir. Bu zorunlu değildir. 0x9000 adresinde de sizin asıl programınız başlıyor olabilir. Her iki durumda da bootlaoder ilgili adrese jump edeceği için sorun olmaz. Sadece flash alanını iyi kullanmamış olursunuz.

Tabi  linker dosyalarını bu adreslere göre düzenlemeniz gerekecektir.

gokhangokcen

#38
Öncelikle neredeyse 1 haftadır foruma giremiyordum. Bu yüzden cevap yazamadım. Sebebini bir türlü çözemedim..

@kantirici üstad verdiğin bilgiler için teşekkür ederim. Yönlendirmelerin sayesinde bir bootloader oluşturup içerisine ledblink kodu gömdüm ve çalıştırabildim. İlgilenen arkadaşlar illaki olacaktır. Yaptığım adımlarla birlikte elimden geldiğince anlatmaya çalışayım.

Bootloder main dosyası;
(diğer header dosyalarını paylaşmadım. Çünkü cubemx ile osc ayarlarını vs yaptım. İşlemci 72mhz clock hızı ile çalışmakta girişte 8mhz kristal var)

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
typedef  void (*pFunction)(void);
/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define APPLICATION_START_ADDRESS  0x0800C000 //(FLASH_BASE+ 48*1024)
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void Write_Flash (uint32_t adr, uint16_t data);
void programUpdate(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
	  pFunction appEntry;
	  uint32_t appStack;
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
  programUpdate();

  /*pFunction Jump_To_Application = *( (pFunction*) (APPLICATION_START_ADDRESS + 4) );


  __set_CONTROL(0);

  SysTick->CTRL = 0; //disable SysTick

  SCB->VTOR = APPLICATION_START_ADDRESS;

  programUpdate();*/

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */



  /* Initialize user application's Stack Pointer */
  /*__set_MSP( *( (uint32_t*) APPLICATION_START_ADDRESS ) );

  Jump_To_Application();*/

  /* Get the application stack pointer (First entry in the application vector table) */
  appStack = (uint32_t) *((__IO uint32_t*)APPLICATION_START_ADDRESS);

  /* Get the application entry point (Second entry in the application vector table) */
  appEntry = (pFunction) *(__IO uint32_t*) (APPLICATION_START_ADDRESS + 4);

  /* Reconfigure vector table offset register to watch the application bootloader */
  SCB->VTOR = APPLICATION_START_ADDRESS;

  /* Set the application stack pointer */
  __set_MSP(appStack);

  appEntry();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL2;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */
void programUpdate(){
	uint8_t array[4624] = {
			  0x00,0x50,0x00,0x20,0x1d,0xd1,0x00,0x08,0x05,0xc3,0x00,0x08,0x11,0xc3,0x00,0x08,0x17,0xc3,0x00,0x08,
			  0x1d,0xc3,0x00,0x08,0x23,0xc3,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
			  0x00,0x00,0x00,0x00,0x29,0xc3,0x00,0x08,0x35,0xc3,0x00,0x08,0x00,0x00,0x00,0x00,0x41,0xc3,0x00,0x08,
			  0x4d,0xc3,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,
			  0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x65,0xd1,0x00,0x08,0x00,0x00,0x00,0x00,
			  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
			  0x00,0x00,0x00,0x00,0x5f,0xf8,0x08,0xf1,0x10,0xb5,0x05,0x4c,0x23,0x78,0x33,0xb9,0x04,0x4b,0x13,0xb1,
			  0x04,0x48,0xaf,0xf3,0x00,0x80,0x01,0x23,0x23,0x70,0x10,0xbd,0x0c,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
			  0xc0,0xd1,0x00,0x08,0x08,0xb5,0x03,0x4b,0x1b,0xb1,0x03,0x49,0x03,0x48,0xaf,0xf3,0x00,0x80,0x08,0xbd,
			  0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x20,0xc0,0xd1,0x00,0x08,0x80,0xb5,0x00,0xaf,0x00,0xf0,0x08,0xf9,
			  0x00,0xf0,0x0e,0xf8,0x00,0xf0,0x50,0xf8,0x4f,0xf4,0x00,0x51,0x03,0x48,0x00,0xf0,0xd7,0xfb,0x4f,0xf4,
			  0xfa,0x70,0x00,0xf0,0x5d,0xf9,0xf5,0xe7,0x00,0x10,0x01,0x40,0x80,0xb5,0x90,0xb0,0x00,0xaf,0x07,0xf1,
			  0x18,0x03,0x28,0x22,0x00,0x21,0x18,0x46,0x01,0xf0,0x14,0xf8,0x3b,0x1d,0x00,0x22,0x1a,0x60,0x5a,0x60,
			  0x9a,0x60,0xda,0x60,0x1a,0x61,0x01,0x23,0xbb,0x61,0x4f,0xf4,0x80,0x33,0xfb,0x61,0x00,0x23,0x3b,0x62,
			  0x01,0x23,0xbb,0x62,0x02,0x23,0x7b,0x63,0x4f,0xf4,0x80,0x33,0xbb,0x63,0x00,0x23,0xfb,0x63,0x07,0xf1,
			  0x18,0x03,0x18,0x46,0x00,0xf0,0xc4,0xfb,0x03,0x46,0x00,0x2b,0x01,0xd0,0x00,0xf0,0x65,0xf8,0x0f,0x23,
			  0x7b,0x60,0x02,0x23,0xbb,0x60,0x00,0x23,0xfb,0x60,0x00,0x23,0x3b,0x61,0x00,0x23,0x7b,0x61,0x3b,0x1d,
			  0x00,0x21,0x18,0x46,0x00,0xf0,0x30,0xfe,0x03,0x46,0x00,0x2b,0x01,0xd0,0x00,0xf0,0x51,0xf8,0x00,0xbf,
			  0x40,0x37,0xbd,0x46,0x80,0xbd,0x00,0x00,0x80,0xb5,0x88,0xb0,0x00,0xaf,0x07,0xf1,0x10,0x03,0x00,0x22,
			  0x1a,0x60,0x5a,0x60,0x9a,0x60,0xda,0x60,0x1e,0x4a,0x1e,0x4b,0x9b,0x69,0x43,0xf0,0x10,0x03,0x93,0x61,
			  0x1b,0x4b,0x9b,0x69,0x03,0xf0,0x10,0x03,0xfb,0x60,0xfb,0x68,0x18,0x4a,0x18,0x4b,0x9b,0x69,0x43,0xf0,
			  0x20,0x03,0x93,0x61,0x15,0x4b,0x9b,0x69,0x03,0xf0,0x20,0x03,0xbb,0x60,0xbb,0x68,0x12,0x4a,0x12,0x4b,
			  0x9b,0x69,0x43,0xf0,0x04,0x03,0x93,0x61,0x0f,0x4b,0x9b,0x69,0x03,0xf0,0x04,0x03,0x7b,0x60,0x7b,0x68,
			  0x00,0x22,0x4f,0xf4,0x00,0x51,0x0c,0x48,0x00,0xf0,0x40,0xfb,0x4f,0xf4,0x00,0x53,0x3b,0x61,0x01,0x23,
			  0x7b,0x61,0x00,0x23,0xbb,0x61,0x02,0x23,0xfb,0x61,0x07,0xf1,0x10,0x03,0x19,0x46,0x04,0x48,0x00,0xf0,
			  0xd7,0xf9,0x00,0xbf,0x20,0x37,0xbd,0x46,0x80,0xbd,0x00,0xbf,0x00,0x10,0x02,0x40,0x00,0x10,0x01,0x40,
			  0x80,0xb4,0x00,0xaf,0x00,0xbf,0xbd,0x46,0x80,0xbc,0x70,0x47,0x80,0xb4,0x85,0xb0,0x00,0xaf,0x15,0x4a,
			  0x14,0x4b,0x9b,0x69,0x43,0xf0,0x01,0x03,0x93,0x61,0x12,0x4b,0x9b,0x69,0x03,0xf0,0x01,0x03,0xbb,0x60,
			  0xbb,0x68,0x0f,0x4a,0x0e,0x4b,0xdb,0x69,0x43,0xf0,0x80,0x53,0xd3,0x61,0x0c,0x4b,0xdb,0x69,0x03,0xf0,
			  0x80,0x53,0x7b,0x60,0x7b,0x68,0x0a,0x4b,0x5b,0x68,0xfb,0x60,0xfb,0x68,0x23,0xf0,0xe0,0x63,0xfb,0x60,
			  0xfb,0x68,0x43,0xf0,0x00,0x73,0xfb,0x60,0x04,0x4a,0xfb,0x68,0x53,0x60,0x00,0xbf,0x14,0x37,0xbd,0x46,
			  0x80,0xbc,0x70,0x47,0x00,0x10,0x02,0x40,0x00,0x00,0x01,0x40,0x80,0xb4,0x00,0xaf,0x00,0xbf,0xbd,0x46,
			  0x80,0xbc,0x70,0x47,0x80,0xb4,0x00,0xaf,0xfe,0xe7,0x80,0xb4,0x00,0xaf,0xfe,0xe7,0x80,0xb4,0x00,0xaf,
			  0xfe,0xe7,0x80,0xb4,0x00,0xaf,0xfe,0xe7,0x80,0xb4,0x00,0xaf,0x00,0xbf,0xbd,0x46,0x80,0xbc,0x70,0x47,
			  0x80,0xb4,0x00,0xaf,0x00,0xbf,0xbd,0x46,0x80,0xbc,0x70,0x47,0x80,0xb4,0x00,0xaf,0x00,0xbf,0xbd,0x46,
			  0x80,0xbc,0x70,0x47,0x80,0xb5,0x00,0xaf,0x00,0xf0,0x4e,0xf8,0x00,0xbf,0x80,0xbd,0x80,0xb4,0x00,0xaf,
			  0x00,0xbf,0xbd,0x46,0x80,0xbc,0x70,0x47,0x80,0xb5,0x00,0xaf,0x08,0x4a,0x08,0x4b,0x1b,0x68,0x43,0xf0,
			  0x10,0x03,0x13,0x60,0x03,0x20,0x00,0xf0,0x27,0xf9,0x00,0x20,0x00,0xf0,0x08,0xf8,0xff,0xf7,0x8e,0xff,
			  0x00,0x23,0x18,0x46,0x80,0xbd,0x00,0xbf,0x00,0x20,0x02,0x40,0x80,0xb5,0x82,0xb0,0x00,0xaf,0x78,0x60,
			  0x12,0x4b,0x1a,0x68,0x12,0x4b,0x1b,0x78,0x19,0x46,0x4f,0xf4,0x7a,0x73,0xb3,0xfb,0xf1,0xf3,0xb2,0xfb,
			  0xf3,0xf3,0x18,0x46,0x00,0xf0,0x31,0xf9,0x03,0x46,0x00,0x2b,0x01,0xd0,0x01,0x23,0x0e,0xe0,0x7b,0x68,
			  0x0f,0x2b,0x0a,0xd8,0x00,0x22,0x79,0x68,0x4f,0xf0,0xff,0x30,0x00,0xf0,0x07,0xf9,0x06,0x4a,0x7b,0x68,
			  0x13,0x60,0x00,0x23,0x00,0xe0,0x01,0x23,0x18,0x46,0x08,0x37,0xbd,0x46,0x80,0xbd,0x00,0x00,0x00,0x20,
			  0x08,0x00,0x00,0x20,0x04,0x00,0x00,0x20,0x80,0xb4,0x00,0xaf,0x05,0x4b,0x1b,0x78,0x1a,0x46,0x05,0x4b,
			  0x1b,0x68,0x13,0x44,0x03,0x4a,0x13,0x60,0x00,0xbf,0xbd,0x46,0x80,0xbc,0x70,0x47,0x08,0x00,0x00,0x20,
			  0x28,0x00,0x00,0x20,0x80,0xb4,0x00,0xaf,0x02,0x4b,0x1b,0x68,0x18,0x46,0xbd,0x46,0x80,0xbc,0x70,0x47,
			  0x28,0x00,0x00,0x20,0x80,0xb5,0x84,0xb0,0x00,0xaf,0x78,0x60,0xff,0xf7,0xf0,0xff,0xb8,0x60,0x7b,0x68,
			  0xfb,0x60,0xfb,0x68,0xb3,0xf1,0xff,0x3f,0x05,0xd0,0x09,0x4b,0x1b,0x78,0x1a,0x46,0xfb,0x68,0x13,0x44,
			  0xfb,0x60,0x00,0xbf,0xff,0xf7,0xe0,0xff,0x02,0x46,0xbb,0x68,0xd2,0x1a,0xfb,0x68,0x9a,0x42,0xf7,0xd3,
			  0x00,0xbf,0x10,0x37,0xbd,0x46,0x80,0xbd,0x08,0x00,0x00,0x20,0x80,0xb4,0x85,0xb0,0x00,0xaf,0x78,0x60,
			  0x7b,0x68,0x03,0xf0,0x07,0x03,0xfb,0x60,0x0c,0x4b,0xdb,0x68,0xbb,0x60,0xba,0x68,0x4f,0xf6,0xff,0x03,
			  0x13,0x40,0xbb,0x60,0xfb,0x68,0x1a,0x02,0xbb,0x68,0x13,0x43,0x43,0xf0,0xbf,0x63,0x43,0xf4,0x00,0x33,
			  0xbb,0x60,0x04,0x4a,0xbb,0x68,0xd3,0x60,0x00,0xbf,0x14,0x37,0xbd,0x46,0x80,0xbc,0x70,0x47,0x00,0xbf,
			  0x00,0xed,0x00,0xe0,0x80,0xb4,0x00,0xaf,0x04,0x4b,0xdb,0x68,0x1b,0x0a,0x03,0xf0,0x07,0x03,0x18,0x46,
			  0xbd,0x46,0x80,0xbc,0x70,0x47,0x00,0xbf,0x00,0xed,0x00,0xe0,0x80,0xb4,0x83,0xb0,0x00,0xaf,0x03,0x46,
			  0x39,0x60,0xfb,0x71,0x97,0xf9,0x07,0x30,0x00,0x2b,0x0a,0xdb,0x0d,0x49,0x97,0xf9,0x07,0x30,0x3a,0x68,
			  0xd2,0xb2,0x12,0x01,0xd2,0xb2,0x0b,0x44,0x83,0xf8,0x00,0x23,0x0a,0xe0,0x09,0x49,0xfb,0x79,0x03,0xf0,
			  0x0f,0x03,0x04,0x3b,0x3a,0x68,0xd2,0xb2,0x12,0x01,0xd2,0xb2,0x0b,0x44,0x1a,0x76,0x00,0xbf,0x0c,0x37,
			  0xbd,0x46,0x80,0xbc,0x70,0x47,0x00,0xbf,0x00,0xe1,0x00,0xe0,0x00,0xed,0x00,0xe0,0x80,0xb4,0x89,0xb0,
			  0x00,0xaf,0xf8,0x60,0xb9,0x60,0x7a,0x60,0xfb,0x68,0x03,0xf0,0x07,0x03,0xfb,0x61,0xfb,0x69,0xc3,0xf1,
			  0x07,0x03,0x04,0x2b,0x28,0xbf,0x04,0x23,0xbb,0x61,0xfb,0x69,0x04,0x33,0x06,0x2b,0x02,0xd9,0xfb,0x69,
			  0x03,0x3b,0x00,0xe0,0x00,0x23,0x7b,0x61,0x01,0x22,0xbb,0x69,0x02,0xfa,0x03,0xf3,0x5a,0x1e,0xbb,0x68,
			  0x1a,0x40,0x7b,0x69,0x9a,0x40,0x01,0x21,0x7b,0x69,0x01,0xfa,0x03,0xf3,0x59,0x1e,0x7b,0x68,0x0b,0x40,
			  0x13,0x43,0x18,0x46,0x24,0x37,0xbd,0x46,0x80,0xbc,0x70,0x47,0x80,0xb5,0x82,0xb0,0x00,0xaf,0x78,0x60,
			  0x7b,0x68,0x01,0x3b,0xb3,0xf1,0x80,0x7f,0x01,0xd3,0x01,0x23,0x0f,0xe0,0x0a,0x4a,0x7b,0x68,0x01,0x3b,
			  0x53,0x60,0x0f,0x21,0x4f,0xf0,0xff,0x30,0xff,0xf7,0x92,0xff,0x05,0x4b,0x00,0x22,0x9a,0x60,0x04,0x4b,
			  0x07,0x22,0x1a,0x60,0x00,0x23,0x18,0x46,0x08,0x37,0xbd,0x46,0x80,0xbd,0x00,0xbf,0x10,0xe0,0x00,0xe0,
			  0x80,0xb5,0x82,0xb0,0x00,0xaf,0x78,0x60,0x78,0x68,0xff,0xf7,0x4b,0xff,0x00,0xbf,0x08,0x37,0xbd,0x46,
			  0x80,0xbd,0x80,0xb5,0x86,0xb0,0x00,0xaf,0x03,0x46,0xb9,0x60,0x7a,0x60,0xfb,0x73,0x00,0x23,0x7b,0x61,
			  0xff,0xf7,0x60,0xff,0x78,0x61,0x7a,0x68,0xb9,0x68,0x78,0x69,0xff,0xf7,0x92,0xff,0x02,0x46,0x97,0xf9,
			  0x0f,0x30,0x11,0x46,0x18,0x46,0xff,0xf7,0x61,0xff,0x00,0xbf,0x18,0x37,0xbd,0x46,0x80,0xbd,0x80,0xb5,
			  0x82,0xb0,0x00,0xaf,0x78,0x60,0x78,0x68,0xff,0xf7,0xb0,0xff,0x03,0x46,0x18,0x46,0x08,0x37,0xbd,0x46,
			  0x80,0xbd,0x00,0x00,0x80,0xb4,0x8b,0xb0,0x00,0xaf,0x78,0x60,0x39,0x60,0x00,0x23,0x7b,0x62,0x00,0x23,
			  0x3b,0x62,0x27,0xe1,0x01,0x22,0x7b,0x6a,0x02,0xfa,0x03,0xf3,0xfb,0x61,0x3b,0x68,0x1a,0x68,0xfb,0x69,
			  0x13,0x40,0xbb,0x61,0xba,0x69,0xfb,0x69,0x9a,0x42,0x40,0xf0,0x16,0x81,0x3b,0x68,0x5b,0x68,0x12,0x2b,
			  0x34,0xd0,0x12,0x2b,0x0d,0xd8,0x02,0x2b,0x2b,0xd0,0x02,0x2b,0x04,0xd8,0x00,0x2b,0x31,0xd0,0x01,0x2b,
			  0x1c,0xd0,0x48,0xe0,0x03,0x2b,0x43,0xd0,0x11,0x2b,0x1b,0xd0,0x43,0xe0,0x89,0x4a,0x93,0x42,0x26,0xd0,
			  0x87,0x4a,0x93,0x42,0x06,0xd8,0x87,0x4a,0x93,0x42,0x20,0xd0,0x86,0x4a,0x93,0x42,0x1d,0xd0,0x36,0xe0,
			  0x85,0x4a,0x93,0x42,0x19,0xd0,0x85,0x4a,0x93,0x42,0x16,0xd0,0x84,0x4a,0x93,0x42,0x13,0xd0,0x2c,0xe0,
			  0x3b,0x68,0xdb,0x68,0x3b,0x62,0x28,0xe0,0x3b,0x68,0xdb,0x68,0x04,0x33,0x3b,0x62,0x23,0xe0,0x3b,0x68,
			  0xdb,0x68,0x08,0x33,0x3b,0x62,0x1e,0xe0,0x3b,0x68,0xdb,0x68,0x0c,0x33,0x3b,0x62,0x19,0xe0,0x3b,0x68,
			  0x9b,0x68,0x00,0x2b,0x02,0xd1,0x04,0x23,0x3b,0x62,0x12,0xe0,0x3b,0x68,0x9b,0x68,0x01,0x2b,0x05,0xd1,
			  0x08,0x23,0x3b,0x62,0x7b,0x68,0xfa,0x69,0x1a,0x61,0x08,0xe0,0x08,0x23,0x3b,0x62,0x7b,0x68,0xfa,0x69,
			  0x5a,0x61,0x02,0xe0,0x00,0x23,0x3b,0x62,0x00,0xbf,0xbb,0x69,0xff,0x2b,0x01,0xd8,0x7b,0x68,0x01,0xe0,
			  0x7b,0x68,0x04,0x33,0x7b,0x61,0xbb,0x69,0xff,0x2b,0x02,0xd8,0x7b,0x6a,0x9b,0x00,0x02,0xe0,0x7b,0x6a,
			  0x08,0x3b,0x9b,0x00,0x3b,0x61,0x7b,0x69,0x1a,0x68,0x0f,0x21,0x3b,0x69,0x01,0xfa,0x03,0xf3,0xdb,0x43,
			  0x1a,0x40,0x39,0x6a,0x3b,0x69,0x01,0xfa,0x03,0xf3,0x1a,0x43,0x7b,0x69,0x1a,0x60,0x3b,0x68,0x5b,0x68,
			  0x03,0xf0,0x80,0x53,0x00,0x2b,0x00,0xf0,0x96,0x80,0x59,0x4a,0x58,0x4b,0x9b,0x69,0x43,0xf0,0x01,0x03,
			  0x93,0x61,0x56,0x4b,0x9b,0x69,0x03,0xf0,0x01,0x03,0xbb,0x60,0xbb,0x68,0x54,0x4a,0x7b,0x6a,0x9b,0x08,
			  0x02,0x33,0x52,0xf8,0x23,0x30,0xfb,0x60,0x7b,0x6a,0x03,0xf0,0x03,0x03,0x9b,0x00,0x0f,0x22,0x02,0xfa,
			  0x03,0xf3,0xdb,0x43,0xfa,0x68,0x13,0x40,0xfb,0x60,0x7b,0x68,0x4b,0x4a,0x93,0x42,0x13,0xd0,0x7b,0x68,
			  0x4a,0x4a,0x93,0x42,0x0d,0xd0,0x7b,0x68,0x49,0x4a,0x93,0x42,0x07,0xd0,0x7b,0x68,0x48,0x4a,0x93,0x42,
			  0x01,0xd1,0x03,0x23,0x06,0xe0,0x04,0x23,0x04,0xe0,0x02,0x23,0x02,0xe0,0x01,0x23,0x00,0xe0,0x00,0x23,
			  0x7a,0x6a,0x02,0xf0,0x03,0x02,0x92,0x00,0x93,0x40,0xfa,0x68,0x13,0x43,0xfb,0x60,0x3a,0x49,0x7b,0x6a,
			  0x9b,0x08,0x02,0x33,0xfa,0x68,0x41,0xf8,0x23,0x20,0x3b,0x68,0x5b,0x68,0x03,0xf4,0x80,0x33,0x00,0x2b,
			  0x06,0xd0,0x39,0x49,0x38,0x4b,0x1a,0x68,0xbb,0x69,0x13,0x43,0x0b,0x60,0x06,0xe0,0x35,0x49,0x35,0x4b,
			  0x1a,0x68,0xbb,0x69,0xdb,0x43,0x13,0x40,0x0b,0x60,0x3b,0x68,0x5b,0x68,0x03,0xf4,0x00,0x33,0x00,0x2b,
			  0x06,0xd0,0x2f,0x49,0x2e,0x4b,0x5a,0x68,0xbb,0x69,0x13,0x43,0x4b,0x60,0x06,0xe0,0x2b,0x49,0x2b,0x4b,
			  0x5a,0x68,0xbb,0x69,0xdb,0x43,0x13,0x40,0x4b,0x60,0x3b,0x68,0x5b,0x68,0x03,0xf4,0x80,0x13,0x00,0x2b,
			  0x06,0xd0,0x25,0x49,0x24,0x4b,0x9a,0x68,0xbb,0x69,0x13,0x43,0x8b,0x60,0x06,0xe0,0x21,0x49,0x21,0x4b,
			  0x9a,0x68,0xbb,0x69,0xdb,0x43,0x13,0x40,0x8b,0x60,0x3b,0x68,0x5b,0x68,0x03,0xf4,0x00,0x13,0x00,0x2b,
			  0x06,0xd0,0x1b,0x49,0x1a,0x4b,0xda,0x68,0xbb,0x69,0x13,0x43,0xcb,0x60,0x06,0xe0,0x17,0x49,0x17,0x4b,
			  0xda,0x68,0xbb,0x69,0xdb,0x43,0x13,0x40,0xcb,0x60,0x7b,0x6a,0x01,0x33,0x7b,0x62,0x3b,0x68,0x1a,0x68,
			  0x7b,0x6a,0x22,0xfa,0x03,0xf3,0x00,0x2b,0x7f,0xf4,0xd0,0xae,0x00,0xbf,0x2c,0x37,0xbd,0x46,0x80,0xbc,
			  0x70,0x47,0x00,0xbf,0x00,0x00,0x21,0x10,0x00,0x00,0x11,0x10,0x00,0x00,0x12,0x10,0x00,0x00,0x31,0x10,
			  0x00,0x00,0x32,0x10,0x00,0x00,0x22,0x10,0x00,0x10,0x02,0x40,0x00,0x00,0x01,0x40,0x00,0x08,0x01,0x40,
			  0x00,0x0c,0x01,0x40,0x00,0x10,0x01,0x40,0x00,0x14,0x01,0x40,0x00,0x04,0x01,0x40,0x80,0xb4,0x83,0xb0,
			  0x00,0xaf,0x78,0x60,0x0b,0x46,0x7b,0x80,0x13,0x46,0x7b,0x70,0x7b,0x78,0x00,0x2b,0x03,0xd0,0x7a,0x88,
			  0x7b,0x68,0x1a,0x61,0x03,0xe0,0x7b,0x88,0x1a,0x04,0x7b,0x68,0x1a,0x61,0x00,0xbf,0x0c,0x37,0xbd,0x46,
			  0x80,0xbc,0x70,0x47,0x80,0xb4,0x85,0xb0,0x00,0xaf,0x78,0x60,0x0b,0x46,0x7b,0x80,0x7b,0x68,0xdb,0x68,
			  0xfb,0x60,0x7a,0x88,0xfb,0x68,0x13,0x40,0x1a,0x04,0xfb,0x68,0xd9,0x43,0x7b,0x88,0x0b,0x40,0x1a,0x43,
			  0x7b,0x68,0x1a,0x61,0x00,0xbf,0x14,0x37,0xbd,0x46,0x80,0xbc,0x70,0x47,0x00,0x00,0x80,0xb5,0x86,0xb0,
			  0x00,0xaf,0x78,0x60,0x7b,0x68,0x00,0x2b,0x01,0xd1,0x01,0x23,0x6c,0xe2,0x7b,0x68,0x1b,0x68,0x03,0xf0,
			  0x01,0x03,0x00,0x2b,0x00,0xf0,0x87,0x80,0x92,0x4b,0x5b,0x68,0x03,0xf0,0x0c,0x03,0x04,0x2b,0x0c,0xd0,
			  0x8f,0x4b,0x5b,0x68,0x03,0xf0,0x0c,0x03,0x08,0x2b,0x12,0xd1,0x8c,0x4b,0x5b,0x68,0x03,0xf4,0x80,0x33,
			  0xb3,0xf5,0x80,0x3f,0x0b,0xd1,0x89,0x4b,0x1b,0x68,0x03,0xf4,0x00,0x33,0x00,0x2b,0x6c,0xd0,0x7b,0x68,
			  0x5b,0x68,0x00,0x2b,0x68,0xd1,0x01,0x23,0x46,0xe2,0x7b,0x68,0x5b,0x68,0xb3,0xf5,0x80,0x3f,0x06,0xd1,
			  0x80,0x4a,0x80,0x4b,0x1b,0x68,0x43,0xf4,0x80,0x33,0x13,0x60,0x2e,0xe0,0x7b,0x68,0x5b,0x68,0x00,0x2b,
			  0x0c,0xd1,0x7b,0x4a,0x7a,0x4b,0x1b,0x68,0x23,0xf4,0x80,0x33,0x13,0x60,0x78,0x4a,0x77,0x4b,0x1b,0x68,
			  0x23,0xf4,0x80,0x23,0x13,0x60,0x1d,0xe0,0x7b,0x68,0x5b,0x68,0xb3,0xf5,0xa0,0x2f,0x0c,0xd1,0x72,0x4a,
			  0x71,0x4b,0x1b,0x68,0x43,0xf4,0x80,0x23,0x13,0x60,0x6f,0x4a,0x6e,0x4b,0x1b,0x68,0x43,0xf4,0x80,0x33,
			  0x13,0x60,0x0b,0xe0,0x6b,0x4a,0x6b,0x4b,0x1b,0x68,0x23,0xf4,0x80,0x33,0x13,0x60,0x68,0x4a,0x68,0x4b,
			  0x1b,0x68,0x23,0xf4,0x80,0x23,0x13,0x60,0x7b,0x68,0x5b,0x68,0x00,0x2b,0x13,0xd0,0xff,0xf7,0xf6,0xfc,
			  0x38,0x61,0x08,0xe0,0xff,0xf7,0xf2,0xfc,0x02,0x46,0x3b,0x69,0xd3,0x1a,0x64,0x2b,0x01,0xd9,0x03,0x23,
			  0xfa,0xe1,0x5d,0x4b,0x1b,0x68,0x03,0xf4,0x00,0x33,0x00,0x2b,0xf0,0xd0,0x14,0xe0,0xff,0xf7,0xe2,0xfc,
			  0x38,0x61,0x08,0xe0,0xff,0xf7,0xde,0xfc,0x02,0x46,0x3b,0x69,0xd3,0x1a,0x64,0x2b,0x01,0xd9,0x03,0x23,
			  0xe6,0xe1,0x53,0x4b,0x1b,0x68,0x03,0xf4,0x00,0x33,0x00,0x2b,0xf0,0xd1,0x00,0xe0,0x00,0xbf,0x7b,0x68,
			  0x1b,0x68,0x03,0xf0,0x02,0x03,0x00,0x2b,0x63,0xd0,0x4c,0x4b,0x5b,0x68,0x03,0xf0,0x0c,0x03,0x00,0x2b,
			  0x0b,0xd0,0x49,0x4b,0x5b,0x68,0x03,0xf0,0x0c,0x03,0x08,0x2b,0x1c,0xd1,0x46,0x4b,0x5b,0x68,0x03,0xf4,
			  0x80,0x33,0x00,0x2b,0x16,0xd1,0x43,0x4b,0x1b,0x68,0x03,0xf0,0x02,0x03,0x00,0x2b,0x05,0xd0,0x7b,0x68,
			  0x1b,0x69,0x01,0x2b,0x01,0xd0,0x01,0x23,0xba,0xe1,0x3d,0x49,0x3c,0x4b,0x1b,0x68,0x23,0xf0,0xf8,0x02,
			  0x7b,0x68,0x5b,0x69,0xdb,0x00,0x13,0x43,0x0b,0x60,0x3a,0xe0,0x7b,0x68,0x1b,0x69,0x00,0x2b,0x20,0xd0,
			  0x36,0x4b,0x01,0x22,0x1a,0x60,0xff,0xf7,0x97,0xfc,0x38,0x61,0x08,0xe0,0xff,0xf7,0x93,0xfc,0x02,0x46,
			  0x3b,0x69,0xd3,0x1a,0x02,0x2b,0x01,0xd9,0x03,0x23,0x9b,0xe1,0x2d,0x4b,0x1b,0x68,0x03,0xf0,0x02,0x03,
			  0x00,0x2b,0xf0,0xd0,0x2a,0x49,0x2a,0x4b,0x1b,0x68,0x23,0xf0,0xf8,0x02,0x7b,0x68,0x5b,0x69,0xdb,0x00,
			  0x13,0x43,0x0b,0x60,0x15,0xe0,0x26,0x4b,0x00,0x22,0x1a,0x60,0xff,0xf7,0x76,0xfc,0x38,0x61,0x08,0xe0,
			  0xff,0xf7,0x72,0xfc,0x02,0x46,0x3b,0x69,0xd3,0x1a,0x02,0x2b,0x01,0xd9,0x03,0x23,0x7a,0xe1,0x1d,0x4b,
			  0x1b,0x68,0x03,0xf0,0x02,0x03,0x00,0x2b,0xf0,0xd1,0x7b,0x68,0x1b,0x68,0x03,0xf0,0x08,0x03,0x00,0x2b,
			  0x3a,0xd0,0x7b,0x68,0x9b,0x69,0x00,0x2b,0x19,0xd0,0x17,0x4b,0x01,0x22,0x1a,0x60,0xff,0xf7,0x56,0xfc,
			  0x38,0x61,0x08,0xe0,0xff,0xf7,0x52,0xfc,0x02,0x46,0x3b,0x69,0xd3,0x1a,0x02,0x2b,0x01,0xd9,0x03,0x23,
			  0x5a,0xe1,0x0d,0x4b,0x5b,0x6a,0x03,0xf0,0x02,0x03,0x00,0x2b,0xf0,0xd0,0x01,0x20,0x00,0xf0,0xa8,0xfa,
			  0x1c,0xe0,0x0a,0x4b,0x00,0x22,0x1a,0x60,0xff,0xf7,0x3c,0xfc,0x38,0x61,0x0f,0xe0,0xff,0xf7,0x38,0xfc,
			  0x02,0x46,0x3b,0x69,0xd3,0x1a,0x02,0x2b,0x08,0xd9,0x03,0x23,0x40,0xe1,0x00,0xbf,0x00,0x10,0x02,0x40,
			  0x00,0x00,0x42,0x42,0x80,0x04,0x42,0x42,0x9e,0x4b,0x5b,0x6a,0x03,0xf0,0x02,0x03,0x00,0x2b,0xe9,0xd1,
			  0x7b,0x68,0x1b,0x68,0x03,0xf0,0x04,0x03,0x00,0x2b,0x00,0xf0,0xa6,0x80,0x00,0x23,0xfb,0x75,0x97,0x4b,
			  0xdb,0x69,0x03,0xf0,0x80,0x53,0x00,0x2b,0x0d,0xd1,0x94,0x4a,0x93,0x4b,0xdb,0x69,0x43,0xf0,0x80,0x53,
			  0xd3,0x61,0x91,0x4b,0xdb,0x69,0x03,0xf0,0x80,0x53,0xbb,0x60,0xbb,0x68,0x01,0x23,0xfb,0x75,0x8e,0x4b,
			  0x1b,0x68,0x03,0xf4,0x80,0x73,0x00,0x2b,0x18,0xd1,0x8b,0x4a,0x8a,0x4b,0x1b,0x68,0x43,0xf4,0x80,0x73,
			  0x13,0x60,0xff,0xf7,0xf9,0xfb,0x38,0x61,0x08,0xe0,0xff,0xf7,0xf5,0xfb,0x02,0x46,0x3b,0x69,0xd3,0x1a,
			  0x64,0x2b,0x01,0xd9,0x03,0x23,0xfd,0xe0,0x81,0x4b,0x1b,0x68,0x03,0xf4,0x80,0x73,0x00,0x2b,0xf0,0xd0,
			  0x7b,0x68,0xdb,0x68,0x01,0x2b,0x06,0xd1,0x7b,0x4a,0x7b,0x4b,0x1b,0x6a,0x43,0xf0,0x01,0x03,0x13,0x62,
			  0x2d,0xe0,0x7b,0x68,0xdb,0x68,0x00,0x2b,0x0c,0xd1,0x76,0x4a,0x75,0x4b,0x1b,0x6a,0x23,0xf0,0x01,0x03,
			  0x13,0x62,0x73,0x4a,0x72,0x4b,0x1b,0x6a,0x23,0xf0,0x04,0x03,0x13,0x62,0x1c,0xe0,0x7b,0x68,0xdb,0x68,
			  0x05,0x2b,0x0c,0xd1,0x6d,0x4a,0x6d,0x4b,0x1b,0x6a,0x43,0xf0,0x04,0x03,0x13,0x62,0x6a,0x4a,0x6a,0x4b,
			  0x1b,0x6a,0x43,0xf0,0x01,0x03,0x13,0x62,0x0b,0xe0,0x67,0x4a,0x66,0x4b,0x1b,0x6a,0x23,0xf0,0x01,0x03,
			  0x13,0x62,0x64,0x4a,0x63,0x4b,0x1b,0x6a,0x23,0xf0,0x04,0x03,0x13,0x62,0x7b,0x68,0xdb,0x68,0x00,0x2b,
			  0x15,0xd0,0xff,0xf7,0xa9,0xfb,0x38,0x61,0x0a,0xe0,0xff,0xf7,0xa5,0xfb,0x02,0x46,0x3b,0x69,0xd3,0x1a,
			  0x41,0xf2,0x88,0x32,0x93,0x42,0x01,0xd9,0x03,0x23,0xab,0xe0,0x57,0x4b,0x1b,0x6a,0x03,0xf0,0x02,0x03,
			  0x00,0x2b,0xee,0xd0,0x14,0xe0,0xff,0xf7,0x93,0xfb,0x38,0x61,0x0a,0xe0,0xff,0xf7,0x8f,0xfb,0x02,0x46,
			  0x3b,0x69,0xd3,0x1a,0x41,0xf2,0x88,0x32,0x93,0x42,0x01,0xd9,0x03,0x23,0x95,0xe0,0x4c,0x4b,0x1b,0x6a,
			  0x03,0xf0,0x02,0x03,0x00,0x2b,0xee,0xd1,0xfb,0x7d,0x01,0x2b,0x05,0xd1,0x48,0x4a,0x47,0x4b,0xdb,0x69,
			  0x23,0xf0,0x80,0x53,0xd3,0x61,0x7b,0x68,0xdb,0x69,0x00,0x2b,0x00,0xf0,0x81,0x80,0x42,0x4b,0x5b,0x68,
			  0x03,0xf0,0x0c,0x03,0x08,0x2b,0x61,0xd0,0x7b,0x68,0xdb,0x69,0x02,0x2b,0x46,0xd1,0x3f,0x4b,0x00,0x22,
			  0x1a,0x60,0xff,0xf7,0x63,0xfb,0x38,0x61,0x08,0xe0,0xff,0xf7,0x5f,0xfb,0x02,0x46,0x3b,0x69,0xd3,0x1a,
			  0x02,0x2b,0x01,0xd9,0x03,0x23,0x67,0xe0,0x35,0x4b,0x1b,0x68,0x03,0xf0,0x00,0x73,0x00,0x2b,0xf0,0xd1,
			  0x7b,0x68,0x1b,0x6a,0xb3,0xf5,0x80,0x3f,0x08,0xd1,0x30,0x49,0x2f,0x4b,0x5b,0x68,0x23,0xf4,0x00,0x32,
			  0x7b,0x68,0x9b,0x68,0x13,0x43,0x4b,0x60,0x2b,0x48,0x2b,0x4b,0x5b,0x68,0x23,0xf4,0x74,0x12,0x7b,0x68,
			  0x19,0x6a,0x7b,0x68,0x5b,0x6a,0x0b,0x43,0x13,0x43,0x43,0x60,0x27,0x4b,0x01,0x22,0x1a,0x60,0xff,0xf7,
			  0x33,0xfb,0x38,0x61,0x08,0xe0,0xff,0xf7,0x2f,0xfb,0x02,0x46,0x3b,0x69,0xd3,0x1a,0x02,0x2b,0x01,0xd9,
			  0x03,0x23,0x37,0xe0,0x1d,0x4b,0x1b,0x68,0x03,0xf0,0x00,0x73,0x00,0x2b,0xf0,0xd0,0x2f,0xe0,0x1c,0x4b,
			  0x00,0x22,0x1a,0x60,0xff,0xf7,0x1c,0xfb,0x38,0x61,0x08,0xe0,0xff,0xf7,0x18,0xfb,0x02,0x46,0x3b,0x69,
			  0xd3,0x1a,0x02,0x2b,0x01,0xd9,0x03,0x23,0x20,0xe0,0x12,0x4b,0x1b,0x68,0x03,0xf0,0x00,0x73,0x00,0x2b,
			  0xf0,0xd1,0x18,0xe0,0x7b,0x68,0xdb,0x69,0x01,0x2b,0x01,0xd1,0x01,0x23,0x13,0xe0,0x0b,0x4b,0x5b,0x68,
			  0xfb,0x60,0xfb,0x68,0x03,0xf4,0x80,0x32,0x7b,0x68,0x1b,0x6a,0x9a,0x42,0x06,0xd1,0xfb,0x68,0x03,0xf4,
			  0x70,0x12,0x7b,0x68,0x5b,0x6a,0x9a,0x42,0x01,0xd0,0x01,0x23,0x00,0xe0,0x00,0x23,0x18,0x46,0x18,0x37,
			  0xbd,0x46,0x80,0xbd,0x00,0x10,0x02,0x40,0x00,0x70,0x00,0x40,0x60,0x00,0x42,0x42,0x80,0xb5,0x84,0xb0,
			  0x00,0xaf,0x78,0x60,0x39,0x60,0x7b,0x68,0x00,0x2b,0x01,0xd1,0x01,0x23,0xd0,0xe0,0x6a,0x4b,0x1b,0x68,
			  0x03,0xf0,0x07,0x02,0x3b,0x68,0x9a,0x42,0x10,0xd2,0x67,0x49,0x66,0x4b,0x1b,0x68,0x23,0xf0,0x07,0x02,
			  0x3b,0x68,0x13,0x43,0x0b,0x60,0x63,0x4b,0x1b,0x68,0x03,0xf0,0x07,0x02,0x3b,0x68,0x9a,0x42,0x01,0xd0,
			  0x01,0x23,0xb8,0xe0,0x7b,0x68,0x1b,0x68,0x03,0xf0,0x02,0x03,0x00,0x2b,0x20,0xd0,0x7b,0x68,0x1b,0x68,
			  0x03,0xf0,0x04,0x03,0x00,0x2b,0x05,0xd0,0x59,0x4a,0x59,0x4b,0x5b,0x68,0x43,0xf4,0xe0,0x63,0x53,0x60,
			  0x7b,0x68,0x1b,0x68,0x03,0xf0,0x08,0x03,0x00,0x2b,0x05,0xd0,0x53,0x4a,0x53,0x4b,0x5b,0x68,0x43,0xf4,
			  0x60,0x53,0x53,0x60,0x50,0x49,0x50,0x4b,0x5b,0x68,0x23,0xf0,0xf0,0x02,0x7b,0x68,0x9b,0x68,0x13,0x43,
			  0x4b,0x60,0x7b,0x68,0x1b,0x68,0x03,0xf0,0x01,0x03,0x00,0x2b,0x40,0xd0,0x7b,0x68,0x5b,0x68,0x01,0x2b,
			  0x07,0xd1,0x47,0x4b,0x1b,0x68,0x03,0xf4,0x00,0x33,0x00,0x2b,0x15,0xd1,0x01,0x23,0x7f,0xe0,0x7b,0x68,
			  0x5b,0x68,0x02,0x2b,0x07,0xd1,0x41,0x4b,0x1b,0x68,0x03,0xf0,0x00,0x73,0x00,0x2b,0x09,0xd1,0x01,0x23,
			  0x73,0xe0,0x3d,0x4b,0x1b,0x68,0x03,0xf0,0x02,0x03,0x00,0x2b,0x01,0xd1,0x01,0x23,0x6b,0xe0,0x39,0x49,
			  0x38,0x4b,0x5b,0x68,0x23,0xf0,0x03,0x02,0x7b,0x68,0x5b,0x68,0x13,0x43,0x4b,0x60,0xff,0xf7,0x6c,0xfa,
			  0xf8,0x60,0x0a,0xe0,0xff,0xf7,0x68,0xfa,0x02,0x46,0xfb,0x68,0xd3,0x1a,0x41,0xf2,0x88,0x32,0x93,0x42,
			  0x01,0xd9,0x03,0x23,0x53,0xe0,0x2d,0x4b,0x5b,0x68,0x03,0xf0,0x0c,0x02,0x7b,0x68,0x5b,0x68,0x9b,0x00,
			  0x9a,0x42,0xeb,0xd1,0x27,0x4b,0x1b,0x68,0x03,0xf0,0x07,0x02,0x3b,0x68,0x9a,0x42,0x10,0xd9,0x24,0x49,
			  0x23,0x4b,0x1b,0x68,0x23,0xf0,0x07,0x02,0x3b,0x68,0x13,0x43,0x0b,0x60,0x20,0x4b,0x1b,0x68,0x03,0xf0,
			  0x07,0x02,0x3b,0x68,0x9a,0x42,0x01,0xd0,0x01,0x23,0x32,0xe0,0x7b,0x68,0x1b,0x68,0x03,0xf0,0x04,0x03,
			  0x00,0x2b,0x08,0xd0,0x19,0x49,0x19,0x4b,0x5b,0x68,0x23,0xf4,0xe0,0x62,0x7b,0x68,0xdb,0x68,0x13,0x43,
			  0x4b,0x60,0x7b,0x68,0x1b,0x68,0x03,0xf0,0x08,0x03,0x00,0x2b,0x09,0xd0,0x12,0x49,0x11,0x4b,0x5b,0x68,
			  0x23,0xf4,0x60,0x52,0x7b,0x68,0x1b,0x69,0xdb,0x00,0x13,0x43,0x4b,0x60,0x00,0xf0,0x21,0xf8,0x01,0x46,
			  0x0b,0x4b,0x5b,0x68,0x1b,0x09,0x03,0xf0,0x0f,0x03,0x0a,0x4a,0xd3,0x5c,0x21,0xfa,0x03,0xf3,0x09,0x4a,
			  0x13,0x60,0x09,0x4b,0x1b,0x68,0x18,0x46,0xff,0xf7,0xca,0xf9,0x00,0x23,0x18,0x46,0x10,0x37,0xbd,0x46,
			  0x80,0xbd,0x00,0xbf,0x00,0x20,0x02,0x40,0x00,0x10,0x02,0x40,0xec,0xd1,0x00,0x08,0x00,0x00,0x00,0x20,
			  0x04,0x00,0x00,0x20,0x90,0xb4,0x8a,0xb0,0x00,0xaf,0x2a,0x4b,0x3c,0x1d,0x0f,0xcb,0x84,0xe8,0x0f,0x00,
			  0x28,0x4b,0x1b,0x88,0x3b,0x80,0x00,0x23,0xfb,0x61,0x00,0x23,0xbb,0x61,0x00,0x23,0x7b,0x62,0x00,0x23,
			  0x7b,0x61,0x00,0x23,0x3b,0x62,0x23,0x4b,0x5b,0x68,0xfb,0x61,0xfb,0x69,0x03,0xf0,0x0c,0x03,0x04,0x2b,
			  0x02,0xd0,0x08,0x2b,0x03,0xd0,0x2d,0xe0,0x1e,0x4b,0x3b,0x62,0x2d,0xe0,0xfb,0x69,0x9b,0x0c,0x03,0xf0,
			  0x0f,0x03,0x07,0xf1,0x28,0x02,0x13,0x44,0x13,0xf8,0x24,0x3c,0x7b,0x61,0xfb,0x69,0x03,0xf4,0x80,0x33,
			  0x00,0x2b,0x13,0xd0,0x14,0x4b,0x5b,0x68,0x5b,0x0c,0x03,0xf0,0x01,0x03,0x07,0xf1,0x28,0x02,0x13,0x44,
			  0x13,0xf8,0x28,0x3c,0xbb,0x61,0x7b,0x69,0x0f,0x4a,0x02,0xfb,0x03,0xf2,0xbb,0x69,0xb2,0xfb,0xf3,0xf3,
			  0x7b,0x62,0x04,0xe0,0x7b,0x69,0x0c,0x4a,0x02,0xfb,0x03,0xf3,0x7b,0x62,0x7b,0x6a,0x3b,0x62,0x02,0xe0,
			  0x07,0x4b,0x3b,0x62,0x00,0xbf,0x3b,0x6a,0x18,0x46,0x28,0x37,0xbd,0x46,0x90,0xbc,0x70,0x47,0x00,0xbf,
			  0xd8,0xd1,0x00,0x08,0xe8,0xd1,0x00,0x08,0x00,0x10,0x02,0x40,0x00,0x12,0x7a,0x00,0x00,0x09,0x3d,0x00,
			  0x80,0xb4,0x85,0xb0,0x00,0xaf,0x78,0x60,0x0a,0x4b,0x1b,0x68,0x0a,0x4a,0xa2,0xfb,0x03,0x23,0x5b,0x0a,
			  0x7a,0x68,0x02,0xfb,0x03,0xf3,0xfb,0x60,0x00,0xbf,0xfb,0x68,0x5a,0x1e,0xfa,0x60,0x00,0x2b,0xf9,0xd1,
			  0x00,0xbf,0x14,0x37,0xbd,0x46,0x80,0xbc,0x70,0x47,0x00,0xbf,0x00,0x00,0x00,0x20,0xd3,0x4d,0x62,0x10,
			  0x00,0x21,0x03,0xe0,0x0b,0x4b,0x5b,0x58,0x43,0x50,0x04,0x31,0x0a,0x48,0x0b,0x4b,0x42,0x18,0x9a,0x42,
			  0xf6,0xd3,0x0a,0x4a,0x02,0xe0,0x00,0x23,0x42,0xf8,0x04,0x3b,0x08,0x4b,0x9a,0x42,0xf9,0xd3,0xff,0xf7,
			  0x09,0xf9,0x00,0xf0,0x0f,0xf8,0xfe,0xf7,0xff,0xff,0x70,0x47,0x04,0xd2,0x00,0x08,0x00,0x00,0x00,0x20,
			  0x0c,0x00,0x00,0x20,0x0c,0x00,0x00,0x20,0x2c,0x00,0x00,0x20,0xfe,0xe7,0x00,0x00,0x70,0xb5,0x00,0x25,
			  0x0c,0x4e,0x0d,0x4c,0xa4,0x1b,0xa4,0x10,0xa5,0x42,0x09,0xd1,0x00,0xf0,0x22,0xf8,0x00,0x25,0x0a,0x4e,
			  0x0a,0x4c,0xa4,0x1b,0xa4,0x10,0xa5,0x42,0x05,0xd1,0x70,0xbd,0x56,0xf8,0x25,0x30,0x98,0x47,0x01,0x35,
			  0xee,0xe7,0x56,0xf8,0x25,0x30,0x98,0x47,0x01,0x35,0xf2,0xe7,0xfc,0xd1,0x00,0x08,0xfc,0xd1,0x00,0x08,
			  0xfc,0xd1,0x00,0x08,0x00,0xd2,0x00,0x08,0x03,0x46,0x02,0x44,0x93,0x42,0x00,0xd1,0x70,0x47,0x03,0xf8,
			  0x01,0x1b,0xf9,0xe7,0xf8,0xb5,0x00,0xbf,0xf8,0xbc,0x08,0xbc,0x9e,0x46,0x70,0x47,0xf8,0xb5,0x00,0xbf,
			  0xf8,0xbc,0x08,0xbc,0x9e,0x46,0x70,0x47,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
			  0x0e,0x0f,0x10,0x10,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
			  0x06,0x07,0x08,0x09,0x31,0xc1,0x00,0x08,0x0d,0xc1,0x00,0x08,0x00,0x24,0xf4,0x00,0x10,0x00,0x00,0x00,
			  0x01,0x00,0x00,0x00};




	uint16_t value = 0;
	uint32_t x = 0;



	for(uint32_t adres = APPLICATION_START_ADDRESS; adres < 4623 + APPLICATION_START_ADDRESS; adres = adres+2){

		value = 0;
		value = array[x+1] << 8;
		value = value | array[x];

		x = x+2;

		Write_Flash(adres , value);
	}
}

void Write_Flash (uint32_t adr, uint16_t data)
{
	FLASH->KEYR=0x45670123;  					// Silme veya yazma islemi yapilmadan önce Flash kilidi mutlaka açilmalidir.
  FLASH->KEYR=0xCDEF89AB;						// FLASH->KEYR registerine KEY1 ve KEY2 degerleri atandiginda Flash kilidi açilir.
  FLASH->CR|=0x00000001;            //PG enable
  *(__IO uint16_t*)adr = data;      //istenen adrese istenen data yaziliyor
  while((FLASH->SR&0x00000001));    //Islem bitene kadar bekle(BUSY kontrol ediliyor)
	FLASH->CR=0x00000080;  					  //FLASH_CR registeri resetlendiginde FLASH kiltlenmis olur
}
/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */

  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/


ledblink kodu;
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
	  HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
	  HAL_Delay(500);

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL2;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */

  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Kullandığım ide; Atollic True Studio
Kullandığım işlemci: STM32F103C8

Led blink uygulaması C portunun 13 numaralı bacağına bağlı ledi 500ms aralıklarla toggle etmektedir. Derleyiciye bin dosyası üretmesi gerekli ayarlamaları yaptım. Sırasıyla Proje dosyasına sağ tıklayarak; Properties//C/C++ Build//Settings//OutputFormat kısmından ConvertBuildOutput işaretlendikten sonra binary'i seçeceğiz.

Ardından kantirici üstad'ın paylaştığı web sayfasından üretmiş olduğumuz binary dosyasını yükleyip seçeneklerden C/C++ seçeneğini seçip array dosyası üretmemiz gerekecek. Daha sonra üretilen kodları kopyalayıp bootloader dosyasında programUpdate fonksiyonuna olduğu gibi yapıştırıyoruz. sonra açılışta programupdate fonksiyonunu çağırıyoruz. yüklüyor sonra programın olduğu kısıma jump edilip program çalışmaya başlıyor.


Şimdi üstadlar, biraz daha ileri seviyeye taşımak istiyorum işi.Bu konuda fikirlerinizi yönlendirmelerinizi bekliyorum. Yapmak istediğim işlemciyi tftp server ya da web server modunda çalıştırıp binary dosyasını işlemciye göndermek ve yeni programın çalışmasını sağlamak. Bunun için yazmış olduğum kod parçacığı aşağıda;

if(flagHtmlGen == 1){
   strcpy((char*)buf,"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n");
   strcat((char*)buf, "<html><head>");
   strcat((char*)buf, "<title>Test</title>");
   strcat((char*)buf, "<link href='deneme' rel='stylesheet'></link>");
   strcat((char*)buf, "</head>");
   strcat((char*)buf, "<body>");
   strcat((char*)buf, "<div class='jumbotron'>");
   strcat((char*)buf, "<center><h1>Deneme</center></h1>");

   strcat((char*)buf, "<form action ='/upload.cgi' enctype='multipart/form-data' method='post'>");
   strcat((char*)buf, "<center><p>Please specify a binary file to upload into STM32F103C8 flash:</center>");
   strcat((char*)buf, "<br>");
   strcat((char*)buf, "<center><input type='file' name='datafile' size='40'></center>");
   strcat((char*)buf, " </p>");
   strcat((char*)buf, "<div>");
   strcat((char*)buf, "<center><input type='submit' value='Upload'></center>");
   strcat((char*)buf, "</div></form>");

   strcat((char*)buf, "</body>");
   strcat((char*)buf, "</html>");

   blocklen = strlen((char*)buf);

   ret = send(sn,buf,blocklen);
   if(ret < 0)
      {
         HAL_GPIO_WritePin(led1Port,led1Pin,1);
         close(sn);
         return ret;
      }
      else
      {
      HAL_GPIO_WritePin(led2Port,led2Pin,1);
      HTTP_reset(sn);
      disconnect(sn);
      }
   }

bu şekilde işlemciyi web server şeklinde çalıştırıp içerideki buffer'a veriyi alıyorum. ancak gelen veri web sayfasından gelen bir sürü verileride taşıyor. Bu verileri bir şekilde ayrıştırmam lazım. Biraz html bilgiside istiyor yapılacak işlem. Örneğin en basit haliyle bir login sayfası yapıp gelen verilerden şifre ve kullanıcı adı bilgisini nasıl alabilirim?  Yardımlarınızı bekliyorum.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

mfurkanuyar


gokhangokcen

@mfurkanuyar üstad, gördüm linki daha önceden. Arkadaş esp serisi ile yapmış ve TFTP server olarak uygulamış. Ben ise direkt browser ile girip medya dosyası yükler gibi binary dosyasını seçip işlemciyi güncellemek istiyorum.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

@z üstad linkteki kütüphane vs.'nin seninle bir ilgisi yok dimi? W5500 ile program güncellemesi yapan bir link buldum. Kodları çözmeye anlamaya çalışıyorum. Soracak olduğum bir kaç şey vardı.
https://www.programmersought.com/article/61175072150/
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

Emre_Tuncay_

Aşağıdaki linkte stm32'nin ymodem dosya transferi kullanılarak bootloader tasarımı dökümanı var. Bu dökümanda proje dosyalarının linkleride verilmiş. .bin uzantılı dosyaların nasıl gönderileceği ile alakalı iyi bir fikir oluşturuyor. Bu dökümanda bahsedilen proje ile kendi bootloaderimi tasarladım. Bootloader kısmını kendim yazmıştım sadece uart'tan .bin dosyası aktarma işini örnek projeden aldım.

https://www.st.com/resource/en/application_note/dm00161366-stm32-inapplication-programming-iap-using-the-usart-stmicroelectronics.pdf