U BOARD ir.

ورود به حساب کاربری
مرا بخاطر بسپار
گذرواژه را فراموش کرده اید؟
هنوز ثبت نام نکرده اید؟ تنها سه گزینه برای ثبت نام ثبت نام

U BOARD ir.

ثبت نام
ثبت نام
لطفا تمامی موارد خواسته شده را تکمیل نمایید لطفا ایمیل معتبر وارد نمایید لطفا گذرواژه را بیشتر از 6 کاراکتر وارد نمایید لطفا گذرواژه را مجددا بیشتر از 6 کاراکتر وارد نمایید
پروگرام کردن STM32 با JTAG و SWD و بوت لودر

روش های پروگرام کردن STM32، فعال کردن JTAG و SWD در STM32، اتصالات لازم برای روش های JTAG و SWD و بوت لودر، برنامه ریزی STM32 با پروگرامرهای J-Link و ST-Link و مبدل USB به سریال، پروگرام STM32 با J-Flash و Keil و STM32CubeProgrammer و ST-Link Utility و Flasher-STM32

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCACWAJYDAREAAhEBAxEB/8QAHwAAAQUBAQADAQAAAAAAAAAAAAUGCAkKBwsBAgME/8QAOxAAAgEDAwMCBAUCBAUFAQAAAQIDBAURBgcSAAghEzEJFCJBChUyUWEWIxdScYElM0JikSShscHR8P/EAB0BAAEEAwEBAAAAAAAAAAAAAAAEBQYHAgMIAQn/xAA8EQACAQIFAgQEBAUDAwUBAAABAhEDIQAEBRIxQVEGEyJhBzJxgRQjkaFCUrHh8BXB0WJy8QgWMzSCkv/aAAwDAQACEQMRAD8A38dGDB0YMHRgwdGDB0YMU8fEY+NZ2nfDz+e0Zfqyv3Y32+QSot+0uh56VpLdPO6rSjXGo5DPR6Uhlj9Sf5daS63n00jZ7VFBUw1PWmpWWnI+Zo4BFvr2/STI74zVC15AHv1vBAsb/W1je2Mou/f4nH4hO5tZdqPaqi232A07OW/LIdKaYpdZapjojyAWt1JrD+oKM1ZVh6lVbbJZeDLmFYSGymbMVDIXat53AEmAL8yIETxPPIiMwigzzaIPH1tBn7x7TfFSW6vxGu/PeOtSq3E7v9/b1ExkYWim3S1fYrNSkqxZksthuNqtcTnlwUR04b0zxGVAXrDzqsMPMeGEEBiAw7HuD0EdDYYNi2JVSVuCQCQe4JuD74jhNvVu5JUfMSbr7gQy1imOsqH1jf56y507FmLVVQ9wYzqQ5KBkLD6+ShwS2uSY5me5gdBeSet/rAicZQL2mf7D/bjDp2375u7rt+qJqvZruX3t0BEJ5p6i36Y3F1jabfM805neetscV2/JKllkRpedXQvGzu/Jx6kg69UuJKkj6MQDHHW8DobQBItj2x5FuDYE95Ei39YtMYtk2T/FOfEo2hpoKfXlVtn3BWSNEjV90NAQWi8xxIgHGm1LtfctKPUVDFWLVl8oLzI2SZQHHW8ZmpcttJ54AH6IBt6RYgxbvjDy1iFkATBJJP3LEyR9ZM8m2NH/AMM78TP20d6Oq7Vs/v3pqh7Zt3buy01iuVbqmluu1WrLgzrHHb6DUNxS2XDT10qWZRS269080MzsIkujSkId65im5iCkmAGYHt1AXk/9ONexgJkGBJiR+xm33/e2NN0ckc0ccsUiSxSoskUsbK8ckbqGSSN1JV0dSGVlJVlIIJBB634xx9+jBg6MGDowYOjBg6MGDowYOjBg6MGDowYOjBjOd8fz4tN67Etr7PsXsTd0oe5HeWz11XHqKD0ZqjbDQSvJQVGpKeNg4j1He6xZrZpqR0BozTXG6xMlRRUzjRWqlYVTDEE/Qe0i8nt0B62xmizft7f5x98edHfdS6g1zfLnfdWX+8ag1LfKqe53e/XyuqLjcrtcalmmqK2pqp2kkmqZpXkfM8kn6hzzyOEV7Enn34JESfaImIibdMbT9ZwkyXaqtRAaspQruSmUjRHUjiEaNFbJAwMkAA+cZxkIB7yObknubz9QBHPtODCSkxnnllWBTNLxLtA0wZYWcFsSkgfficYCg/Tx6B+gvHFjcAxMkkTIi56dcGP75rQtUFghllikaVRG3zUkvoRkhpAhZyzHC8xH6vg4wAMjoBJm5sJECJH9BERb7HBhpXOCsSoraaorIZVhiKwSTr8vVvHHI6KGYlXBHhAVkkLciT/05BF44PE/zHpA+3TiehwY4zcqm4CflJUvCeMg4lBKpyCEBkzHlSckkAMPfPkHrCf147R3Ee/X798e3j/zExz9/wDnjDRF0uVFWRV0NTJHV00ySwVNJO0csTxkPDKjoUkVkcBkbmSrAEHwCcwAeARzPsfr3tM2j6m2MkdJ+n/H69envGPQa/CyfF03J3/N/wCxXuH1XcNZan0fpl9TbM6xv9ctTeKjTtoCx3XRlZUzk1VxagpmFdbZZJZJIKamnp8FWXgso1CSVdpP8JJvAgRPW0R2iL8nBlAAgRHQDp3/AM742o9KMa8HRgwdGDB0YMHRgwdGDB0YMHRgwdGDHId/d5dLdvWy+529utZjDpjbHReoNZXbiVEs1NY7dUV5pacMQHqapoRBBGPqkldVUEkdeMwUFjwLnHoBJgY8irv+71twO8TuF3F7hNdSySX/AFdfYxS2emmklp9N2WjgEOndNWpSXApbPbIIIpSgVJ7g1TVOvq1jcm1mLMXMSxESeLRcDtYn69CcbgIECYEnvyf72/THCNPVF8vNDS1VysD2W3iBIqGoZpTUPwgISIogLM8jp6jDyzOW8hSManqJSV2qOqIvLMQBO4XM27T7XjnG2lRq13FOjTeo7cKgLEmCensD+mOvab7ft2ta2yKvs+2+pLnbQ/qw1cNjqnEhY5R/VZAWUjyF9h5yOo/X8WaDQqNSralQV19LKWFjPFjEzx1IM4ktHwZ4jr0lq0tMrMjXBsJETMG/3+1zMOiPte3rkmKNt5qSOoVxH4oypSNcF/Vi8YVfc+M5GAB1ifF3h9U8w6nlgpIC+sE82IHIBPAP3x6PBfiRqvlJpmYL7Qx9O1VkSVkm+0ckT/XC9F2OdyF1EclttFXSRyOZuE9GsUcOEYr6pPlRyKqfsc8mwAemnNfEPw/lyQmY81gQo2QVMQeZHPQc89AcPmU+GXiLMQatJaClQWNQ7SJBkAGZgiDx07jC7ZPhgdx+sW+buFJVUVO5VxVNTlmldnb1GRiSBARlo/A8geMY6Z8x8U9HpL6F3sN3omDwCsx1bgngReJw95f4RarUcCpWCU7esAQTu2vHHyiGHO4ExwcJGvfhn7y6Xt87fMxVzxwTerTTUhPpqillET8c/Sv0cvYlCR7gdYZL4qaZmXC1KLU1lQG3QRNpvHYWExI55xuzvwd1OhTL0c0KphiF2yJAkAETM95vBItiuLc/YPcPbaol/qG0PT08X1GePJTBGQADg5++Mffz9urB0zXtO1RFOWrhmb+Ekbvv/v8ATFa6v4a1bR2YZygyKhvUWdsTE9LT19sSW+F93qt2E93+2PcLLa5LxR6UvEP5lRRu0TVNrqWFPcaWR0PqCnnpHlSVYwWPgEEZ6e1YowcXKg27giCPuO2I6IPpaTJEex+v1+3fHsB9q/crtt3ebD7e9wW09yW5aL3BtC3CiJdWnoKyGRqa52qr4Ehaq3VsUtPKPHIKsiji69LUYOquAQGEiRHUg/oQR9sYsNpKmJHYzyJHHsRiQnWWPMHRgwdGDB0YMHRgwdGDB0YMHRgxnR/FFb2XbZ74V+uqCyQyNcd0Nf6D0CtVHVvSmjo6i8R3i5OyoQaqOooLXUUktO2Y3SdjKDGrDrRmD6I7mD9unvPHftjNOb9vv9vtOPLv0NbdWa71FadK2BJqi7X+vWOncq7P61TLGPUeU8vTSNkLs4wfTVgpHEdNeczFHJ5etmax20qKF2jsokxP8RsB3MTInC7JZWrn8zQymXXdVzDhEBsJPJPsBJPcC040t9g3w7Ky9V1ru+6cs1darRJHJQ2+qbLVE2B6tZMjA8VdgUiQglYSPLFuXXOfjT4hVMzvy+Sfyx61c/yLBG0WuRYseri0AY6d8F/DrL6cqVs4i1ajbXpk8u1iXJNluIC2hIkEkzqK0HtLoKw6ZhtdusdBTQ01MsKLBTRxRrHHGFIbCAsffLkMT7n36qjz3rS71HdmgszGWM3nuObcdcWv+Do0to8pIWALSAJJ7wepJgweDj+GPZnRMs7SJZaDm8jO0hpoyUQsCx5FGyXOSWBDMMDwPAxqVqrwhqEqBeCV2xI7CSBaTb6nG5cvRmRSRWAAG0cgcE+8dr9zzj4rdp9LKoo47XTKJyQ0iwxgBUGckqPrDEEfqyGJ8YGOvHQoA61GINxMgqYAixsYIIve/TGTJThVKKQReNvqHe8g9CYBuPtj9n0jZbbSiCOngSKGMKIzGgIILYAGAApOF+zZAxjA6aqjsgMtMzMsdwLWJAtYFbXEGRGHAUVJkBQAALrYwbA9uYJue8nEcdw9FWO9LVIKSnwElDAxAs2Sw4+AWOQcgHIOc49gMaWZq03D7z0n7dQOn25+sEZNQQ04VVWAe5B7zPvbuBwcUY99/b9p+66P1DULTxw1VLBIyJ6YV2CBieJ4lseR4HPwMYGMm1vA+uZrL57LBXLKWG6DIAJkzccAdxza2Kz8c6Hk87pWZNRArlSQSI9QE3tMzaQp94mcZcLlpCS2VtaDGxhpqiQcyvhYzM0IIPg5D8B7ZGRkeeuqqdUvSpuAIdFYdQQQDHJHsbnHHFWiKVarTIINOo6Qw9QCsQbGIsJvEyYx6Gf4PbuDvWqu2nuL7bL7WzVUO0GvtO640mkxaT5az7hW6uoLxRwyOxxT09y0vR1KRKAizXKocfVI/S/LOzKwJkKREnjcSSAOgmTaBJ7nCaoFBERJBJiL9P14F+ekgY2NdKcYYOjBg6MGDowYOjBg6MGDowYOjBjLN+LZ0tctUfDp2/SjqRT0dt7iNI1d3XixeeimsGpKKOONxFIImFZVUzlmeLKKyqzuyxOmzPyoeIa9p6EdLjmQR1j642U/4rT6eZiLif1Ej++MAHbwabS+8GiL1TpFHDFdKSnVFX1HWKVo6eMyMAGaWRpfoAAVVXnKpZGDxnxDlRmdHz9KSIy9Ru0qqMXJJBkBN1hEkCOYMk8MZz8Hrmn1TcGvTpQQTd3UUwACImrsBJMBS0xzjbB26S1EditLpC6VNVBEeAQAguoduZAIUIT7ZySOI85xxLqyu+frBCX2uwETHzEDbPQx07dIx3PprU1ylEvCB6NMwYBk01aDEAm4npJA6jFlmmNP3mpoI5Mg/MRrwHFuRB+wbxlh/DH3ORgdbMvlc0EO9TLAEAK/UTMx14njmBc49qZigxCq6ekwTvW3cQWFxeeuHEmi75FyMhKqfYRjPknAJZWyfJGB4OM9bRlqykF1bbMlSCAZItNiO094ji+Xm0GPpZZ7zeR12yRHU2Hb3x95tJXT0jHLEzyAZQ5ZW4kg4ycgk4P6s+fBI89ZVKTkFQpWYMOZiJAIECRFrgzeSZOBGpE7jUBFx6evNpERyeOOh4IaV00NWCnllqm9LgzNwPFuYZXbHHljygzhlOQeKsc/UjOk1qssofndZSQZuCCBYe8ECeRbdtfP5dNqtVQGYEsFgjoSTAPYEg2MCNxER9yoWtEpMTLEuSPqmCI4VSPpLFgM+CpVWcAjz4OErZHM0n21KTAASSREAiQSDB7SeO2PBqGVqKNlem5JO0Bwdx7AqCCZDC3BEWGKhu9ajuWptAakltxHrUVNNPPHFhjPBED6hU5Af6eRXIdiR5U+/U78Fvl6Op5UZoxTqOoDEwFafSG+pHNv3OIl4zpZuro2YbKCaqIzMu3cxVh6tnJkA3EQRNhAxmQuQ09FFV0tVBNwl+dikneNfU9WoqMr6iLIjxtHKsZHJHGAzAgEjrr3LADL0QplTTSATJIIDAAgR15Bi89CccTZtmbM1y4AbzXDAAgAqxU2N+l5641bfhBtQxW/uw7pdGNPLDJd+3+hv0dAJcUzvp3cHSNtkmeIRkTVKx31WjqDIBHFPOqiT12ZHDLiGP8A2n+q9yT+t5nCR+Pv/n+e+N/3SzGrB0YMHRgwdGDB0YMHRgwdGDB0YMZ5vxOemxe/hc62uZgkkGltx9tby06TPGlHHNqaitUlRLEvipUpXtEsbZEbyLOPMQ61VjFJrkA7QQCRPrUgGCAbgET1HfGSj1C0xN+osbi1ux457Tjzme22zya03r220lSK3rya0sk9RF5f/hFqja73khuIAd6WhZTnkvIMrnDEGHeLc8NP8O6tmJhlytWmpmDvqjy6cwPUCWCsvXrGJh4K07/VPE+kZQwQ2bp1WBUNKUmDv1G1gAWVuQQCLxjSlpruG3uuGq6m3bBaCfWdg0s/5ZLPKY6SjudxopmjuXy1RUVNPG8ELxtTwFTDlwznPNSlA6X4e0PK5ZcxrmdWjmcwq11pwahSm8NTZlWfmm4IMBiZJg46E13xDreczjUdGyRq5bKs1A1N3l76iEo4DXkpBMixKgWAxInTPxOe4PbaqorPuH2x6ypnFQtNU1ltljkjixLiQQkxVUbrGCME1pSTyRIwxh9qaFoNekX0/W8oxYAbKhQrIEiEqJuQ3PDSDwQJOGHL+IfEGWqqme0bNLsv5iSSFLQRvpN+YIAN1IYcjpi4zYnut0/vTpumr5bdUWe4SGNpKCv9P5mFX8MJOCIgdD9LhBkMSOZxnqvNTrJlK3kE03gkApcHaY3bmZz6ueI4g3xZ+js+epGowem0Aw8KfUJjaFUWMi9xyRjsOtty7Jpm2VtxlKBoKZmQAYTnGobOQcHPhRyGMEePGem589QaqoKgKxVZkAgckgcGBI5j7icOrZWrToVGD7nVWZRBIYkekEi8EmZEmf0xQX3A/EF7o5dX1um9qttKa7WdppqUXWuMrGJ1kVYpEkaqo6cxSckWRJZJFijVldpOKP1YOjZTw41NcxqedWkagBFBEIKCCSSKbRyV2zEFZAAlTWGs5zxPvejp2TastKd1V3EPMDarOu8CFbcLyCJaRI4HqXSHfDu5Zk1BuFuXozQpmiaqpNN2GqnkuKsEUIJWpKuOm9QuHkMaioWJnbDlSQVea1zwdl6gpUNOq5qmFFMVa1NR6TcuGdA7gTyTJAiCMN+U0TxdmV83MZ9MvVJNUU6LPcgnavz7FHeIhpvIIwx9H6g1jca66bcbqUFPJqGltrRxXanUPQ6lt3FoJKmWMxBIa5B5niJCv/zACxz1EtWymQGzUNIqMKT1JagZDUHHqBQmCUFgOoNumLB0DO6iVfTNZpqzJTKpmJlaoMgrUA3Q30MAQZk4zqdx+j67b7eXX+j5Mw0tDc5Ku1qyAqbdcZjVQvEW4kBQWixybgCAox466S8HagNT8P5DM75cUhSqcelqXpPTrYyYuZM2GOWPHWlnSfE+p5UJsptWNanzDJVlgRJPW0WjsJxo4/CS22suHxAN2bynzL01s7ZtVGrkhqJo4EFRrrb+kp4qxBG6VkTetG0Ecrw8Z0ScPI9KqPL8ufWf+yxg87gZmwFuYHWMQ1+B9f1sef6/XHopdK8asHRgwdGDB0YMHRgwdGDB0YMHRgxBf4l2wUXc12K9zOznyUNfcdT7V6nk0/DNAk/HUlqt810sE0Kv4SohulJTSQSqQ8Uqq6kEdYVI8tyeik/SBzftzj1ZLKBMkgW634++PL4+GXt7X3fu+qYrjQzUVXpfR2o66ekqaaWKeCpnegsU/qJIoaNka5OELAHj5Xz71J8TM/STwqz0qivTzecyqI6sGR1UvWaCpIYHyTxa3tGLZ+FeQrHxfsrUnR8nkc2703WHpvUVKKGGHpI84HobiJkxeLqvTW6+0d+0bo7b+4jS2ltRXFpr7qSgofn7jb4aycPVTR0pwksqq0rBZQ0fJuUgYhQKO0rN6XqOYFXWalUrRNFVprC/krAIB7qswD1AjHQWq5LUMllXXRKFLzKwrO9RxO2ux3hioj5mUHd/1XE4WNKbEdyFy7m66fXW8Wo9TduFFR3GvtN8tdR61/uvzCGSy2yWwVMKUluqqaR0jrZwWiKRcwhMnix87W+G9LTqyUaVPzmpzRbK7nrlyQQGYlZZbh2PpngWvV2nZD4m5jU6NQuWoCqVrjMhKdAKLEqAGIU2ZVEsB8zG+Ju7S0F10Pra300lVVzw1VSYl+ajSOWWHmCjzLAAgdR5YYGWJwMe1HaoyHMsaKuae4mmHPrCE+jrAbj5R34kYvzIUHoZaimYNEZgKPPakfRughpJ2sZkngwOLi8su4u7Gh0W7RpLyqocsG5eQV8cTn2JIX9/J/YdNtQF6iKQRwxBEmJiFIsOSTMiFn6uYRfLaCSI/hJudwEn6Te1x9MQC0BtpprWw1FJrCLUSW66abvFss9bYL0lurbVfLlbquChvQhEPrFbRUyRVCUQkCVk1OXqS4MHp2F4Uzej5HNpmNZylTO5cSgpqy7EYbgalRSJrEflsiztu4InaRBfGela1qWnrl9AzlPKZqou6qxVg4mqFVabLZBsVnqPBYDaVtINfVk7Tt49stJ7i3LWe4Wqb9ra8X+mk0B+T6kujWSyWalrKqWd7jbq6WcVktdHUQ070xKpTRU0bIfULEzfXPFfhHN5TyMroyJVLALUNOkgSmALkL65afRcbSOs4r3w/wCCfG+n6gMxntaerQCMWRalV91QkwAXIUKpB3CPUrWg3xKPaTb643Sy0N91RKKy/wBFAsFRLIh9RmK8ZebMOeCR9XknHVR53OqletToAigxkKDAgkmI4j+xFsXEmV2UqPmnfWRYFTbBsNsiTuB55OKN/iXbP3259y+lLdo+y1N2u2vrRBa7dQ0qZlqrlT1S00UUP/dI1SocnGEGT+kHq+fhdrGXpeHtSOZrLTo5Gt5rOxjZTqLJ4PAK8C0yBycc7/FvRc1mfEWkHK0Wq19Qy5oBBdnq06kAxz8rGTF4640yfhcO0XVPbrvH3Gaj3Nutrpdb3zabTdjtGl6OZ5Zo7HPqmiud3qpnKLG70Fba7RSyekTxesblnGep/wCFfF2leI8zncvkTWFTKqGXzAAleiGVHq04/kdqakG8OD1tAPFXgTXPCuR07UNRSmcrqDvSV6e6aOZVPMFCoTbc1Lc4g32sB8pxtG6m2INg6MGDowYOjBg6MGDowYOjBg6MGOWb4UVZctnN0bfbpZIK+s0HqimpJoQ7SxVE1oq0ieMRkSF1cgqEIbOOJBx01a6Mw2i6quVZkzJyGaFB1sy1fJfYQe4aIw8+HTll1/RjnEWplRqeSOYRvlej+Ip+YpgGxWQcYGtBbV6e2+7771X2a3Rwz3zt20tLWVSIqmruc+sKiKtmYAKXqGjttGk8mC7FYw55A55N1DPV854KpUXditHxDX8lJZtlIZMNtMkwGZyVuBu3QImOxs9p+V0/4jajmaNCnRGZ0Ki1U00CKT+PqU1ewALbaW5yJkMp/lGLjtE7M27WlZTXO7w+q8EaekHAPCNgGwgbwMjHIDycA+w6gKqzekEi/HuP2kWifeMSynDCdxCtwRwYB+8G/SLH2xMGy7P6foqT0XpoVgiUMzBVYsFXJ+3uQPJPgf8AjpxoUiVMhSE4JHHUiTEbp/XGmq0FQrNwQIMG/YASSImexPJxHe46fsdRudBT22ljEVvfMjqitxVWz54/9bf6gj7Z8dNjN5mZqOxO1AFUSYnssWsO5/ScLlG5UVhNRzJMXAAsD1sZImDEm8CEvuIr6T5e1UE0PKjyI5GZT6fA8UHLwQoJb29wAW8+OvWJeo6QbUpkXYRB3AdlHeZIA6nCyioAPYgg9wCbmfovJjiBhY2h2/0tX2OKqpIIfVJHnivpNkFTy+2QT9J9icj28de5WowB/MdgCIDEC0QGK3Atx7EEmRhPVVt8pCiF9azJAUhbwZMG9u4vh+aj2f05XROai30xZUzkqpA8+SMH3z7+4wACBjrbU8yZ3E/0ItIER0ERyPfHiEkEFjeevMi4a0Q0CTbrPtDnX2h6LS1TI9pQQxc29RYgFQrk/V9PjOPtjpNuJEsZiZN+BI63t/k4S1fn2gyQBY8CeAD1HvH1nFTm+umqe893HaTWUsPr3D/E2GCcwf8AOFBFDJWVC+ByCYpgScjHuT7dWT4UrNS0DxJRY7KdXTyzIREtuCJB6Ehre88DmAeJ8tTzPiDwo+zdVpamlMOrENsZC9QHrysE8xYCScaXfhsadabuhv19tNDJHbbHt3frVdJ1UiNJa67W008UrABSwemj4oSSS/MDCZ6lPwbWs3iHOsqv5KafWaoxPpUtWoKiGLEsTIWf4CYtZF8eM3lqfgfTMk7p+Ira9QrUKIA3qlHJZlajwfVEOqFgAoPpJlwMX+9dL44/wdGDB0YMHRgwdGDB0YMHRgwdGDH41EEVVBNTTKHhqIpIZUYZDRyoUdSD7gqxHXjKGVlNwwKkdwRB/bHqsVZWUwykMD2IMg/YjGO7vH7Yb3sL36UupaVgdBXjSVysVnRnjxSUly1DR6hsnBSTPIq1H9R26pmJKRS0dOroonid+UPF+jp4dq6rod1oPn8vqumxJLZKtRzFEoxvBoOnlKTJcUma3Xrnw5r9bxXk9I8RVGD5mjptTQtWkqpXN5arlqlGqFBJb8RQJqEgKAzhbst5xbTV8MdHD5Awi81DeFVQQRk/bLLx/f2Pnx1WCGAoH8JYGR3JMdbgcxwbG2LOoxZiwbco+QzMySR7CRYgT+mO53zUyUdlrngYGYwsECknA4kkYyPrA8MACcfbPWw1QFIkgML9fqImJj79sbhRBO4QQt/6QZI4IJ6jn6RGXaPUmhpdd3uHVN4paK8FHqhSTyBJZI+XEcOQ5FfPkqMfc4+/uTpUHJZ2cUlgkgbiWM9lJAn0yR0gnthmGrpaijFjHzgrwLlZI9IH/P1bfclqrbKppxRQXqA4/vhjJGnpFM+zF+JXHHj4BYlcKwBBzelRWsWpliGhdrqNyyZIK7oI2gmbCReCMKcrWqgbcwEU7SPmgNOyCZUkCSZO0xDSYk4b3bpqmOhqTb6GeS4WOu5T0lQzc4+IwpWNmUJ6TcTIDjw2cHBz0kfyqNUgGAWKKoXaDEEvfcWJmCZsSF5WCqdA1OmyAXAFmJEEboVgYYKZvN5AEXxKq+3mOBHAGYpVIIyc/V58kjORnIz7/wAk+R6gBj6k8k3j9fp78zhM6nYD7gCDAkTyOgj6i1wABMPt0quJlrm5JwWFywb6SDgnIZvYD+CGz9sda2uQAADAsI56/S/f9sI2jcxmRaTMxzb7DgdojFW2ntJ0uuO57Q2t5qi4kbYV9bc7dQUaLPHca6tgltlNHVNhniihmq1kLIGaTHElAxYTXLZmpp+jVstToh6upillt5b1KqkOYAPq3EbYIgDt1i4yqalr2Wzb5jy6OjNUzpprTZ1ZghRSwPyAAyWBNwALHGyjsX2Jk2e2oN6vlOkes9yapNVXrKj1KG31MfqWW05KK6NT0k3rVCZI9ebiw5RZ66T+Hfhn/wBuaGrVv/van5ebzViPLUqTQoQTJNNHZnJCkPUKFfQCeZvif4u/91eInNCRp2lipkskCQTUIYDMVzFh5tRFCgEylNWmWIE2ep9it8HRgwdGDB0YMHRgwdGDB0YMHRgwdGDFMPxjdM2Wbb/bDWEBeDWFm1JWrTPDEWkqtOU0NNWXX1GR1k/4fKtM8C4ESpW1jSNkhJKV+MVPKChoVZyfxbZnOZamgUBKmWqZcGq9R4saNcZYUgfSPOqRDEEXV8Hqudapr+WpqDkRl8jmqzEktTzNKu6ZdUQX21qVTMCoywd1OjMgAYgntFqyiq6GmMVQArxIHZsAliF8Av8AqfyAQQQ3hhjIB5tqU/KLSTd52tZb2uRBnmLqJgmQCcdI5DMCpCEKNqCDMnopEbh2HAaSDB9QGHXrXcP0qwWe1hSfSZpS7BX8DHgnCge6qxZcsD9IGOt2UyhzhYzspCRI5J5AncFYfUG8HHupav8AgAlNFWpWN2BMAKLDiWVp+g/bHA6nR101pfLZVVkVBScasGmkqJII6mcEHMaK0qyyZU8Qql0LH7k/S4UMvkMs4pmqAxiTuJAggkyqwskCZaQes3DLVzGtZ9TXp0qnlop2mn6Qki52ltxieVB5Im8Ba3H2csktnpoY6O1UdUtVFKTcKmlhSeoTCnjyALsCW+xKkglM4wpzT5BVAESWuaQuQZuXJ2zIuBeenUeZbK62W8ymK5ABnzGtIIMBNpYiZILACR802LVs9TetELBRQ00MSxqFSdD5Yqvl4woKykqeb4PJk4KgyzuGv/SstmWNVazGYIUksUWSVWziAu2wAuLiZwqqa9qGW20q9KChAk7vUCgO6WUN6laQBtEExEY7rS62W/6dkqZZljnpYyJlQSD+4g8llZVYAgHkcktnGP09NtXKVaVRkb1bSAIvIPE2gAmDLQRF+Jw+UdVo5rLCoGCNB3A7Z3C3pDcibWBkG17Yh/uzreNLZWcGDNLHKrKGbOQCOT+MoR7g8V+w5DB63ZTLmtWUkWU8wDcEWE89JA9hjRXr+XSY7pLCTum4PU3HANhM9pxyvsqs1Bfd2bTqY1FNdY6TcLS9ruWnVkkqKipgqLiknrVNFT+rU1lOsyRqYOGZoy4ByMie6em7WfD+VqU1qKc7QcipTLK6tWRYhhsKkSCx2gcAnjEF1MN/o3iLNUmamRkKwDU3hk2o0gFYKlZDQSSeYscbiVVUVURQqqAqqoCqqqMBVAwAAAAAAAAMDrsDHHOPnowYOjBg6MGDowYOjBg6MGDowYOjBg6MGOKb47Bbe9wemIdLbg0NVUUlJNPPQ1lvq5aG4UT1VO9LVCCphIb0qiFgJoXDRO0cMjIXijZWPXvD2meI8qmU1Oi1RKVUVqNSm7U6tKptZCUdCDDIxVlMqbEiVUh/8PeJdV8M5qrm9KrLTbMUGy2Yp1EWpRr0WIbbUpsCpKsoZW5UixucZWtV228dvO5ms9otR+rDddE6hrLbHJULLFHeLMZWmtF5pFYAvBcrc9PWRyKxUCXgTzUgcoeLPDlXRtZzuRqIxopWZ6D3JfLVG3UKha8syESN0hpUnHUXhbxAmr6Tks/RZPNqUlWvTBChMwiqtanAAACuCFtdQrARGOi3O3nVltnqbXcZqGpr6OJvn6dlWoiYp5ZS4dchjyUMPJGTkeOopUzTZJCq2BaWUAATEXPYwZE9b9JluXyi6hWWo8FgAdzEgkcwJHQ+w5tBOI3nYi8XTUM9bqzc29VAgBNHWVN3mt5o08e8FMYoGVVHIyIOa/qAJ+npy03UslUo7DSFMlZbaoZndSf5gTcMeWMnFjZLP6bkMslHMPUpVKSAEqqKrQLEkQpLTClhIi5AOEy4bR6Z1LXTx1+61wvVTSRCOiZtVToTTwkxFjJE6yqIypSNHEvrf2+ShsYeTVoUkDtuiVAUUwSFhdqkOCpIJJJBWFJA6nC5td0AoCc8GMKPLpt+YpZgoEWUkE+o7re/VSsOzl5o6+glXcPUNZaaKUSwUL3StrabgFKCEvXTzMYmWLmPl1hUsCSuAMRfOaxQSoRSy6JWlg1RVClh3KqRBu0qSxk/NAho1qtLIaxTHkUCu1mIrsYZ1cSNwIIMRJUqdrEgNBfd2PWF0p9E6NryJZFrqlCEdnyHIVsniRjJLAlsHH1DABz0Zd2zbhzLM8EmLEHiCYsQRybCxJnELzOXGR/JgqIO0R6oJMkwInmYknmJMYr+3U3LobXpKpeqr+dwmjdeAZJGZpCVVFUD6mJIwFC5yTn7l/07TqlfMhUQhd0sVgKFjmb2gdZ/ecNmfz9PL0CzMpYJtEglyxttgwZBtaDFwAROLlfgDbc6Ten3g1VqDT9lr9aeppi42y7V1tppLrb4Kha15/kamWN5qdeRpxL6UgywXlnzi9fhllctmf8AV8zUytGqcnnKFLKZl6SM9P8ALqhxSqEEpJW+0iYnFHfFPOZnLnR8rSzVakmbyVarm8slaoqVJqUinnINocAH07w0AxONMvVv4prB0YMHRgwdGDB0YMHRgwdGDB0YMHRgwdGDB0YMVDfFU7MbpvboL/G/aulhXdvbCz1c9fb40WOTW2j6NJKuqtjyDBe52hPmau1l8mRGnpc5aELCPGfhelr2UOYSFzmUpPsJO1Xpj1MpP8wAYrNjwemJv4M8T1NDzQy1SWyeaqoXABZkqn0KyieCSu6LiJHJxQ1stvxp+agpLZX1f/rgvytdSysEmpayFvSlp3jcgiSNlIcEDyD/AKdcqazouZpGqNm6mrNtYQVIBuQRNvr/AHPUmi6xR30m3/OqyvDKG6MCTcGTF/2xM5NF6c1xQxPUxLKs8XqRqkoPMOntlTk+CPGcec48DqI5almkqjYrKd5WeBIkG3/jknvib16mVr0jvdXlZtBMH3MTH/PQHCFbO2zRenasXGSjh4BS7LjyVb1HGSG98s3LOc5JAzjEprVM5+HUVRMBd4F4EEbp5vuvEQVUSVOI1laWSXNu9MUyrFgiVLX9Jn1fysAw5kEwLXRtc1Vg0nSTVUBEFLSKQoUqqKXQBYsn9OPpOCcciT1G006tVrKJ3sWEggywtEyb8wf+kSbziQPq2WoUjtKgKDtiyqbkyO3J+sfat3fbuPtk1vktklQgendyrLIMr9OGweXsVbiAffPIdT3RvD1dim1GuogRPMACPaJk8WB4M17q+vUg1WpUqBoZoO4QByOOZJHSTcicQj0TbrvvFrC31tYtS1iguCGlpMSH52RZAEm9PGHjyAqePqP1AdTLOinpGWOVy6ipnq6rTBT1OGeAKYABJJkAi94ixnEVyLVNXzAzWYfZkqDNUhztUqvqNQyRAEEi4EC840j6F0rvV2tds9duXsvWx2jda1JBuCllrYedBqK0WJFrZtGXmHAzRXm2RVFI7AK8LVKSIQ6ddT/DLwIukeE8tldUolNQ1J/x1cgnzKTVliksGAXVHJ2mwJiLY5U+JPj8a340rVshW36Zp6jTqRNqbrTf8yoOYQugG5bkA9MXCfD3+IVsp8QvZe37lbZ3KC3astsFPR7jbcVtQn9Q6Jv/AKafMQVFMxE1RaaiVi9suaoYp4mWN2WZWUqNW0rMaRm2y2YEgy1GqPlrU5s6+8EbhypPuJ8yecpZyiKlM3EConVGM2P1gx3A9jifPTZhXg6MGDowYOjBg6MGDowYOjBg6MGDowYCQASTgDySfYD9z0YMQ67hu8jt02ipL/oTVG5elZ9w7lo3WFwtu39Bdaa4alrKOzabuV0uNTUW2jklqKKgp6SllNRW1KxQxMUjLiSRAVdLS83nqGYdMvVbLJRqNmKwUinTohQHYuQADDDaJliQFk4T1NRy+SqUWetTWsa1IUUJBZ6pf8sBAZPqW/QAEkgXxhf3Y01cabUP+Jm31S1NTXa5S3uBYyTS1cNZPJUIpRCUL8XAEg8keSDgnrlKlmKJq57Ts4PMRK9akJH5qBKjRc9uoIiInpjqupRq+Tks/lG8uoaFKods+VU3oswoPXgHv2xJnaHvLjttJTWvUtb+VXSmjEASodo0Lr7yQuRw+oZHlip+/HHhjreGKgrCtkh5lHcWDbgzgxMMguLiRIg2vfDtR8QoKZo5tzSq7NpEFVIa0BzYjuBJgkjHb63vc0oks8NVqegmj9L6ENTEnnGCvLnj+42cSgEfQCPpP1bB4f1Soqn8O87SCNpBiBIaxEzDG0SBwLHH/XMhTZlOZpmWkA1Fgc3UH1REjodvHMiBO/HeKmpVqLDpaSe6S1cyrNDTszf38qsTNj6VSMAiRshS7ZyAMhy0zwpUpxXzxTK01QOFsTBLyBAlmMRtMESBEiQ257xLScmlkVfNVWZkZlkLICQSSYCAtu3CZ23sYMStPaL1FuBeGuGpvWKzyBxb1kYxclc4MzgFWAHsBhRjBLAdPub1bKaZQFHI7ZEjzuXa8MIvFxxMgyLYa8noub1Ksa+fDAEqwo3FNZXch5BaZvb5Yb3xoM+HV2bG4Gg3Q1bahTaZtRjbT1DPEQl4q4f01KIyrzoaZx9JJKzOPoygybR+Evw6r61nKPi7XaROTouaunZeqAfxNTdas9Jgfy1N1mAzAEYqf4wfEjL6Lk6/g7QKqjO1qYpajmKDf/WpkAPRWopH5j/xBbqJBjFve7dVbbFt1ru63V0p7Za9H3+ereRR6EVPBbKh3LLxOAFHEjAwMjH7dVpRNZ0pIgNRmVaYFiDMADgATFva0Y5LSqEJd2MA7mm8yfUT1J+/Un3HnqduHdDvn2cb5U2+Hb7qyr0rqOiuk09ZZpGnm07qW0VFQ8s2n9S2lJEprnbZoZWiKSkSwMBNTSRTKrh71Lw7Q1HJmhmqfmBae0VQpDoUADPTcruUnaDaxhQwtaW5TUquVqh6VSJadhMq0zAYSAwG4gTESSCMbhOyf8R12e9w0GndIb6NX9um6lZHTUNxGqEM23dZdyEimktur4eVLb6KoqSVo0vv5fUycgnpZGTUGo+DdVye+pQp/i6Cl4NMEVgqsQCaR9REDcWWVAIvfE1yut5OvtV28moQshvkJIBID8WJiGhp4GNBenNUab1faaO/aVvtp1FZbhBHU0N0stfTXGhqoJUDxyw1NLJLE6OjBgQ3seoo6NTYo6sjKYZWBBBHQg3w7qyuAykMp4IMg/QjC71jjLB0YMHRgwdGDB0YMcy3S3p2i2Q05U6v3i3N0LthpikUtPfNd6psul7auBnglVeayjillb2SGJnlkYhURmIB20aFbM1Fo5ejVr1W+WlRpvVqN9EQMx+wxg9SnSUvUdKajlnYKo+7EDFF3cl+JT7Cdnpa2y7StrTuP1NAs8cMmhbT+TaKjq4WKha3Vmp2thlpHIYrWWC136Jl4ugZGD9SvT/BGtZ0g1qS5KmYINczUMg2FGnuqKw421AhJthmzOv5GjIpsa7ceiyCO7mFI7FdwxnX7yPxE3ep3QW6q0ZtFHa+2Lb+rjqKa5SaHuMt61/eoJvp9Co1nX0dG1op/TKELp+1265LIrsLs0TmATzSfAGQyP5+o7866wQr0zToqZt+WCSxJtNRthmNpMHDBnPEOarymXAy6HqrBqhH/eVAUdfSu8Hhotjhfw59OXC47OfEX7uNYVl2u9XoTYS8bfWjVN9raq5V9x1dug01Ldqye63Azz1d0gp0t7yzS1BnAuQLEmRSXbXEpnS/wFBKSUq1ZKBSmq0x+GpMrVgEAUhXFRUBQSNrQVjcGKjWP+rZHzHLsDUzB3FmbzdjLQYtMSCKjQxuY5mD37sr1BBvn2p6MnqZIqu6WCjm03cZHdJJzcbJI9FOZFU/QrtGXGcMQc+31dfM3x5kaug+MtWy5TyUObq1VQXVUqMWUBpIYKDG7cR3JjH0C8E51NY8J6VWNTzmGUSjUeYbzKQ2lioA2n2jg3AFsLNZtlRUtZUQ3eyrX0glYSQywRykrklX4kAFFGfqIJwfB9+mpdVqbVNKsyVBdSp2FSBwSpuJ788kjnD5/pdNhDUlemQPM3CVib2cGGvPpkRxNsMfV+zW1MiI9DYKcXCRQwgp6dowrjifKK6xsFIJJZWByvLOBhRR1/V5CHOVAkkSW5+hO4wABYHbx151v4e0uGc5KkW2j+G5DdWWE2kliejAzIi+P00tsdbKRo5jbIk5IrLBDAkNOpJLgyyKiEkOScfRnBBbIAGjNa5mKlmruxJ+Z2IYwItcEiDa/WYk4WZXRMpTumXo0xBHpG4KGYTZtwDA/NCk2N4GLNOyjsXrN+NRx6iudBNZtptNV8T3a6mJoX1TcaVw01hsshwr00cimG718bFYlLUsHOoeR4LY+FXw8r+K82mt62lSloWVqq9GmywNSqo0+XT3TNCmViq8ENdASQwxT3xe+JeV8H5JtD0arTzHiDOUai1WVyW0yk6lRVqQPTVdZaiggr8zKPScaIo9OWfSlroNPWO301stVto4qO30FLGkVPDTwIEjjhjUKAFA9+OTnkSSSeu3MpTpU6FKjQppSo0UWnTpooVKaKIVQBZQAOBH0xwlmatWtmKlfMVHrVqrmpVqVGLO7sxLMSbkk3vitf4qe4DbZdlu69VBOYLtrKgptB2wIxWZ5NT1EdBVTQlDhjS0Us05OBlEJJ8dPmj5X8RqWWXaWCN5jbZG0U5b1SLAkRHJJjqMCMCwiOZhhYjqBfmJI7RPTGFaTTQNVNx4cfUQcWZOQz6hYAE++ACDkYAyx982CcpYgbgN5sbiG+5uO3WbDkhxFe4n+UX4uPoJ/f6HDEuWk1p7uZfly4lFYpCASceDU7ZZcsv6pGOTxXyMHOctGY04CqGRSwhgdvzCCsACRK+xuDJv0WU8z6ILRZeZgxPe46XvbtiT+wveX3ZdqFZRVWwW+G4OiaOhnEy6ahusty0fIQ4eWOTSN5juFgKz44zSRUMVQyk8ZY2AYRzVPDOmZ6fPyS1qhENVCmlVsZs6gO3/AOiRxa2HHKapmsuR5dc016LIZP8A+WMD9BPc404djX4nC23Gpt2hO+rQo07M/o0sW8e21sra2zc/pQ1Gq9G+rV3a3qf1y1lhku0ZYsTQU0eONaax4Br0g9bSXauFBZsrXhawHalUACVI4hth6XOJXkvENNoXOAITAFWmp2fV0kut+qhheYAGNU+zu+mz/cFoy27hbLbjaS3K0fdYUlpb3pO9Ud1p0ZgC1NWx08rVFur4SeFTb6+GmraWQGOogjcFRX2Yy2YylVqGZo1KFZDDU6qMjjsYYAwehFiLgnEjpVadZBUpOtRG4ZGDD6SCRI6jkdcdX60Y2Yir3nd3u1nY/sFq/f7dmpmayadjjo7NYKGWGO8av1PWxzNadNWcTZQVdaYJppp2SRKKhpquseOUQelIv03TsxqmcpZLLAGpUklj8tOmgmpUaL7VH3LEKLsMJs3mqWToPXqmFWAAOWY2VR7k/oASbDGJvud/Emd8m761Nt2cpNJ9tGmKhXWn/pagp9Wa7np5D9BrdV6opq2jpZOGOEthsNlnQliJmHEm39M+HGnZZVrai9XPOVEU5NCkGbiUQ+YYEE7nIm22eIZmvEubqkrlglBASJA3ueP4mED/APKg++KKtzt0d4+4PVNRrHePcrXG5uqKt2kkveudS3fUlZCrnPo0j3Sep+UhH6Y4KUQ08C/REiL4E4yGhZfKotLKZellqS8rTRFLHiWYBST33FmIvzfDBmM/UqMXrVWqueCzFiOthLR1gDj9MMp7Qlvj+XCt6jjnPIAvLCnkELfWcAnkxyOR4/sR08Llko2RYiRuBseObAE3jvzbrhL5xYyTzwDz+x9r4btzk4QGnibMk6yR5Xg4WLz6kikqpDMBwVsBvocAnKJ0hzdYw1FZBZYJXcGUtECBY2mfmUyLWwopjhzFjN7Ax9TYdhMzI5xqF2k2koNovw8G9l3V6WHVu7BO4N5pRJF+YJbLlrnT9h07PUQxutQkFZp63UNVSmUKkiVBaLnGT1DdUEZ6hlQCUo01UmCQatTc7zeCwJAAsYUAgEEYTZaqauptWNwj7BMCFprBAtMb93VhJmxN6o/g8brxab1duJs3fGaG0XuuXUWn2mc+mKqpjVK6nR2YhQ8mJwp8gv8AUfseH/8A1BaEKOsnUKCtugHMAgFoqDerSApKq0qAwLKBBJg47O+CWsF9NradWIFNXLZf1HbIs4gyNxADSpEnpPN5+qtI0y1c1SaT5uDC4ZGPqrnPg8SeQ8+7ffGc+OucqdSQBuKsD0kTHHBBtPsLe2L5O6lIF0PyyAQp6yCDY9T27Wxyy6WfTFrSWvqKUmaJGIQBS44AEe6AYclV8KckYGSSAqVqzEKGkTMmSf3k9OZPQxY483oQZVgSAqhSoBn5rDaBBBNgGPBa4iUPaD2yax7o9SR1ldazpTZqzTqb5ehGyVeoJFb1WsdnkIVi8ysBXVsUpSiR2VA1QyBLZ+HHwzr+LM8mez4dNDylUHNV4Zfxbo0nJ5VgyklrLWrU2/KQ2bzQFFT/ABN+KWU8E6fVymRcVvEGdolcply4P4VWUKM7mVK7dlMyaVOqhFZwQqKhdl0fad0pprQWmbVpPSdqpLJp+x0MVvttsoYVggpoYlKhVjAGXb9UrsTJI7M8jM7MT2tp+Ty+Sy9DJ5ShSy2Vy1NKVChRQJSp0kUBEVVsAOZuSQTJN8cIahns1qOazOez1erms3mqr1a9eu5erVqOxJZ2Myb2AgAAAAAYYl8qBNcEjQkCJ1HnAwGIyo4nI/8AIx9upTRBWmOJNz1nnn3555wyG5cxAggfS5+n/jpjOF8eDddZJ9qtk7fXMRAK7XN/o4imFYIbfaEnJPI+os9TNEpULmEsW5AHqd+EcqSM1nDHpUUVJN4a72jsAJnuI6410iBUEiRYdRDMbHmCLEER9OCMZqhQwyyu2eXgsxIAOeQAADKSCqlx48EnzjOOpmiAhhzA3Cf+nm6wZ7XItfpCw2j3MW9+Obf79uuGLcYI1vcMJGYmjuHHlnLES2449h5CODnGMAe/uUVQDzQrQZV4kCZ3K3bs3PbtjepOwm0gqb8EQV7jt1w2rjRqXYw4OWYnGAfc++CCMj7gA/YffpDmMubOim8lgOljyen2A55AtjdTqCYJ4iOPoQO8fSOSZGG5VUsjpwAKqc8h5wR7Dx4LH+R/sR02VabMABIF5HQ8dOpie5+nOFaOAZNzEAm3/MCAPuTh47R7v7x7AanXVuy26mvtq9QpIkzXbRGp7xp6edoTyjiq1tldTRV1PyJDQVkc8DqzJIjIxXpizukZLPqtPPZahXRJK+dRR2Q3E03PrS1iUZTHWb4ccvnK+Wk5erUps0AhKhTcAZhlBhhImCCJ6EY0n9lv4mbdzbHTtfpDvI0TV77pQ0dONK7h6SWzaV1o80TxxS27VlHDSQ2G8wtTcpoLvTUlBdEqIZFuDXVqxZ6Ov9Y+H9N6q1NIqrQRp8yhXZ6lNT0NF4aoBYgpUL+zgCDIsl4idVKZ1fMIA21KYVWMWIdYVD7MoU2MgzIZf4mXu0uG5Xc1pLtXsdxdtF7HWu1XDUlBFO3y1w3F1bb49QVk08Ub+nUGy6bk09QQiVC9JU1N2jGPXYF0+GujhMhW1OpSBbP5n8NQqFZZKGUDNUNNo9PmVzteLN5KhuBCTxRnd2ZTKK8Ll6RquoNjVqwF3AG+2n8siRvaIk4zbUtA9W/zEmWCkLECAcuc8m8j2Ue37HBHkebhShvIJFotNuOvbg+wsemIWau0ekXMk9oJ695/yOj0pqSGmhGYwGUDzxDFmOAAT7585Pn+elyoUUQQR1JUT7EWAAPuOoGEzHcZiP8AO/XCbcKaOKOaedeOELs3leKgZx4IPkZ/0z1orhRSqFlQiCbASWJsTeDBAPv9OdtMlnUAsT78QBx+v059zjlcVHNXy1dVxBUkRIpJPphjzABx5xHGy4zn6snOemBKD1qlSrwLwDcbQBM/sY6meuHEuqKq/S9pmbdft/xGLNNmu5C87obFa67eNWX1rfdU2lqNI6VmWoNNS6q05pKe23mz6buFMVaCsutoa1UUFplMXzMtvheFWEsZMmL0KeZRqNRU3mtTqJUZU3K6FoKM0EKQWFRV+aQzXEhor0XyebpZ6iSKbVCtdJMDzvSzenkEwZaQhFrGDD/tZqqjRm5VZVQwPS3yyz09WhmHpTl439Kop3jKCQhRCMhgM8gMA+euVv8A1AaGwy2TzhSaLGplK/oB2vd0dqglYaSEnkqe8Y6Q+DmqqudzGWDjzNiZikNxh1BCOoUE/LYsZ4IsMaZbbuL/AFXoC0akt7tBcJaJUraYRmZROsY5B0yWAyPDfbP3x1w3ndPFDMuEEpvvFok8g9ORN4+1sdc5TNtVojzJkKGgm8C8WBk8RItf2h99vuw2o+5Cqqq661o0zpO3XL8vu1z9CSatrZlU1D2+z0zRMrzzU6cnnmYRUob1WWTkqtbXw2+E+c8aVjna+YOU0TK1KYzFZV3Va7QzGjQ9XzAAK7wdm8EqTcVZ8SfixkfAtIZPLZdc7reZp1Gy1F3hMurQq169vlD+pFkNUCkSBE3a6R0fDp3TVh0zoGsvek7bYKGKz2uCgqJ6KZktAaB6yuQeK0VUkPzErVSuKszh2Qs+Ou9NE0bTNG0vLaZl8pSo5PJ0Eo0aTKjelRt3yIJaoWLVGs5qF2ZvUMcCa7rWpa3qua1LNZmpXzmdzDVq1Te4ClpIQdESkoCU0jaKYRABtM9htV63D09argdfS0dzoKOFp4L9T060tUadAfUeupqdBCBCpUNLFEhYhnbkcdZfhdPrVQco+15A8nozGYCk3BMTtkgAxHZN52ZRfz0lb/mfyjmT0I6TYmD1GPyS40dRSz36WqiFuiiNdJVlsxLTRo0zzFjgBEiRmJ/yg+/kdbyhVvLKkMCBt6yLe835/TBvBUFSGBBv3BP9frxjDp3977P3Ddze5muqWdvyihu0+l9NBzyRbPYKiahhkjPlDFVSiepTxho5F5ew6tbR8imS02gkhKtRTVqAiCXcAw0HkQB+9sbKRdZld1xcXAF4iRe0n7wPeB1be/ysqKpJl9UOqNSwmbnIwfAQBlRCAQcSSJkZC5z4WtV8kkOrepWUbQWB+hAgTFiSB34IwqCeYBBFiD6iBBHcc2mbdvcY5/NLX3W70twko/kKaieeQCeVZ6qpE6RxlHRVWKGPEUTgD1H5Kp54zlEGr1Kq1Sgp00Bjc2523gTIEBQAokXkjnjG4hFQruLuxFhZVImIPUyT2sZ+vysxkEmCQCzEBT4xn2GPH3/Y+2M9bnJKtePYcX9p79PfGtfmH3/YH/IwmzxyFxhjgAe5wf5Ht/8A32OOm9wzNyDYdAb+1jhSrAAzyT+39sJk9HM5YhQxAyFaNTnB/cj7+fP/AOkdJ3oud0foQL3Bueelvr3xtDLaTH/6Aifa9++EqWglbH9oLjxlSUB9/J4484+3t0kfLMf4FAm1oF5PAIv7zjctQgXYye94/b72x1zuB3av2/8A3Bbjbw6okmqb1uTrbW2vKz1ZHl+V/qS/Ty0dBE7kkU1uo447fRoCFjpaeOJQFTA2aHp66bkdKyCABMpkESoosHrHaKlWYglnFR2PUuTHqxjn8y2ar5zMkktXzMieQlyix2VTtA6BRGG9SU8VPAheMAqp4gE/c+4HjJySACcf6dSMAKAdtukGeLzHSeft+rXzhTjWFFEkrMFA5gEAjl9g2Ptj2x5/nz1lCtJ3H/L3kWH0tgxzvWNxaYxW2FwxrJkSQIGyELDwSMkDwT5/y49m6b86wbbTDAXFot0IkH3n9cK8ssbnI4Hp/eeenv7fr9o6AUlmiOAjyyOxIGC3GNF/1yplY/v9x14KBRNpkAreBwWi3Eni/M2HXGLVAzyOhIg3kCb8W9p7fbE4/h09tg397jNs7IyuIrHd6fVtTxRnMtPZrzaHnhkVRn0aimkmSQkcSnNDlS3SPPKmWyLZh1UutlBYKdzrUg88gd7EmDNsJs7mXVWpqbVT5Z4+UgbiB1iLc9DaMamdWfCT2SvHcXcd6tMW6ktVHrTSN70vrPRi0YNFJqK5pS/lerbJ6ahbdU0k0EkldFgJJ6haLBdwK18TZTJeJNCzWk6nRputen+XX5ai6hthAiPQSNpFztjqcKvDniHUfD+oZXNZKq27K10IBJUVKMg1KLEEmHA7QPtiEtXtncO3vc657M6oDLVQVEjWeZ1C01xoJ2b5arg54V1aPAfgTxIbx9+vnL4w8NZ3w7q2d07NqSadQtRzHK16HKOrRFxEjkG0zx9C/CniTJeJ9FymqZJwFrUlWpR4ejXECojL83NlJ+Zbi2LruxK22WXa6/U889vo5dP6mqam5U8ESLWRxV9HB8rMxAwFqlpp0jf9RSIqPHXUHwI1MP4MOQoqtXN0NTzKkKANi1kotTLkfMTtciYgKJtGOVPj7kKtLxhSz1QumXzOl0CrEkh3y71BV2iYWA9IR3M8ziY+kY6a6X2vrkph+X2+P0aVACV+uQvwdj/zJmwjyfYARgDAPV66kXy+UoUt8VqzE1G6xFyOqrzA7kzyMUNkyK+YquBNNFCoOhPv0LcSTaIA7Ho9woEuQFDOqSJVAtVRsvKP5VfIhKkcSjHww/6skkdMVHMeQDWWRs9NMzcuZBbvPvwPcWw5PS3whg7hLi0BO3a9ueIB64gv8QjV9r2I7Rd5NZUVWLRVDStTZrDTQ8YxJeLwpoKOnplwOMkiyzMAv6QpOB1ItAr1tS1LLUWTzj5gLNeSq+pt0SLAcn2wlqZZKYhGCBiAFNxJmLHoRbpOMDFbU8UZ6ibMkhaaaWQ/reQlmZyfdmY8myc5JOfPV1sSI3enaAL2gCwmcblAAhbiel/sIwgSSRYckhgyHkpAZG8AqOJyMH6cH3BB6wDLMjkyLyQfqOxH0tNxgIm2GTcJ4462khplZJJpZPViA5RNTxJ/dlVScxlZWhQccg8yM4HWhipqKAIL7mYA+kIouYi12AESTcRAEbFB2lp+WIJ5mbCYg2B5noBhEpGUVLwgZyz8cnHkt7AD+Pf+B16CIsJ/lmYA9+piOO5OMTcngfsO39/1w8KO3xyyHlFGWzgAZJPH+D7HzjPv/uevERSbqszx3H+5H2uBAgDGRYjgmI688d+v+RwMKEltiiPJ6ZfqwhB8Yz+3jBHn/Q+T1mVQG9O08gmSOwPSY/zpjLfzH9ThLktVI7FuEmGy3gqQM+wxj+GAOPGCP9cDTpzdb3m/9jf/AD2xlvboY+mOc0iRSXelw4XhZqDKtgcmkrLhIMEH7hgSTjJ++Ok9FVNXcpP/AMKIA3AG5jI5F5knqNvUHGxyRTg9ajmR39JibXnnoP6v1ULsqKglCY5YYE5AzjGf3JI8YwMdOESQIBj9QelvftjRhMutd6KmEISeJLhQxAUfYH3BJ8AD+cda6jbVICz7QSJPHA+pNo/fHoEn+4H9cNCntE9TOK+oR8tKhXkCSowSoAICn6Rjzjyck+/SNcuSwqvcliYgzwRA95jiZi2FBqgLsTgiJMAT1PXt/wAe7huaKlDDEq5LGTDE54kqmCo8AE+eWc4wAPPsoYg+kCCUN47lRMm4teI/voAiDNtwH9Z45Ef7/e//APD36ShvPcrqe5zxGX+ndvKmWORskI9fXrD5x9BDBcgMcjgOOTlli/i6qaGlKVaC1UIR3AIMi14gcGLyOmE1UCpWogjrUb2kACCZ67j+h7Y2OXOwLTj8woE9GpjwX8EK6qDnKnCnH8ZJBJ8eT1WeXznmfk1W3I0gGbgniY44txHc4yqUAn5iCGHMDp/Xvf8AcWiqT4pnbhft1tpaHdvamjb/ABv2waK4Wi20kbyT6xsrSItbZYI4gXnqiMvQg+ROBEzKr5NdfETwFT8V5B6uXpNUz+RWoaLIEDVVYAtQeYM/x078iwxaHwz8f1fCWojL5qsiaXn3Tz/MLlaNRZC1U2yAIJR7RBmemH/2WbM640NtzQy6nFau4mv6Cy3bV1vdnSGwelSs9HZ6iPJSOqoVqZfnQ4LR1DNAoyjZd/hb4EoeAdDq19RcDUc+4q5hBUL06aoGFKlSAO1nKsSzgTJ2zAu2/Ffx9U8ea5Sy+nKBpenK1KhU8sK9Z6kedUcxuCekBE3RAmAxtZtpnT0Gn7ZDRKRNNn1amYjBllxlmPt7AcQAPYAeT46kOfzr5yu1W4UDai8wot078kiLkmwxCMplloUwg+rHiSSfoQPrJERhxUSF2mqH8+oxRfbxGmQPY4Gfc/cfvgdIq5gJSA4ALe7G8f57dsKkElnP8RIH/asj9+uM3X4gjew0Wk9pdi7bWcJdQ3St1rqCnSTBa12kfJ2lZVU5XNaJZVDjDKeX7Zsn4fZMLVzOcYAmnTWnTsTDvdjyAIFr9eBzhJX/ADHAvAuTbaw4jiZESOIvfGVS70sNwppKSqiD08iENwcxu6keysuD7DxgH3Az56s6p+ahp1BuUgjsb9jjBF8ttyEjgxyLdb3n74ZSUVVQSNClZ8zRFOMUNWMVMTjxGiSqcSKTx/WARkZJPSVKTU3gVd1OLLUHrUiLbxYjpcAxxIONrOGElQHkyVPpInt0PeMIlPGaiuq6/LPGheip2ADD06L1RLIpAKn16sztyX6ZYlhOSAOvFRi1SoByDTTrtVGYN+rSZvKgHpj1jCqnb1N2JYAji9hY9QZGEWjRnuIyFGZMnkcEZOc/c5/fGP8A662gRIkXESY9ukCL9xP1icazcn/iP2x0FlFK8M8c6AK2WDBlBz/3FR59sEkff79egAXDAkyAL2P3/a0YMOSVJJ6aN1BIfzyBVgzccghv2PsQT4+3k9bijkWUmRIgSPbiYP1uMY7lkiRI6G39cJ8dDNjLrhsKMD7+/nzgYH7e4z1h5LmZVhew2k493KOWA+4xxKnj436Bc/StitLED7HE58Z/nJ+2c+ekVIbax7LTpWF59Ii5i0T94woqf/Gsi+97jrwb8d/298Otp2gWQJ5MhIyT7Y9v58fb/wDPBUkkFvuBfi/9hGNGE4QqI2mmJkd2/wDGD4/bwG8+3+3gHot0ub3MfXi/v/z0wYWkp+FLTlXOHl5EEf5Y2IHjwR59yD+/8desQqoL3I/v1H7f3x6BM+wJwnXSPlTQsccVLg+PP1Fc4XwD+nGCcAE4xk9BW5YxJETAJtfmARIFwDzHIwT0k2v/AJfpjTp+HCtNNJuRvvceC+vbtE6Qpo3IBcLcLpfDLj6ceRRxZwUxxAw2SRBvHrL/AKVkQojdmnvJkgUwbmTJvF+kX5nWARmlk2FJjHSSVFrWsOkfpjWbdpRT0jOV5ADBH/z7/vn9xj/26q7KoXqgAx/n+2FFRtqk8zb9cVMfEZ7idy9h9FaKr9v6HTs0V81PBbb7UXmpucVwp7bUZ5QWM2+NVpqiVVb1KuScNGDxijDN6i2Z4U0ijqeYzNGo7LUGXd6QAC02qURvLVm9ZKgAwoptv4JSdwjuoZkUQhO6AwBIAYgOCQFUlYJ4LbgU5AbjFmO0stNXbc6Kv0VDFRVGodK2C8VKJLJUOs1wtVLVSI9VOPmKgo8rASTM0jfqdi5YmvdWq1Hz2YpvUZ1o1qlNAbBQrGAFBgCLe49rYfMjTRaNMqoUuoLEASTBkkkXv3w/5GKwufGXcxp4/SAQCTn2J/cZ8E+3jDegBdR0Vdze9iRH+DphaxIQ3uSVBt3i+P62xDSBRnwgGR48vgZ/f7+fJJ61CXrSe5Jm/GPT6EMcARb9J/3xhG+K9urdd1+97d+Ou9eGg2/uUegLLSSuHWKjsUSRy1CAMRH87OzTyIucMc5B8dX34RyVKjo1AKT5lXdVqGBBZiQI6wALzPtHGG2o7K5YgEMYEcwOJtEgdjB7TfFZlZxRSpUZGVOD7ouPGSMjzjH38e/UhZShgxPt/gxmrBxImPf/AA4Yt/neCklkiCiZEEcDN7LU1MkdLTPJjyYopqiOVwPqwh4qSQOktZjtcjkCFmI3EhVYiLhWYGPb3IO2mAWE8C57wLmPfpfCZEEpaQU0ZcLSU7xqvIkMI1MaEknycH6iVyxOT7AEUlECySFUAX/lAuBMAmJNueIxifUxNgWP9T/S+G/ZlElc7sq+WzkZ5Z8n+Bjx98/7dAMie4Eft/4t+vTHmHpXRkU5JOQ0ZI/cED6TjGAR/B6yIgDub/Y/+Pb784MKNhqDNTQiQsQOanB8kJjJAzgEn29x7+3jrYhkfT3nt+nTBj879WV8UlNSWyoFNPIs1Q80gYIYYTFF6eI2Lc2eZW/ygR+5LfTi7uIVXZDc2JiOO4vx0++CFN2UMLC/39vY/rj/2Q==
رضا اسدی ۹۸/۱۰/۲۷ زمان موردنیاز برای مطالعه ۳۵ دقیقه

