{"id":11261,"date":"2026-01-04T18:36:49","date_gmt":"2026-01-04T09:36:49","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=11261"},"modified":"2026-01-05T13:15:03","modified_gmt":"2026-01-05T04:15:03","slug":"%eb%b6%80%ed%8a%b8%eb%a1%9c%eb%8d%94-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98-%eb%b6%84%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=11261","title":{"rendered":"\ubd80\ud2b8\ub85c\ub354 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubd84\ub9ac"},"content":{"rendered":"<h1>\ubd80\ud2b8\ub85c\ub354 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubd84\ub9ac<\/h1>\n<p>STM32H563ZI\uc640 \uac19\uc740 \uace0\uc131\ub2a5 MCU\uc5d0\uc11c \ubd80\ud2b8\ub85c\ub354(Bootloader)\uc640 \uc0ac\uc6a9\uc790 \uc560\ud50c\ub9ac\ucf00\uc774\uc158(Application)\uc744 \ubd84\ub9ac\ud558\ub294 \uac83\uc740 \ud38c\uc6e8\uc5b4 \uc5c5\ub370\uc774\ud2b8(OTA)\ub098 \uc2dc\uc2a4\ud15c \ubcf5\uad6c \uae30\ub2a5\uc744 \uc704\ud574 \ub9e4\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uacfc\uc815\uc758 \ud575\uc2ec\uc740 <strong>&quot;\uba54\ubaa8\ub9ac \uc601\uc5ed\uc744 \ub098\ub204\uace0, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc2dc\uc791 \uc704\uce58\ub97c \uc7ac\uc124\uc815\ud558\ub294 \uac83&quot;<\/strong>\uc785\ub2c8\ub2e4.<\/p>\n<hr \/>\n<h3>1. \uba54\ubaa8\ub9ac \ub9f5 \uc124\uacc4 (Memory Partitioning)<\/h3>\n<p>\uac00\uc7a5 \uba3c\uc800 Flash \uba54\ubaa8\ub9ac(\ucd1d 2MB)\ub97c \uc5b4\ub5bb\uac8c \ub098\ub20c\uc9c0 \uacb0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>Bootloader \uc601\uc5ed:<\/strong> <code>0x0800 0000<\/code>\ubd80\ud130 \uc2dc\uc791 (\uc608: 128KB \ud560\ub2f9)<\/li>\n<li><strong>Application \uc601\uc5ed:<\/strong> \ubd80\ud2b8\ub85c\ub354 \ubc14\ub85c \ub2e4\uc74c \uc8fc\uc18c\ubd80\ud130 \uc2dc\uc791 (\uc608: <code>0x0802 0000<\/code>)<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th>\uc601\uc5ed<\/th>\n<th>\uc2dc\uc791 \uc8fc\uc18c (From)<\/th>\n<th>\ub05d \uc8fc\uc18c (To)<\/th>\n<th>\uc124\uba85<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Bootloader<\/td>\n<td>0x0800 0000<\/td>\n<td>0x0801 FFFF<\/td>\n<td>\ub9ac\uc14b \uc2dc \uc790\ub3d9 \uc2e4\ud589<\/td>\n<\/tr>\n<tr>\n<td>Application<\/td>\n<td>0x0802 0000<\/td>\n<td>0x081F FFFF<\/td>\n<td>\ubd80\ud2b8\ub85c\ub354\uac00 \uc810\ud504\ud558\ub294 \uc704\uce58<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>2. \ud504\ub85c\uc81d\ud2b8 \uc124\uc815 \ubcc0\uacbd (Application \uce21)<\/h3>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub85c\uc81d\ud2b8\ub294 \uc790\uc2e0\uc774 <code>0x0802 0000<\/code>\uc5d0\uc11c \uc2e4\ud589\ub420 \uac83\uc774\ub77c\ub294 \uc810\uc744 \uc54c\uace0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h4>\u2460 \ub9c1\ucee4 \uc2a4\ud06c\ub9bd\ud2b8(.ld \ud30c\uc77c) \uc218\uc815<\/h4>\n<p>\ud504\ub85c\uc81d\ud2b8 \ub0b4\uc758 <code>STM32H563ZITX_FLASH.ld<\/code> \ud30c\uc77c\uc744 \uc5f4\uc5b4 <code>MEMORY<\/code> \uc139\uc158\uc744 \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-ld\">\/* \uc218\uc815 \uc804 *\/\nFLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 2048K\n\n\/* \uc218\uc815 \ud6c4 (\ubd80\ud2b8\ub85c\ub354\uc5d0 128KB\ub97c \uc900 \uacbd\uc6b0) *\/\nFLASH (rx)      : ORIGIN = 0x08020000, LENGTH = 1920K \/* 2048 - 128 = 1920 *\/\n<\/code><\/pre>\n<h4>\u2461 \ubca1\ud130 \ud14c\uc774\ube14 \uc624\ud504\uc14b \uc124\uc815 (VectTab Offset)<\/h4>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc2dc\uc791\ub420 \ub54c \uc778\ud130\ub7fd\ud2b8 \ubca1\ud130 \ud14c\uc774\ube14\uc758 \uc704\uce58\ub97c \uc54c\ub824\uc918\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>Core\/Src\/system_stm32h5xx.c<\/code> \ud30c\uc77c\uc5d0\uc11c <code>#define VECT_TAB_OFFSET<\/code> \uac12\uc744 \ucc3e\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uac12\uc744 <code>0x00020000U<\/code> (\ubd80\ud2b8\ub85c\ub354 \ud06c\uae30\ub9cc\ud07c\uc758 \uc624\ud504\uc14b)\ub85c \uc218\uc815\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<hr \/>\n<h3>3. \ubd80\ud2b8\ub85c\ub354\uc5d0\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \uc810\ud504 (Jump Code)<\/h3>\n<p>\ubd80\ud2b8\ub85c\ub354\uc758 \uc5ed\ud560\uc774 \ub05d\ub098\uba74 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc2dc\uc791 \uc9c0\uc810\uc73c\ub85c \uc81c\uc5b4\uad8c\uc744 \ub118\uaca8\uc918\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\ud575\uc2ec \ub85c\uc9c1:<\/strong><\/p>\n<ol>\n<li>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc601\uc5ed\uc758 <strong>\uc2a4\ud0dd \ud3ec\uc778\ud130(MSP)<\/strong> \uc8fc\uc18c\ub97c \uc77d\uc5b4\uc640 \uc124\uc815\ud569\ub2c8\ub2e4.<\/li>\n<li>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <strong>\ub9ac\uc14b \ud578\ub4e4\ub7ec(Reset Handler)<\/strong> \uc8fc\uc18c\ub85c \uc810\ud504\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n<pre><code class=\"language-c\">typedef void (*pFunction)(void);\n\nvoid Jump_To_Application(void) {\n    uint32_t JumpAddress = *(__IO uint32_t*)(0x08020000 + 4);\n    pFunction JumpToApp = (pFunction)JumpAddress;\n\n    \/\/ 1. \ubaa8\ub4e0 \uc778\ud130\ub7fd\ud2b8 \ube44\ud65c\uc131\ud654\n    __disable_irq();\n\n    \/\/ 2. MSP (Main Stack Pointer) \uc124\uc815\n    __set_MSP(*(__IO uint32_t*)0x08020000);\n\n    \/\/ 3. \uc810\ud504\n    JumpToApp();\n}\n<\/code><\/pre>\n<hr \/>\n<h3>4. \uc8fc\uc758\uc0ac\ud56d (\uc911\uc694!)<\/h3>\n<ul>\n<li><strong>Peripheral Reset:<\/strong> \ubd80\ud2b8\ub85c\ub354\uc5d0\uc11c \uc0ac\uc6a9\ud588\ub358 \ud0c0\uc774\uba38\ub098 UART \ub4f1\uc758 \uc8fc\ubcc0\uc7a5\uce58\ub294 \uc810\ud504\ud558\uae30 \uc804\uc5d0 \ubc18\ub4dc\uc2dc <code>DeInit<\/code> \ud558\uac70\ub098 \ucd08\uae30\ud654 \uc0c1\ud0dc\ub85c \ub3cc\ub824\ub193\uc544\uc57c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ucda9\ub3cc\uc774 \ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>H5 \uc2dc\ub9ac\uc988\uc758 \ud2b9\uc131:<\/strong> STM32H5 \uc2dc\ub9ac\uc988\ub294 <strong>TrustZone<\/strong> \ubc0f <strong>ICACHE<\/strong> \uae30\ub2a5\uc774 \uc788\uc73c\ubbc0\ub85c, \ubcf4\uc548 \uc124\uc815\uc774\ub098 \uce90\uc2dc \uc124\uc815\uc774 \uc810\ud504 \ud6c4\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\ub3c4\ub85d \uc8fc\uc758\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<hr \/>\n<p><strong>\ub2e4\uc74c\uc73c\ub85c \uc5b4\ub5a4 \uc791\uc5c5\uc744 \ud574\ubcfc\uae4c\uc694?<\/strong><\/p>\n<ul>\n<li>\ubd80\ud2b8\ub85c\ub354\uc5d0\uc11c <strong>UART\ub97c \ud1b5\ud574 \uc0c8 \ud38c\uc6e8\uc5b4\ub97c \uc804\uc1a1\ubc1b\ub294 \ubc29\ubc95<\/strong>\uc744 \uc54c\uc544\ubcfc\uae4c\uc694?<\/li>\n<li>\uc544\ub2c8\uba74 STM32H5\uc758 \ud2b9\ud654 \uae30\ub2a5\uc778 <strong>Secure Boot(SBSFU)<\/strong>\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc95\uc744 \ud655\uc778\ud574 \ubcfc\uae4c\uc694?<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ubd80\ud2b8\ub85c\ub354 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubd84\ub9ac STM32H563ZI\uc640 \uac19\uc740 \uace0\uc131\ub2a5 MCU\uc5d0\uc11c \ubd80\ud2b8\ub85c\ub354(Bootloader)\uc640 \uc0ac\uc6a9\uc790 \uc560\ud50c\ub9ac\ucf00\uc774\uc158(Application)\uc744 \ubd84\ub9ac\ud558\ub294 \uac83\uc740 \ud38c\uc6e8\uc5b4 \uc5c5\ub370\uc774\ud2b8(OTA)\ub098 \uc2dc\uc2a4\ud15c \ubcf5\uad6c \uae30\ub2a5\uc744 \uc704\ud574 \ub9e4\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4. \uc774 \uacfc\uc815\uc758 \ud575\uc2ec\uc740 &quot;\uba54\ubaa8\ub9ac \uc601\uc5ed\uc744 \ub098\ub204\uace0, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc2dc\uc791 \uc704\uce58\ub97c \uc7ac\uc124\uc815\ud558\ub294 \uac83&quot;\uc785\ub2c8\ub2e4. 1. \uba54\ubaa8\ub9ac \ub9f5 \uc124\uacc4 (Memory Partitioning) \uac00\uc7a5 \uba3c\uc800 Flash \uba54\ubaa8\ub9ac(\ucd1d 2MB)\ub97c \uc5b4\ub5bb\uac8c \ub098\ub20c\uc9c0 \uacb0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. Bootloader \uc601\uc5ed: 0x0800 0000\ubd80\ud130 \uc2dc\uc791 (\uc608: 128KB \ud560\ub2f9) Application\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=11261\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-11261","post","type-post","status-publish","format-standard","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/11261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11261"}],"version-history":[{"count":3,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/11261\/revisions"}],"predecessor-version":[{"id":11266,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/11261\/revisions\/11266"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}