پروگرام کردن STM32 با استفاده از سه روش کلی JTAG و SWD و بوت لودر انجام می شود. میکروکنترلرهای STM32 می توانند از طریق رابط JTAG و SWD برنامه ریزی و دیباگ شوند. در این روش پایه های JTAG یا SWD میکروکنترلر به پروگرامری که قابلیت JTAG یا SWD دارد، متصل می شود. روش دیگر استفاده از بوت لودر است. منظور ما از بوت لودر در این نوشته، Embedded bootloaderی است که شرکت سازنده روی میکروکنترلر قرار داده است. در این روش نیاز به پروگرامر نیست و با اتصال میکروکنترلر به کامپیوتر توسط یک سخت افزار ساده، می توان آن را برنامه ریزی کرد. برای تکمیل مطالب این نوشته، یک میکروکنترلر STM32 را در هر سه روش با سخت افزارها و نرم افزارهایی که ذکر خواهند شد، برنامه ریزی کرده ایم. در ادامه، ابتدا به اتصالات این سه روش می پردازیم. سپس سخت افزارهایی را که در برنامه ریزی میکروکنترلر برای این نوشته استفاده کرده ایم، معرفی می کنیم. در نهایت به معرفی نرم افزارهای استفاده شده می پردازیم.

موضوع این نوشته، معرفی روش های پروگرام کردن STM32 و نحوه برنامه ریزی STM32 است. این روش ها عبارتند از:

  • • پروگرام کردن STM32 با JTAG؛
  • • پروگرام کردن STM32 با SWD؛
  • • پروگرام کردن STM32 با بوت لودر.

بنابراین از بیان مطالب تکراری یا مطالبی که خود موضوع نوشتۀ دیگری هستند، خودداری می کنیم. در ادامه، به پروگرامر J-Link و پروگرام کردن STM32 با آن توسط نرم افزار Keil و J-Flash، اشاره خواهیم کرد. همچنین اشاره ای به نرم افزار ST-Link Utility خواهیم داشت. مباحث مذکور، موضوع این دو نوشتۀ وبلاگ یوبرد هستند:

برای یادگیری روش های پروگرام کردن STM32، بهتر است این دو نوشته نیز مطالعه شوند.

st-link-utility-j-flash

تصویر 1 – پروگرام کردن میکروکنترلرهای STM32 با نرم افزارهای J-Flash و ST-Link Utility

 

نکتۀ دیگری که باید مورد توجه قرار گیرد این است که ممکن است حین برنامه ریزی میکروکنترلرهای STM32 خطاهایی به وجود بیاید. ذکر همۀ این خطاها و روش های رفع آنها فراتر از حوصلۀ این نوشته هستند. بنابراین در انتهای نوشته، به بخشی از این خطاها و روش رفع آنها می پردازیم. اگر در مراحل پروگرام کردن STM32 خطایی به وجود آمد، می توانید آن را در نظرات به اشتراک بگذارید. مخاطبان محترم و یا اعضای یوبرد، روش های رفع آنها را در پاسخ بیان می کنند.

ما در این نوشته از یک میکروکنترلر و دو پروگرامر و تعدادی نرم افزار برای مبحث پروگرام کردن STM32 استفاده کرده ایم. و موضوع روش های برنامه ریزی را برای این نرم افزارها و سخت افزارها مورد بررسی قرار داده ایم. ذکر تمام جزئیات برای تمام نرم افزارها و تمامی میکروکنترلرهای STM32 و پروگرامرهای موجود، امکان پذیر نیست. این نوشته می تواند راهنمایی مناسب برای برنامه ریزی میکروکنترلرهای STM32 دیگر با پروگرامرها و نرم افزارهای دیگر باشد. در صورتی که نیاز باشد، در نوشته های آینده به مباحث دیگری حول موضوع حاضر می پردازیم.

پروگرامر-نرم-افزار-برنامه-ریزی.png

تصویر 2 – نرم افزارها و سخت افزارهای استفاده شده در این نوشته

 

فعال کردن JTAG و SWD در STM32

برای برنامه ریزی میکروکنترلرهای STM32 با JTAG و SWD لازم است که این پروتکل های ارتباطی در میکروکنترلر فعال باشند. این پروتکل های ارتباطی برای برنامه ریزی و دیباگ میکروکنترلرهای سری STM32F103 به صورت پیش فرض فعال هستند. فعال سازی و غیر فعال سازی آنها با مقداردهی به بیت های 24 تا 26 رجیستر MAPR انجام می شود. نام این سه بیت، SWJ CFG است و مقدار آنها برای STM32F103 به صورت جدول زیر است. در وضعیت اول که وضعیت پیش فرض است، همۀ پایه های مربوط، به JTAG و SWD اختصاص داده شده است. در این حالت هر دو پروتکل JTAG و SWD برای پروگرام کردن STM32 در دسترس است. در وضعیت دوم پایۀ PB4 آزاد می شود. این حالت نیز مانند حالت قبل است. تفاوت آن این است که در JTAG پایۀ NJTRST که به پایۀ nTSRT پروگرامر متصل می شد، در دسترس نیست. در وضعیت سوم، JTAG غیر قابل دسترس و SWD در دسترس است. در این حالت PA15 و PB3 و PB4 آزاد هستند و میکروکنترلر دیگر از طریق JTAG نمی تواند پروگرام شود. در وضعیت چهارم، JTAG و SWD غیر قابل دسترس هستند و نمی توان میکروکنترلر را با آنها پروگرام کرد. همچنین همۀ پایه های مربوط به آنها آزاد هستند.

نکته: برای این که بتوانیم رجیستر MAPR را تغییر دهیم، باید بیت صفرم رجیستر APB2ENR را یک کنیم.

SWJ CFG [2:0]

Available debug ports

SWJ IO pin assigned

PA13 /
JTMS /
SWDIO

PA14 /
JTCK /
SWCLK

PA15 /
JTDI

PB3 /
JTDO

PB4 /
NJTRST

000

Full SWJ (JTAG-DP + SW-DP) - Reset State

X

X

X

X

X

001

Full SWJ (JTAG-DP + SW-DP) but without NJTRST

X

X

X

X

 

010

JTAG-DP Disabled and SW-DP Enabled

X

X

Released

100

JTAG-DP Disabled and SW-DP Disabled

Released

جدول 1 – بیت های مربوط به فعال یا غیر فعال کردن JTAG و SWD

 

پایه-jtag-swd-stm32f103ve

تصویر 3 – پایه های مربوط به JTAG و SWD در STM32F103VET6

 

اتصالات JTAG برای پروگرام کردن STM32

در این روش از پروتکل ارتباطی JTAG بین میکروکنترلر STM32 و پروگرامر استفاده می شود. پایه های رابط JTAG که برای این ارتباط استفاده می شوند، عبارتند از:

  • • nTRST یا TRST؛
  • • TDI؛
  • • TMS؛
  • • TCK؛
  • • TDO؛
  • • nSRST یا SRST یا RESET یا NRST؛
  • • VAPP یا VTref (پایۀ مرجع ولتاژ)؛
  • • GND.

این پایه ها به ترتیب به پایه های NJTRST و JTDI و JTMS و JTCK و JTDO و NRST و VDD و زمین میکروکنترلر STM32 وصل می شوند. در اتصالات JTAG باید به این نکات توجه کنیم:

  • 1- برای پایه ها باید مقاومت های پول آپ و پول دون در نظر گرفته شود. پیشنهاد می کنیم TDI و TMS، پول آپ و TCK، پول دون شود (فلش های سبز در تصویر زیر). مقدار مقاومت ها نیز 100 کیلو اهم باشد.
  • 2- در ارتباط JTAG پایه های دیگری نیز وجود دارد. برخی پروگرامرها این پایه ها را دارند و برخی ندارند. برخی پروگرامرها علاوه بر پایه های JTAG، پایه های دیگری نیز دارند. در این موارد باید مطابق دفترچۀ راهنمای پروگرامر عمل کنیم.
  • 3- پایۀ nTRST را می توان در برنامه ریزی STM32 با JTAG استفاده نکرد. اتصال یا عدم اتصال آن در پروگرام کردن STM32 با ST-Link و J-Link، تفاوتی ندارد.
  • 4- در پروگرام کردن با JTAG باید المان تحت پروگرام دارای تغذیه باشد. پروگرامرهای J-Link و ST-Link این تغذیه را روی پایۀ 19 فراهم و نیاز به تغذیۀ خارجی را برطرف کرده اند. این پایه در بردهایی که دارای رگولاتور هستند، می تواند به ورودی رگولاتور متصل شود. در اتصال مستقیم این پایه به میکروکنترلر، باید به محدودۀ ولتاژ تغذیۀ میکروکنترلر توجه شود.
  • 5- پایۀ VAPP یا VTref که ممکن است در پروگرامرهای دیگر نام متفاوتی داشته باشد، یک ورودی برای پروگرامر است. به این صورت که مستقیماً به پایۀ VDDمیکروکنترلر متصل می شود.

اتصالات-jtag

تصویر 4 – اتصالات لازم برای پروگرام کردن STM32 با JTAG

 

اتصالات SWD برای پروگرام کردن STM32

در این روش، پروتکل ارتباطی SWD بین میکروکنترلر و پروگرامر برقرار می شود. پایه هایی که در این پروتکل استفاده می شوند عبارتند از:

  • • SWDIO؛
  • • SWCLK؛
  • • SWO؛
  • • RESET؛
  • • VAPP یا VTref (پایۀ مرجع ولتاژ)؛
  • • GND.

که به ترتیب به پایه های SWDIO و SWCLK و TRACESWO و NRST و VDD و زمین میکروکنترلر STM32 متصل می شوند. در اتصالات SWD به نکات زیر توجه شود:

  • 1- پایه های SWD باید با مقاومت های پول آپ و پول دون به زمین و VDD متصل شوند. پیشنهاد می کنیم پایۀ SWDIO با مقاومت 100 کیلو اهم پول آپ و پایۀ SWCLKنیز با همین مقدار مقاومت پول دون شود (فلش های سبز در تصویر زیر).
  • 2- در پروگرام کردن STM32، اتصال پایۀ SWO اختیاری است.
  • 3- همانند پروگرام با JTAG، در برنامه ریزی با SWD نیز باید المان تحت پروگرام دارای تغذیه باشد. در پروگرامرهای J-Link و ST-Link، یک منبع تغذیه روی پایۀ 19 وجود دارد. ولتاژ این منبع تغذیه در J-Link برابر 5 ولت و در ST-Link برابر 3.3 ولت است. اتصال این پایه در روش SWD همانند روش JTAG است.
  • 4- عملکرد و روش اتصال پایۀ VAPP یا VTref در اینجا نیز مانند JTAG است.

اتصالات-swd

تصویر 5 - اتصالات لازم برای پروگرام کردن STM32 با SWD

 

اتصالات لازم برای پروگرام کردن STM32 با بوت لودر

میکروکنترلرهای STM32 به صورت پیش فرض دارای بوت لودر داخلی در حافظۀ سیستم هستند. این بوت لودر که توسط شرکت سازنده در آن قرار گرفته است، با عنوان Embedded Bootloader شناخته می شود. سری های مختلف STM32 بوت لودرهایی دارند که می توانند پورت های مختلف را برای برنامه ریزی میکروکنترلر استفاده کنند. مثلاً در برخی میکروکنترلرهای سری STM32F10xxx، بوت لودر، واحد USART1 را برای پروگرام کردن استفاده می کند. یا میکروکنترلرهای سری STM32F09xxx، بوت لودر قابلیت به کارگیری USART1 و USART2 و I2C1 را برای پروگرام کردن میکروکنترلر دارد. برای فعال سازی بوت لودر سری های مختلف، الگوهایی وجود دارد که به آنها Bootloader Activation Pattern می گویند.

در این بخش به اتصالات لازم برای پروگرام کردن STM32F103VET6 با بوت لودر می پردازیم. بوت لودر این میکروکنترلر از USART1 استفاده می کند. پایه های TX و RX واحد USART1 به ترتیب روی PA9 و PA10 قرار دارند. در قسمت بالای تصویر زیر، اتصالات برای مبدل های USB به سریال آورده شده است. قسمت پایین تصویر نیز، نحوۀ اتصال میکروکنترلر را به کامپیوتر از طریق پورت سریال و استفاده از Level Converter نشان می دهد. توصیه می شود که اگر در سمت کامپیوتر از مقاومت های پول آپ استفاده نشده است، پایه های RX و TX سمت میکروکنترلر، پول آپ شوند. سمت راست تصویر، الگوی فعال کردن بوت لودر را نمایش می دهد. برای فعال سازی بوت لودر در STM32F103VET6 باید پایۀ BOOT0 به VDD و پایۀ BOOT1 به زمین وصل شود. به این ترتیب پس از روشن شدن یا ریست میکروکنترلر، بوت لودر موجود در حافظۀ سیستم اجرا می شود.

اتصالات-usart-پروگرام-بوت-لودر

تصویر 6 – پروگرام کردن STM32 با بوت لودر، اتصالات لازم برای STM32F103VET6

 

سخت افزارهای برنامه ریزی، پروگرامر STM32

برای برنامه ریزی میکروکنترلرهای STM32، پروگرامرهای مختلفی وجود دارد. یکی از پروگرامرهایی که در نوشته های یوبرد دربارۀ آن صحبت کرده ایم، J-Link است. پروگرامر دیگری که در نوشته های آینده به آن می پردازیم، ST-Link است. با استفاده از این پروگرامرها می توان میکروکنترلرهای STM32 را با پروتکل های ارتباطی JTAG و SWD برنامه ریزی کرد. کافی است پایه های آنها را طبق مطالب بخش های قبل برای روش مورد نظر به میکروکنترلر متصل کرد. و با یکی از نرم افزارهایی که در ادامه ذکر خواهیم کرد، به برنامه ریزی میکروکنترلر پرداخت. برای پروگرام کردن از طریق بوت لودر نیز باید کامپیوتر با یک سخت افزار واسط به میکروکنترلر متصل شود. در استفاده از بوت لودر USART، برای کامپیوترهای بدون پورت سریال، می توان از مبدل USB به سریال استفاده کرد. کامپیوترهایی هم که پورت سریال دارند، باید با یک مبدل سطح ولتاژ مثل MAX232 به میکروکنترلر وصل شوند. در این نوشته روش های پروگرام کردن STM32 با پروگرامرهای J-Link و ST-Link و مبدل USB به سریال CP2102 انجام شده است. برای این منظور از برد توسعۀ STM32F10 یوبرد که میکروکنترلر STM32F103VET6 روی آن قرار دارد، استفاده شده است. روی این برد توسعه یک پروگرامر ST-Link وجود دارد که می تواند میکروکنترلر اصلی را با روش SWD پروگرام کند. برای استفاده از پروگرامر ST-Link روی برد، باید پایه های هدر نری روی برد مانند تصویر زیر (رنگ سبز) به هم وصل شوند. این برد همچنین یک مبدل USB به سریال CP2102 دارد که پایه های آن به USART1 میکروکنترلر متصل می شود. برای اتصال پایه های CP2102 به USART1 میکروکنترلر نیز باید پایه های هدر نری روی برد به صورت زیر (رنگ قرمز) به هم وصل شوند.

پروگرامر-jlink-stlink-cp2102

تصویر 7 – بردهای توسعۀ STM32 و CP2102 و MAX232 یوبرد و پروگرامرهای ST-Link و J-Link

 

نرم افزار برنامه ریزی میکروکنترلرهای STM32

در نوشتۀ پروگرامر J-Link، نحوۀ کار با نرم افزار J-Flash و J-Flash Lite برای پروگرام کردن STM32 بیان شده است. در  آن نوشته نحوۀ به کارگیری J-Link در  Keil برای میکروکنترلر LPC1768 آمده است. تنظیمات Keil و همچنین نحوۀ برنامه ریزی در آن با J-Link و ST-Link، برای STM32 نیز به همان ترتیب است. همچنین در نوشتۀ نرم افزار ST-Link Utility، نحوۀ کار با این نرم افزار شرح داده شده است. در این نوشته مطالب موجود در نوشته های مذکور را تکرار نمی کنیم و پیشنهاد می کنیم برای یادگیری پروگرام کردن STM32 با نرم افزار Keil و J-Flash و J-Flash Lite و ST-Link Utility، آن نوشته ها را مطالعه نمایید. توجه شود که چهار نرم افزار نام برده، قابلیت برنامه ریزی STM32 را با روش های JTAG و SWD دارند.

نکته: در نرم افزارهای مذکور، ممکن است لازم باشد Connect شدن پروگرامر به میکروکنترلر، روی Under reset تنظیم شود. در این صورت باید لحظاتی، کلید Reset میکروکنترلر را نگه داریم و در نرم افزار روی دکمۀ Connect کلیک کنیم. و سپس کلید Reset را رها کنیم. در نرم افزار Keil دکمۀ Connect برای اتصال پروگرامر وجود ندارد و این کار برای دکمۀ Download انجام می شود. همچنین تنظیم مدهای Connect در نرم افزار J-Flash وجود ندارد. در تصویر زیر مدهای Connect در نرم افزار ST-Link Utility و Keil نمایش داده شده است.

مد-connect-under-reset

تصویر 8 – مد Connect under reset در ST-Link Utility و Keil

 

نرم افزار STM32CubeProgrammer

نرم افزار دیگری که قابلیت پروگرام کردن STM32 را با روش های JTAG و SWD دارد، STM32CubeProgrammer است. این نرم افزار همچنین می تواند میکروکنترلرهای STM32 را با روش بوت لودر برنامه ریزی کند. STM32CubeProgrammer را در نوشته های آینده بررسی خواهیم کرد. در اینجا به طور مختصر نحوۀ برنامه ریزی STM32 را با سه روش JTAG و SWD و بوت لودر USART بررسی می کنیم. لازم به ذکر است که این نرم افزار تنها از پروگرامر ST-Link پشتیبانی می کند. پس از اتصال پروگرامر ST-Link یا برقراری اتصالات مربوط به برنامه ریزی با بوت لودر، پروگرامر یا پروتکل ارتباطی بوت لودر را انتخاب می کنیم (1). هنگام استفاده از ST-Link از قسمت Port روش JTAG یا SWD را انتخاب می کنیم (2). تنظیمات دیگر را در این بخش انجام می دهیم (3). در برنامه ریزی با بوت لودر نیز پورت مورد نظر و دیگر مشخصات آن را تعیین می کنیم (4). سپس روی دکمۀ Connect کلیک می کنیم (5). در ادامه روی تب Open file یا علامت + کلیک و فایل HEX مورد نظر را جست و جو و باز می کنیم (6). پس از باز شدن فایل HEX در حالی که تب فایل باز شده نمایش داده می شود، روی دکمۀ Download کلیک می کنیم (7). به این ترتیب میکروکنترلر پروگرام و پیامی مبنی بر موفقیت آمیز بودن عملیات نمایش داده می شود. با کلیک روی OK آن را می بندیم (8).

نکته: در STM32CubeProgrammer نیز هنگام برنامه ریزی با ST-Link، ممکن است لازم باشد مد Connect را Under reset تنظیم کنیم.

پروگرام-کردن-stm32cubeprogrammer

تصویر 9 – پروگرام کردن STM32 با نرم افزار STM32CubeProgrammer

 

نرم افزار STM32 Flash loader demonstrator

این نرم افزار که با نام Flasher-STM32 نیز شناخته می شود، برای پروگرام کردن STM32 با بوت لودر USART است. برای کار با این نرم افزار، ابتدا الگوی فعال سازی بوت لودر را پیاده می کنیم. پس از برقراری ارتباط سریال میکروکنترلر و کامپیوتر و Reset کردن میکروکنترلر، این نرم افزار را اجرا می کنیم. سپس پورت سریال صحیح را در قسمت Port Name انتخاب و تنظیمات دیگر را مطابق تصویر انجام می دهیم (1). روی Next کلیک می کنیم. با این کار میکروکنترلر توسط نرم افزار شناسایی می شود (2). در مرحلۀ بعد نوع صحیح میکروکنترلر را با توجه به مقدار حافظۀ Flash انتخاب می کنیم (3).

نکته: مقدار Baud Rate باید بین 1200 تا 115200 باشد.

نکته: پورت سریال مورد استفاده نباید توسط نرم افزار دیگری باز باشد. مثلاً نباید آن را با ترمینال پورت سریال موجود در نرم افزار Hercules باز کرده باشیم.

نرم-افزار-flash-loader-demonstrator

تصویر 10 – نحوۀ کار با نرم افزار STM32 Flash loader demonstrator

 

گام بعدی، عملیاتی است که می خواهیم روی حافظۀ میکروکنترلر انجام دهیم. برای پروگرام کردن میکروکنترلر، گزینۀ Download to device را انتخاب می کنیم (4). در بخش Download from file، فایل HEX مورد نظر را جست و جو و باز (5) و نوع پاک کردن حافظه و اعمال دیگر روی حافظه مثل Verify و ... را تنظیم می کنیم. سپس روی Next کلیک می کنیم. بدین ترتیب، پروگرام کردن STM32 با بوت لودر USART آغاز و نتیجۀ آن نمایش داده می شود (6 و 7). در نهایت می توانیم با کلیک روی Close از برنامه خارج شویم. و یا می توانیم با کلیک روی Back به مرحلۀ قبل برگردیم. اعمال دیگری که می توانیم با این نرم افزار روی حافظۀ Flash میکروکنترلر انجام دهیم، عبارتند از: پاک کردن، خواندن، حفاظت محتویات و همچنین تنظیمات مربوط به Option bytes.

برنامه-ریزی-flasher

تصویر 11 – نحوه پروگرام کردن STM32 با بوت لودر توسط نرم افزار STM32 Flash loader demonstrator

 

رفع برخی خطاهای پروگرام کردن STM32

در پروگرام کردن STM32 با نرم افزارها و پروگرامرهایی که استفاده کردیم، ممکن است خطاهایی رخ دهد. برخی از این خطاها و روش رفع آنها در ادامه ذکر شده اند:

  • • اگر میکروکنترلر در حال اجرای برنامه باشد و بخواهیم آن را در نرم افزار Keil و پروگرامر J-Link برنامه ریزی کنیم، ممکن است خطایی با عنوان "Contents mismatch at: ..." ظاهر شود. برای رفع این خطا می توان پایۀ Boot0 را به VDD و پایۀ Boot1 را به زمین وصل کرد.
  • • خطای قبل ممکن است در پروگرام کردن با Keil و ST-Link نیز رخ دهد. این خطا با اتصال پایۀ NRST میکروکنترلر به پروگرامر رفع می شود. همچنین می توان از مد Connect under reset و نگه داشتن کلید Resetهنگام آغاز برنامه ریزی استفاده کرد.
  • • گاهی در استفاده از Keil و ST-Link، از تغذیه ای به غیر از تغذیۀ پروگرامر استفاده می کنیم. در این صورت ممکن است خطاهای مختلفی به وجود بیاید. گاهی با قرار دادن مد Connect روی under reset و نگه داشتن کلید reset حین شروع برنامه ریزی، این خطا رفع می شود. راه بهتر این است که از تغذیۀ پروگرامر استفاده شود.
  • • در نرم افزار ST-Link Utility گاهی ممکن است خطای Timeout during flash programming به وجود بیاید. برای رفع این خطا یا باید از تغذیه ای به غیر از تغذیۀ پروگرامر استفاده کنیم. یا این که Boot0 را به VDD و Boot1 را به زمین وصل کنیم.
  • • در اتصال به پروگرامر در STM32CubeProgrammer، گاهی خطای DEV TARGET RESET ERRبه وجود می آید. این خطا با قرار دادن مد Connect روی under reset و نگه داشتن کلید Reset حین اتصال، رفع می شود. همچنین می توانیم مد Connect را روی Hot plug قرار دهیم. در این صورت نیازی به نگه داشتن کلید Reset حین اتصال نیست.

خطا-عدم-اتصال-stm32cubeprogrammer

تصویر 12 – خطای عدم اتصال پروگرامر ST-Link به STM32 و رفع آن

 

نتایج پروگرام کردن STM32 با JTAG و SWD و بوت لودر

  • 1- سه روش برای برنامه ریزی میکروکنترلرهای STM32 وجود دارد: روش JTAG، روش SWD و روش بوت لودر. بوت لودر مورد بحث ما، Embedded bootloaderی است که شرکت ST روی تراشه قرار داده است. به این بوت لودر گاهی بوت لودر STM32 می گویند.
  • 2- برای برنامه ریزی STM32 به روش های JTAG و SWD، باید این دو پروتکل در میکروکنترلر فعال باشد. در غیر این صورت پروگرامر با این دو پروتکل نمی تواند با میکروکنترلر ارتباط برقرار کند. در صورتی که این دو پروتکل فعال نباشند، می توان با پروگرام از طریق بوت لودر، آنها را فعال کرد.
  • 3- پایه های اصلی پروتکل JTAG عبارتند از TDI و TMS و TCK و TDO.
  • 4- پایه های اصلی پروتکل SWD عبارتند از: SWDIO و SWCLK و SWO.
  • 5- در برنامه ریزی با بوت لودر باید الگوی فعال سازی بوت لودر در سخت افزار پیاده شود.
  • 6- برنامه ریزی STM32با پورت سریال با استفاده از روش بوت لودر امکان پذیر است. در این صورت برای کامپیوترهایی که پورت سریال سخت افزاری ندارند، برنامه ریزی STM32 با مبدل USB به سریال انجام می شود. کامپیوترهای دارای پورت سریال سخت افزاری نیز باید با یک مبدل سطح ولتاژ به میکروکنترلر وصل شوند.
  • 7- برنامه ریزی STM32 با پروگرامر ST-Link با روش های JTAG و SWD انجامی می شود.
  • 8- برنامه ریزی STM32 با پروگرامر J-Link نیز با روش JTAG و SWD قابل انجام است.
  • 9- برنامه ریزی STM32 با نرم افزار Keil می تواند توسط پروگرامرهای مختلفی انجام شود. این نرم افزار از J-Linkو ST-Link پشتیبانی می کند. همچنین با هر دو پروگرامر می تواند به روش های JTAG و SWDمیکروکنترلر را برنامه ریزی کند.
  • 10- برنامه ریزی STM32 با ST-Link Utility فقط با پروگرامر ST-Link انجام می شود. در این نرم افزار می توان به دو روش JTAG و SWD، میکروکنترلر را پروگرام کرد.
  • 11- برنامه ریزی STM32 با STM32CubeProgrammer به روش های JTAG و SWD و بوت لودر انجام می شود. این نرم افزار تنها از ST-Link پشتیبانی می کند.
  • 12- برنامه ریزی STM32 با J-Flash فقط با پروگرامرهای J-Link امکان پذیر است. در این نرم افزار با روش های JTAG و SWD می توان میکروکنترلر را پروگرام کرد.
  • 13- برنامه ریزی STM32 با نرم افزار Flasher-STM32 تنها با بوت لودر USART انجام می شود.

 

data:image/jpeg;base64,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
رضا اسدی
مدیر یوبرد، طراح و تولید کنندۀ محصولات مبتنی بر میکروکنترلرها، مجری پروژه و مدرس آموزش برنامه نویسی میکروکنترلرها و برد مدار چاپی PCB، فعال در طراحی خودروهای الکتریکی
اگر دیدگاهی دارید میتوانید از طریق فرم زیر دیدگاه خود را در سایت درج کنید.
نویسنده: مرتضی تاریخ: ۹ دی ۱۳۹۹ ساعت: ۰۲:۱۸:۴۰ ق.ظ
سلام و ممنون به خاطر اشتراک گذاشتن دانشتون یه سوال داشتم اگر کمکی در حلش بکنید ممنون میشم بنده پروگرامر st-link v2 رو دارم و باهاش هدربرد اماده stm32f103c8t6. رو پروگرام می کنم و بدون هیچ مشکلی پروگرام میشه منتها یه مدل stm32f405rg56 دارم یعنی تنها ای سیشو دارم و خودم رو برد وصل کردم اومدم بوت صفر و یک و پایه های پروگرام رو هم وصل کردم اما هر کاری می کنم پروگرامر نمیشناسه الان من نمی تونم یه چشمک زن با این درس کنم بوت صفر و یک هر دو رو به زمین و پایه های سریال پروگرامر رو با مقاومتای ده کیلو به تغذیه و زمین وصل می کنم یه بار بدون تغذیه خارجی تست کردم و یه بار دیگه با تغذیه خارجی اومدم اتصالاتم رو چک کردم دیدم که درستن و بیشتر از ۳.۳ ندادم که بگم سوخته دونه دونه پایه های ای سی رو هم چک کردم که لحیم سرد نداشه باشه و همه وصلن خلاصه کلافه شدم اگر کمک کنید ممنون میشم
نویسنده: رضا بداغی تاریخ: ۱۲ دی ۱۳۹۹ ساعت: ۰۴:۱۶:۵۶ ب.ظ

سلام. خواهش میکنم. دوست عزیز فقط برای پروگرام کردن با بوت لودر نیاز دارید که پایه های Boot رو پول آپ یا پول دون کنید. تو پروگرام کردن با پروگرامر ST-Link با نرم افزار ST-Link Utility امتحان کنید. همچنین این نرم افزار رو که باز کردید، از طریق منوی ST-Link فرم ور پروگرامرتون رو آپدیت کنید و از تنظیمات نرم افزار، پروتکل ارتباطی صحیح رو انتخاب کنید. JTAG یا SWD. اتصالات هم مطابق تصاویر این نوشته باشه. موفق باشید

نویسنده: احسان تاریخ: ۷ شهریور ۱۳۹۹ ساعت: ۰۹:۳۱:۱۶ ب.ظ
سلام استاد تشکر بابت توضیحات کاملتون فقط من هنوز نمیدونم چطوری پایه های میکروکنتلر رو به پروگرامر stlink باید وصل کنم؟ تا بتونم برنامه رو به میکرو آپلود کنم؟؟؟
نویسنده: رضا اسدی تاریخ: ۷ مهر ۱۳۹۹ ساعت: ۱۱:۰۱:۲۴ ق.ظ

سلام خواهش میکنم. باید پایه SWCLK و SWDIO از پروگرمر رو به پایه های متناظر در میکروکنترلر متصل کنید. در میکروکنترلرهای 100 پایه از ST معمولا به ترتیب پایه های شماره PA14 و PA13 هستن. همچنین باید پایه SWCLK با یک مقاومت PULL-DOWN و پایه SWDIO با یک مقاومت PULL-UP شود.

نویسنده: mohammad60zandi تاریخ: ۲۶ اسفند ۱۳۹۸ ساعت: ۰۹:۴۰:۵۵ ق.ظ
بسیار عالی بود استاد. فقط من توی برنامه ریزی با پروگرمر خارجی با نرم افزار STM32CuleIde مشکل دارم. برنامه ریزی با Keil خوب انجام میشه. ولی با STM32CubeIde هرکاری میکنم نمیشه. اگر موردی میدونید که ممکنه کمکم کنه ممنون میشم بفرمایید.
نویسنده: رضا اسدی تاریخ: ۱۲ فروردین ۱۳۹۹ ساعت: ۱۲:۴۷:۳۰ ق.ظ

خواهش میکنم. نرم افزار STM32CubeIDE ورژن اول، قابلیت Connect Under Reset رو نداشت. احتمالاً به خاطر نبودن این گزینه برای پروگرام کردن، با استفاده از بعضی ورژن های پروگرامر به مشکل میخوردید. با ورژن جدید نرم افزار امتحان کنید. اگه با همین پروگرامر و با نرم افزار Keil میتونید کار کنید، ورژن پروگرامرتون رو عوض کنید و با نرم افزار STM32CubeIDE ورژن آخر مجدد امتحان کنید.

فرم پاسخ به دیدگاه