{"id":416180,"date":"2024-06-30T00:48:25","date_gmt":"2024-06-30T00:48:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=416180"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-06-30T00:48:25","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=416180","title":{"rendered":"<span>\u0421\u0431\u043e\u0440\u043a\u0430 firmware \u0434\u043b\u044f CC2652 \u0438\u0437 Makefile<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/82f\/9c4\/23d\/82f9c423db734cf6b5dc257ea1514a25.JPG\" width=\"953\" height=\"557\"\/><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430\u2011\u043b\u0438\u0431\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u00a0\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438 \u043e\u0442\u00a0\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Texas Instruments (TI), \u0442\u043e 70%&#8230;.90% \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u044b \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u00a0GUI\u2011IDE \u043f\u043e\u0434\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Code Composer Studio (CCS). \u041a\u0430\u043a\u00a0\u0438 \u0443\u00a0\u043b\u044e\u0431\u043e\u0439 IDE CCS \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438: \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u044b\u0448\u043a\u043e\u0439 \u043f\u043e\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f GUI, \u043e\u0442\u043a\u0430\u0437 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437\u00a0\u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0430c\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0436\u0435 \u043c\u0435\u0441\u0442\u043d\u0430\u044f \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 TI \u043d\u0435\u00a0\u0432\u00a0\u043a\u0443\u0440\u0441\u0435, \u043e\u0442\u043a\u0430\u0437 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u043f\u0443\u0442\u0438 \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f WORKSPACE_LOC \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0448\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438\u0437\u00a0\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0445 Makefile(\u043e\u0432) \u043f\u0440\u0438\u00a0\u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 GNU ARM GCC. <\/p>\n<p>\u041e\u00a0\u043f\u043e\u043b\u044c\u0437\u0435 makefile \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0432\u043e\u0442 \u043e\u043d\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/post\/723054\/\" rel=\"noopener noreferrer nofollow\"><u>\u041f\u043e\u0447\u0435\u043c\u0443 \u0412\u0430\u0436\u043d\u043e \u0421\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0421\u2011\u043a\u043e\u0434 \u0438\u0437\u00a0MakeFile<\/u><\/a>. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0441\u00a0makefile(\u043b\u0430\u043c\u0438) \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 DevOps, CI\/CD \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u0422\u0430\u043a\u0436\u0435 \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437\u00a0makefile \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u043e\u0441\u043e\u0437\u043d\u0430\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u043c\u0435\u043d\u044e IDE.<\/p>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f CC26x2 \u0438\u0437 Makefile<\/h2>\n<h4>\u0424\u0430\u0437\u0430 1: \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u0430<\/h4>\n<p><strong>a&#8212;\u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0437 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\"><strong>#<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\"><strong>\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">LapTop<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">\u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 LAUNCHXL-CC26X2R1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">\u043a\u0430\u0431\u0435\u043b\u044c USB-A-USB micro<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043f\u043b\u0430\u0442\u043e\u0439 LAUNCHXL-CC26X2R1. \u0422\u0430\u043c \u0437\u0430\u043b\u043e\u0436\u0435\u043d \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CC2652R1. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/304\/760\/744\/304760744c9b7dbc9a5af03ceab13f44.jpg\" alt=\"LAUNCHXL-CC26X2R1\" title=\"LAUNCHXL-CC26X2R1\" width=\"2560\" height=\"1920\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/304\/760\/744\/304760744c9b7dbc9a5af03ceab13f44.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>LAUNCHXL-CC26X2R1<\/figcaption><\/div>\n<\/figure>\n<p> \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u043f\u043b\u0430\u0442\u044b LAUNCHXL-CC26X2R1. \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0441\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CC2652R1F \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a XDS110. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ada\/728\/60c\/ada72860c6ee41a50ec0f7a0ef3efc95.png\" width=\"3466\" height=\"1568\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ada\/728\/60c\/ada72860c6ee41a50ec0f7a0ef3efc95.png\"\/><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 <strong>CC2652R1F<\/strong>RGZ? <\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\"><strong>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\"><strong>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Unit<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u042f\u0434\u0440\u043e<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">Arm Cortex-M4F<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">ARMv7-M<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RF Core<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">Arm Cortex-M0<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">32<\/p>\n<\/td>\n<td>\n<p align=\"left\">bit<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">FPU<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">IEEE 754-compliant single-precision <\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RAM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x20000000<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPRAM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x11000000<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPRAM  size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">ROM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">FLASH_CCFG start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x00057fa8 (44\u0442\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440)<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Flash \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">44<\/p>\n<\/td>\n<td>\n<p align=\"left\">dec<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RAM size <\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">80<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">ROM size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">352<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Flash sector size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Cache SRAM size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Peripherals<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">GPIO DAC UART ADC SPI I2C I2S AES TRNG Bluetooth 5.1, Timers MPU<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Prog Interface<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">JTAG<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">CPU clock<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">48<\/p>\n<\/td>\n<td>\n<p align=\"left\">MHz<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Pin number<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">48<\/p>\n<\/td>\n<td>\n<p align=\"left\">pin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPIO count<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">31<\/p>\n<\/td>\n<td>\n<p align=\"left\">pin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0430\u0439\u0442\u043e\u0432<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">little Endian<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u041a\u043e\u0440\u043f\u0443\u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">RGZ (7-mm x 7-mm VQFN48)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0428\u0430\u0433 \u043c\u0435\u0436\u0434\u0443 \u043f\u0438\u043d\u0430\u043c\u0438<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0.5<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 CC2652R1FRGZ \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0438 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 (*.ld \u0444\u0430\u0439\u043b).<\/p>\n<p><strong>b&#8212;\u041a\u0430\u043a\u0438\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043e\u043a\u0438?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\"><strong>\u2116<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\"><strong>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043a\u0430<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\"><strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<br \/> \u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">Using GCC\/GDB With SimpleLink CC26xx\/CC13xx<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">33<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0430 ToolChain(\u0430) \u0434\u043b\u044f GCC \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f TI MCU <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">CC2652R SimpleLink Multiprotocol 2.4 GHz Wireless MCU<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">70<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0444\u043b\u0430\u0435\u0440 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">CC13x2, CC26x2 SimpleLink Wireless MCU Technical Reference Manual<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">2083<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">Cortex-M3\/M4F Instruction Set<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">221<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">WCS037 LAUNCHXL-CC26X2R1<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">7<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>c&#8212;\u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0437 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u0430?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\"><strong>#<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\"><strong>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">OS Windows<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Eclipse<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">GNU Toolchain<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">UniFlash<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">9<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">SmartRF Flash Programmer 2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">10<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">XDS Emulation Software (EMUPack) (64-bit Windows)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c GDB \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 CC26x2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">C:\\ti\\simplelink_cc13xx_cc26xx_sdk_5_40_00_40  <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 cc26xx<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Build tools for Windows<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. make, rm <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">make <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 makefile<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">13<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">grep<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">6<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">gdb_agent_console.exe<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u0442\u0438\u043b\u0438\u0442\u0430 GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043e\u0442 TI<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">7<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">arm-none-eabi-gdb.exe<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 GDB \u043a\u043b\u0438\u0435\u043d\u0442\u0430 <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">11<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Tera Term<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e COM \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 \u043f\u043e UART<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 GNU Toolchain<strong>\u00a0<\/strong>\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u00a0<strong>arm-none-eabi-gcc &#8212;version<\/strong>\u00a0\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Windows  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b1a\/54b\/d74\/b1a54bd743327cbc99b724042981a9ab.png\" width=\"712\" height=\"178\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b1a\/54b\/d74\/b1a54bd743327cbc99b724042981a9ab.png\"\/><\/figure>\n<p>\u041d\u0443\u0436\u043d\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 make. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 MinGW. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da2\/a12\/abd\/da2a12abdc38bc8ffb07343d0103c73d.png\" width=\"652\" height=\"195\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da2\/a12\/abd\/da2a12abdc38bc8ffb07343d0103c73d.png\"\/><\/figure>\n<h4>\u0424\u0430\u0437\u0430 2: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430.<\/h4>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0430\u043c \u0421-\u043a\u043e\u0434 \u043d\u0435 \u043e\u0441\u043e\u0431\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u043c\u044b\u0439. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430.  \u0412 GCC \u044d\u0442\u043e *.ld \u0444\u0430\u0439\u043b\u044b. \u0413\u0434\u0435 \u0436\u0435 \u0432\u0437\u044f\u0442\u044c *.ld \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 cc2652r1frgz? \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442. \u041d\u0430\u0434\u043e \u043f\u043e\u0440\u044b\u0442\u044c\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 SDK. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b grep \u044f \u0432\u0441\u043a\u043e\u0440\u0435 \u0441\u0443\u0437\u0438\u043b \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043e  \u043f\u0430\u043f\u043a\u0438<br \/>C:\\ti\\simplelink_cc13xx_cc26xx_sdk_5_40_00_40\\source\\ti\\devices\\cc13x2_cc26x2\\linker_files. \u0422\u0430\u043c \u0438 \u043b\u0435\u0436\u0430\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 cc26x2r1f.lds<\/p>\n<pre><code class=\"cpp\">\/*  @file      cc26x2r1f.lds  @brief     CC26x2R1F rev2 linker configuration file for GNU compiler.  *\/  \/* Entry Point *\/ ENTRY( ResetISR )  \/* System memory map *\/ MEMORY {     \/* Application is stored in and executes from internal flash *\/     FLASH (RX) : ORIGIN = 0x0, LENGTH = 0x57FA8     \/* Customer Configuration Area (CCFG) *\/     FLASH_CCFG (RX) : ORIGIN = 0x57FA8, LENGTH = 88     \/* Application uses internal RAM for data *\/     SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 0x14000     \/* Application can use GPRAM region as RAM if cache is disabled in the CCFG        (DEFAULT_CCFG_SIZE_AND_DIS_FLAGS.SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM = 0) *\/     GPRAM (RWX) : ORIGIN = 0x11000000, LENGTH = 0x2000 }  \/*. Highest address of the stack. Used in startup file .*\/ _estack = ORIGIN(SRAM) + LENGTH(SRAM); \/*end of SRAM .*\/  \/*. Generate a link error if heap and stack does not fit into RAM .*\/ _Min_Heap_Size = 0; _Min_Stack_Size = 0x100;  \/* Section allocation in memory *\/ SECTIONS {     .text :     {         _text = .;         KEEP(*(.vectors))         *(.text*)         *(.rodata*)         *(.init)         *(.fini*)         *(.eh_frame*)         _etext = .;     } > FLASH = 0     .ARM.exidx :     {         __exidx_start = .;         *(.ARM.exidx* .gnu.linkonce.armexidx.*)         __exidx_end = .;     } > FLASH      .ARM.extab :     {         *(.ARM.extab* .gnu.linkonce.armextab.*)     } > FLASH      .init_array :     {         _init_array = .;         KEEP(*(SORT(.init_array.*)))         KEEP(*(.init_array*))         _einit_array = .;     } > FLASH      .data :     {         _data = .;         *(vtable)         *(.data*)         _edata = .;     } > SRAM AT > FLASH     _ldata = LOADADDR(.data);      .bss :     {         __bss_start__ = .;         _bss = .;         *(.bss*)         *(COMMON)         _ebss = .;         __bss_end__ = .;     } > SRAM      .ccfg :     {         KEEP(*(.ccfg));     } > FLASH_CCFG      \/* User_heap_stack section, used to check that there is enough SRAM left *\/     ._user_heap_stack :     {       . = ALIGN(4);       . = . + _Min_Heap_Size;       . = . + _Min_Stack_Size;       . = ALIGN(4);     } > SRAM      .gpram :     {     } > GPRAM } <\/code><\/pre>\n<h4>\u0424\u0430\u0437\u0430 3: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 startup \u043a\u043e\u0434\u0430<\/h4>\n<p>\u0414\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 main() \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c startup \u043a\u043e\u0434. \u0413\u0434\u0435 \u0436\u0435 \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b \u0434\u043b\u044f startup \u043a\u043e\u0434\u0430? \u0422\u0443\u0442 \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a grep(\u043e\u043f) \u0432\u043d\u0443\u0442\u0440\u0438 SDK \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 startup \u043f\u0440\u0438\u0432\u0435\u043b \u043c\u0435\u043d\u044f \u043a \u0444\u0430\u0439\u043b\u0443 startup_gcc.c. \u0423 ST \u043e\u0431\u044b\u0447\u043d\u043e  startup \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 assembler, \u043d\u043e \u0443 TI startup \u0444\u0430\u0439\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0421. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0412\u043d\u0443\u0442\u0440\u0438 startup_gcc.c \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f ResetISR(). \u0424\u0443\u043d\u043a\u0446\u0438\u044f ResetISR \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (rwdata), \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (bss), \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 FPU \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e main(), \u0430 \u0435\u0441\u043b\u0438 main \u0434\u0430\u043b\u0430 \u043e\u0441\u0435\u0447\u043a\u0443 &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435. \u0412 startup \u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u044126&#215;2. <\/p>\n<pre><code class=\"cpp\">\/****************************************************************************** *  Filename:       startup_gcc.c *  Revised:        $Date: 2017-06-01 16:01:48 +0200 (Thu, 01 Jun 2017) $ *  Revision:       $Revision: 17804 $ * *  Description:    Startup code for CC26x2 device family for use with GCC. * ******************************************************************************\/  \/\/***************************************************************************** \/\/ Check if compiler is GNU Compiler \/\/***************************************************************************** #if !(defined(__GNUC__)) #error \"startup_gcc.c: Unsupported compiler!\" #endif  #include \"..\/inc\/hw_types.h\" #include \"..\/driverlib\/setup.h\"  \/\/***************************************************************************** \/\/ Macro for weak symbol aliasing \/\/***************************************************************************** #define WEAK_ALIAS(x) __attribute__ ((weak, alias(#x)))  \/\/***************************************************************************** \/\/ Forward declaration of the reset ISR and the default fault handlers. \/\/***************************************************************************** void        ResetISR( void ); static void NmiSRHandler( void ); static void FaultISRHandler( void ); static void IntDefaultHandler( void ); extern int  main( void );  \/\/ Default interrupt handlers void NmiSR(void) WEAK_ALIAS(NmiSRHandler); void FaultISR(void) WEAK_ALIAS(FaultISRHandler); void MPUFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void BusFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void UsageFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SVCallIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void DebugMonIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void PendSVIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SysTickIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void GPIOIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void I2CIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCCPE1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void PKAIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AONRTCIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void UART0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXSWEvent0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SSI0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SSI1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCCPE0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCHardwareIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCCmdAckIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void I2SIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXSWEvent1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void WatchdogIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer0AIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer0BIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer1AIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer1BIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer2AIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer2BIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer3AIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void Timer3BIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void CryptoIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void uDMAIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void uDMAErrIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void FlashIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SWEvent0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXCombEventIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AONProgIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void DynProgIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXCompAIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXADCIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void TRNGIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void OSCIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXTimer2IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void UART1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void BatMonIntHandler(void) WEAK_ALIAS(IntDefaultHandler);   \/\/***************************************************************************** \/\/ The following are constructs created by the linker, indicating where the \/\/ the \"data\" and \"bss\" segments reside in memory. \/\/***************************************************************************** extern uint32_t _ldata; extern uint32_t _data; extern uint32_t _edata; extern uint32_t _bss; extern uint32_t _ebss; extern uint32_t _estack;  \/\/***************************************************************************** \/\/! The vector table. Note that the proper constructs must be placed on this to \/\/! ensure that it ends up at physical address 0x0000.0000 or at the start of \/\/! the program if located at a start address other than 0. \/\/***************************************************************************** __attribute__ ((section(\".vectors\"), used)) void (* const g_pfnVectors[])(void) = {     (void (*)(void))((unsigned long)&amp;_estack),                                             \/\/  0 The initial stack pointer     ResetISR,                               \/\/  1 The reset handler     NmiSR,                                  \/\/  2 The NMI handler     FaultISR,                               \/\/  3 The hard fault handler     MPUFaultIntHandler,                     \/\/  4 Memory Management (MemManage) Fault     BusFaultIntHandler,                     \/\/  5 The bus fault handler     UsageFaultIntHandler,                   \/\/  6 The usage fault handler     0,                                      \/\/  7 Reserved     0,                                      \/\/  8 Reserved     0,                                      \/\/  9 Reserved     0,                                      \/\/ 10 Reserved     SVCallIntHandler,                       \/\/ 11 Supervisor Call (SVCall)     DebugMonIntHandler,                     \/\/ 12 Debug monitor handler     0,                                      \/\/ 13 Reserved     PendSVIntHandler,                       \/\/ 14 The PendSV handler     SysTickIntHandler,                      \/\/ 15 The SysTick handler     \/\/--- External interrupts ---     GPIOIntHandler,                         \/\/ 16 AON edge detect     I2CIntHandler,                          \/\/ 17 I2C     RFCCPE1IntHandler,                      \/\/ 18 RF Core Command &amp; Packet Engine 1     PKAIntHandler,                          \/\/ 19 PKA Interrupt event     AONRTCIntHandler,                       \/\/ 20 AON RTC     UART0IntHandler,                        \/\/ 21 UART0 Rx and Tx     AUXSWEvent0IntHandler,                  \/\/ 22 AUX software event 0     SSI0IntHandler,                         \/\/ 23 SSI0 Rx and Tx     SSI1IntHandler,                         \/\/ 24 SSI1 Rx and Tx     RFCCPE0IntHandler,                      \/\/ 25 RF Core Command &amp; Packet Engine 0     RFCHardwareIntHandler,                  \/\/ 26 RF Core Hardware     RFCCmdAckIntHandler,                    \/\/ 27 RF Core Command Acknowledge     I2SIntHandler,                          \/\/ 28 I2S     AUXSWEvent1IntHandler,                  \/\/ 29 AUX software event 1     WatchdogIntHandler,                     \/\/ 30 Watchdog timer     Timer0AIntHandler,                      \/\/ 31 Timer 0 subtimer A     Timer0BIntHandler,                      \/\/ 32 Timer 0 subtimer B     Timer1AIntHandler,                      \/\/ 33 Timer 1 subtimer A     Timer1BIntHandler,                      \/\/ 34 Timer 1 subtimer B     Timer2AIntHandler,                      \/\/ 35 Timer 2 subtimer A     Timer2BIntHandler,                      \/\/ 36 Timer 2 subtimer B     Timer3AIntHandler,                      \/\/ 37 Timer 3 subtimer A     Timer3BIntHandler,                      \/\/ 38 Timer 3 subtimer B     CryptoIntHandler,                       \/\/ 39 Crypto Core Result available     uDMAIntHandler,                         \/\/ 40 uDMA Software     uDMAErrIntHandler,                      \/\/ 41 uDMA Error     FlashIntHandler,                        \/\/ 42 Flash controller     SWEvent0IntHandler,                     \/\/ 43 Software Event 0     AUXCombEventIntHandler,                 \/\/ 44 AUX combined event     AONProgIntHandler,                      \/\/ 45 AON programmable 0     DynProgIntHandler,                      \/\/ 46 Dynamic Programmable interrupt                                             \/\/    source (Default: PRCM)     AUXCompAIntHandler,                     \/\/ 47 AUX Comparator A     AUXADCIntHandler,                       \/\/ 48 AUX ADC new sample or ADC DMA                                             \/\/    done, ADC underflow, ADC overflow     TRNGIntHandler,                         \/\/ 49 TRNG event     OSCIntHandler,                          \/\/ 50 Combined event from Oscillator control     AUXTimer2IntHandler,                    \/\/ 51 AUX Timer2 event 0     UART1IntHandler,                        \/\/ 52 UART1 combined interrupt     BatMonIntHandler                        \/\/ 53 Combined event from battery monitor };   \/\/***************************************************************************** \/\/! This is the code that gets called when the processor first starts execution \/\/! following a reset event. Only the absolutely necessary set is performed, \/\/! after which the application supplied entry() routine is called. Any fancy \/\/! actions (such as making decisions based on the reset cause register, and \/\/! resetting the bits in that register) are left solely in the hands of the \/\/! application. \/\/***************************************************************************** void ResetISR(void){     uint32_t *pSrc;     uint32_t *pDest;      \/\/ Final trim of device     SetupTrimDevice();          \/\/ Copy the data segment initializers from FLASH to SRAM.     pSrc = &amp;_ldata;     for(pDest = &amp;_data; pDest &lt; &amp;_edata; )    {         *pDest++ = *pSrc++;     }      \/\/ Zero fill the bss segment.     __asm(\"    ldr     r0, =_bss\\n\"           \"    ldr     r1, =_ebss\\n\"           \"    mov     r2, #0\\n\"           \"    .thumb_func\\n\"           \"zero_loop:\\n\"           \"        cmp     r0, r1\\n\"           \"        it      lt\\n\"           \"        strlt   r2, [r0], #4\\n\"           \"        blt     zero_loop\");      \/\/ Enable the FPU     \/\/ CPACR is located at address 0xE000ED88     \/\/ Set bits 20-23 in CPACR to enable CP10 and CP11 coprocessors     __asm(\"    ldr.w   r0, =0xE000ED88\\n\"           \"    ldr     r1, [r0]\\n\"           \"    orr     r1, r1, #(0xF &lt;&lt; 20)\\n\"           \"    str     r1, [r0]\\n\");      \/\/ Call the application's entry point.     main();     \/\/ If we ever return signal Error     FaultISR(); }  \/\/***************************************************************************** \/\/! This is the code that gets called when the processor receives a NMI. This \/\/! simply enters an infinite loop, preserving the system state for examination \/\/! by a debugger. \/\/***************************************************************************** static void NmiSRHandler(void){     while(1)    {    } }  \/\/***************************************************************************** \/\/! This is the code that gets called when the processor receives a fault \/\/! interrupt. This simply enters an infinite loop, preserving the system state \/\/! for examination by a debugger. \/\/***************************************************************************** static void FaultISRHandler(void){     while(1)    {    } }  \/\/***************************************************************************** \/\/! This is the code that gets called when the processor receives an unexpected \/\/! interrupt. This simply enters an infinite loop, preserving the system state \/\/! for examination by a debugger. \/\/***************************************************************************** static void IntDefaultHandler(void){     \/\/ Go into an infinite loop.     while(1)    {    } } <\/code><\/pre>\n<h4>\u0424\u0430\u0437\u0430 4: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/h4>\n<p>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0421\u042126&#215;2 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0443 TI MCU \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c (43\u043c) \u0441\u0435\u043a\u0442\u043e\u0440\u0435 Flash \u043f\u0430\u043c\u044f\u0442\u0438 \u043b\u0435\u0436\u0438\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b. \u0422\u0430\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0437\u0430\u0432\u043e\u0434\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u0435 \u043a\u0430\u043a MAC \u0430\u0434\u0440\u0435\u0441, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430, \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f RF \u0447\u0430\u0441\u0442\u0438. \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \u043d\u0430\u0434\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0441 \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0417\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0444\u0430\u0439\u043b-\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a <strong>ccfg.c<\/strong>. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440\u0435 \u0432\u0434\u0440\u0443\u0433 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0442\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u0432\u0435\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u0438 hot reset, \u0430 \u043d\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0435 \u043a\u0432\u0430\u0440\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0440\u0432\u0430\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<pre><code class=\"cpp\">\/****************************************************************************** *  Filename:       ccfg.c *  Revised:        $Date: 2017-11-02 11:36:28 +0100 (Thu, 02 Nov 2017) $ *  Revision:       $Revision: 18030 $ *  Description:    Customer Configuration for: *                  CC13x2, CC13x4, CC26x2, CC26x4 device family (HW rev 2). *****************************************************************************\/  #ifndef __CCFC_C__ #define __CCFC_C__  #include &lt;stdint.h> #include \"..\/inc\/hw_types.h\" #include \"..\/inc\/hw_ccfg.h\" #include \"..\/inc\/hw_ccfg_simple_struct.h\"  \/\/***************************************************************************** \/\/ Introduction \/\/ This file contains fields used by Boot ROM, startup code, and SW radio \/\/ stacks to configure chip behavior. \/\/ \/\/ Fields are documented in more details in hw_ccfg.h and CCFG.html in \/\/ DriverLib documentation (doc_overview.html -> CPU Domain Memory Map -> CCFG). \/\/ \/\/ PLEASE NOTE: \/\/ It is not recommended to do modifications inside the ccfg.c file. \/\/ This file is part of the CoreSDK release and future releases may have \/\/ important modifications and new fields added without notice. \/\/ The recommended method to modify the CCFG settings is to have a separate \/\/ &lt;customer_ccfg>.c file that defines the specific CCFG values to be \/\/ overridden and then include the TI provided ccfg.c at the very end, \/\/ giving default values for non-overriden settings. \/\/ \/\/ Example: \/\/ #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE  0xC5 \/\/ Enable ROM boot loader \/\/ #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION     0x3  \/\/ LF RCOSC \/\/ \/\/---- Use default values for all others ---- \/\/ #include \"&lt;project-path>\/source\/ti\/devices\/&lt;device>\/startup_files\/ccfg.c\" \/\/ \/\/*****************************************************************************  \/\/***************************************************************************** \/\/ Internal settings, forcing several bit-fields to be set to a specific value. \/\/*****************************************************************************  \/\/##################################### \/\/ Force VDDR high setting (Higher output power but also higher power consumption) \/\/ This is also called \"boost mode\" \/\/ WARNING: CCFG_FORCE_VDDR_HH must not be set to 1 if running in external regulator mode. \/\/#####################################  #ifndef CCFG_FORCE_VDDR_HH #define CCFG_FORCE_VDDR_HH                              0x0        \/\/ Use default VDDR trim \/\/ #define CCFG_FORCE_VDDR_HH                           0x1        \/\/ Force VDDR voltage to the factory HH setting (FCFG1..VDDR_TRIM_HH) #endif  \/\/***************************************************************************** \/\/ Set the values of the individual bit fields. \/\/*****************************************************************************  \/\/##################################### \/\/ Alternative DC\/DC settings \/\/#####################################  #ifndef SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING    0x0    \/\/ Alternative DC\/DC setting enabled \/\/ #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING 0x1    \/\/ Alternative DC\/DC setting disabled #endif  #if ( CCFG_FORCE_VDDR_HH ) #define SET_CCFG_MODE_CONF_1_ALT_DCDC_VMIN                  0xC    \/\/ Special VMIN level (2.5V) when forced VDDR HH voltage #else #ifndef SET_CCFG_MODE_CONF_1_ALT_DCDC_VMIN #define SET_CCFG_MODE_CONF_1_ALT_DCDC_VMIN                  0x8    \/\/ 2.25V #endif #endif  #ifndef SET_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN #define SET_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN         0x0        \/\/ Dithering disabled \/\/ #define SET_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN      0x1        \/\/ Dithering enabled #endif  #ifndef SET_CCFG_MODE_CONF_1_ALT_DCDC_IPEAK #define SET_CCFG_MODE_CONF_1_ALT_DCDC_IPEAK             0x0        \/\/ Peak current #endif  \/\/##################################### \/\/ XOSC override settings \/\/#####################################  #ifndef SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR \/\/ #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR     0x0        \/\/ Enable override #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR        0x1        \/\/ Disable override #endif  #ifndef SET_CCFG_MODE_CONF_1_DELTA_IBIAS_INIT #define SET_CCFG_MODE_CONF_1_DELTA_IBIAS_INIT           0x0        \/\/ Delta = 0 #endif  #ifndef SET_CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET #define SET_CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET         0x0        \/\/ Delta = 0 #endif  #ifndef SET_CCFG_MODE_CONF_1_XOSC_MAX_START #define SET_CCFG_MODE_CONF_1_XOSC_MAX_START             0x10       \/\/ 1600us #endif  \/\/##################################### \/\/ Power settings \/\/#####################################  #ifndef SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA #define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA        0xF        \/\/ Signed delta value +1 to apply to the VDDR_TRIM_SLEEP target (0xF=-1=default=no compensation) #endif  #ifndef SET_CCFG_MODE_CONF_DCDC_RECHARGE #define SET_CCFG_MODE_CONF_DCDC_RECHARGE                0x0        \/\/ Use the DC\/DC during recharge in powerdown \/\/ #define SET_CCFG_MODE_CONF_DCDC_RECHARGE             0x1        \/\/ Do not use the DC\/DC during recharge in powerdown #endif  #ifndef SET_CCFG_MODE_CONF_DCDC_ACTIVE #define SET_CCFG_MODE_CONF_DCDC_ACTIVE                  0x0        \/\/ Use the DC\/DC during active mode \/\/ #define SET_CCFG_MODE_CONF_DCDC_ACTIVE               0x1        \/\/ Do not use the DC\/DC during active mode #endif  #if ( CCFG_FORCE_VDDR_HH ) #define SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL               0x1        \/\/ Special setting to enable forced VDDR HH voltage #else #ifndef SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL \/\/ #define SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL            0x0        \/\/ VDDS BOD level is 2.0V #define SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL               0x1        \/\/ VDDS BOD level is 1.8V (or 1.65V for external regulator mode) #endif #endif  #ifndef SET_CCFG_MODE_CONF_VDDR_CAP #define SET_CCFG_MODE_CONF_VDDR_CAP                     0x3A       \/\/ Unsigned 8-bit integer representing the min. decoupling capacitance on VDDR in units of 100nF #endif  #ifndef SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC #define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC           0x1        \/\/ Temperature compensation on VDDR sleep trim disabled (default) \/\/ #define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC        0x0        \/\/ Temperature compensation on VDDR sleep trim enabled #endif  \/\/##################################### \/\/ Clock settings \/\/#####################################  #ifndef SET_CCFG_MODE_CONF_SCLK_LF_OPTION \/\/ #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION            0x0        \/\/ LF clock derived from HF clock. Note: using this configuration will block the device from entering Standby mode. \/\/ #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION            0x1        \/\/ External LF clock #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION               0x2        \/\/ LF XOSC \/\/ #define SET_CCFG_MODE_CONF_SCLK_LF_OPTION            0x3        \/\/ LF RCOSC #endif  #ifndef SET_CCFG_MODE_CONF_XOSC_CAP_MOD \/\/ #define SET_CCFG_MODE_CONF_XOSC_CAP_MOD              0x0        \/\/ Apply cap-array delta #define SET_CCFG_MODE_CONF_XOSC_CAP_MOD                 0x1        \/\/ Don't apply cap-array delta #endif  #ifndef SET_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA #define SET_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA          0xFF       \/\/ Signed 8-bit value, directly modifying trimmed XOSC cap-array value #endif  #ifndef SET_CCFG_EXT_LF_CLK_DIO #define SET_CCFG_EXT_LF_CLK_DIO                         0x01       \/\/ DIO number if using external LF clock #endif  #ifndef SET_CCFG_EXT_LF_CLK_RTC_INCREMENT #define SET_CCFG_EXT_LF_CLK_RTC_INCREMENT               0x800000   \/\/ RTC increment representing the external LF clock frequency #endif  \/\/##################################### \/\/ Special HF clock source setting \/\/##################################### #ifndef SET_CCFG_MODE_CONF_XOSC_FREQ \/\/ #define SET_CCFG_MODE_CONF_XOSC_FREQ                 0x0        \/\/ HF source is 48 MHz TCXO \/\/ #define SET_CCFG_MODE_CONF_XOSC_FREQ                 0x1        \/\/ HF source is HPOSC (BAW) (only valid for CC2652RB) #define SET_CCFG_MODE_CONF_XOSC_FREQ                    0x2        \/\/ HF source is a 48 MHz xtal \/\/ #define SET_CCFG_MODE_CONF_XOSC_FREQ                 0x3        \/\/ HF source is a 24 MHz xtal (not supported) #endif  \/\/##################################### \/\/ Bootloader settings \/\/#####################################  #ifndef SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE            0x00       \/\/ Disable ROM boot loader \/\/ #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE         0xC5       \/\/ Enable ROM boot loader #endif  #ifndef SET_CCFG_BL_CONFIG_BL_LEVEL \/\/ #define SET_CCFG_BL_CONFIG_BL_LEVEL                  0x0        \/\/ Active low to open boot loader backdoor #define SET_CCFG_BL_CONFIG_BL_LEVEL                     0x1        \/\/ Active high to open boot loader backdoor #endif  #ifndef SET_CCFG_BL_CONFIG_BL_PIN_NUMBER #define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER                0xFF       \/\/ DIO number for boot loader backdoor #endif  #ifndef SET_CCFG_BL_CONFIG_BL_ENABLE \/\/ #define SET_CCFG_BL_CONFIG_BL_ENABLE                 0xC5       \/\/ Enabled boot loader backdoor #define SET_CCFG_BL_CONFIG_BL_ENABLE                    0xFF       \/\/ Disabled boot loader backdoor #endif  \/\/##################################### \/\/ Debug access settings \/\/#####################################  #ifndef SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE #define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE           0x00       \/\/ Disable unlocking of TI FA option. \/\/ #define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE        0xC5       \/\/ Enable unlocking of TI FA option with the unlock code #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE \/\/ #define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE       0x00       \/\/ Access disabled #define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE          0xC5       \/\/ Access enabled if also enabled in FCFG #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE \/\/#define SET_CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE    0x00       \/\/ Access disabled #define SET_CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE      0xC5       \/\/ Access enabled if also enabled in FCFG #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE #define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE         0x00       \/\/ Access disabled \/\/#define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE       0xC5       \/\/ Access enabled if also enabled in FCFG #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE #define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE       0x00       \/\/ Access disabled \/\/ #define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE    0xC5       \/\/ Access enabled if also enabled in FCFG #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE #define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE       0x00       \/\/ Access disabled \/\/ #define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE    0xC5       \/\/ Access enabled if also enabled in FCFG #endif  #ifndef SET_CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE #define SET_CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE          0x00       \/\/ Access disabled \/\/ #define SET_CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE       0xC5       \/\/ Access enabled if also enabled in FCFG #endif  \/\/##################################### \/\/ Alternative IEEE 802.15.4 MAC address \/\/##################################### #ifndef SET_CCFG_IEEE_MAC_0 #define SET_CCFG_IEEE_MAC_0                             0xFFFFFFFF \/\/ Bits [31:0] #endif  #ifndef SET_CCFG_IEEE_MAC_1 #define SET_CCFG_IEEE_MAC_1                             0xFFFFFFFF \/\/ Bits [63:32] #endif  \/\/##################################### \/\/ Alternative BLE address \/\/##################################### #ifndef SET_CCFG_IEEE_BLE_0 #define SET_CCFG_IEEE_BLE_0                             0xFFFFFFFF \/\/ Bits [31:0] #endif  #ifndef SET_CCFG_IEEE_BLE_1 #define SET_CCFG_IEEE_BLE_1                             0xFFFFFFFF \/\/ Bits [63:32] #endif  \/\/##################################### \/\/ Flash erase settings \/\/#####################################  #ifndef SET_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N \/\/ #define SET_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N         0x0        \/\/ Any chip erase request detected during boot will be ignored #define SET_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N            0x1        \/\/ Any chip erase request detected during boot will be performed by the boot FW #endif  #ifndef SET_CCFG_ERASE_CONF_BANK_ERASE_DIS_N \/\/ #define SET_CCFG_ERASE_CONF_BANK_ERASE_DIS_N         0x0        \/\/ Disable the boot loader bank erase function #define SET_CCFG_ERASE_CONF_BANK_ERASE_DIS_N            0x1        \/\/ Enable the boot loader bank erase function #endif  \/\/##################################### \/\/ Flash image valid \/\/##################################### #ifndef SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID #define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID           0x00000000                  \/\/ Flash image vector table is at address 0x00000000 (default) \/\/ #define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID        &lt;valid_vector_table_addr>   \/\/ Flash image vector table is at address &lt;valid_vector_table_addr> \/\/ #define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID        &lt;invalid_vector_table_addr> \/\/ Flash image vector table address is invalid. ROM boot loader is called. #endif  \/\/##################################### \/\/ Flash sector write protection \/\/##################################### #ifndef SET_CCFG_CCFG_PROT_31_0 #define SET_CCFG_CCFG_PROT_31_0                         0xFFFFFFFF #endif  #ifndef SET_CCFG_CCFG_PROT_63_32 #define SET_CCFG_CCFG_PROT_63_32                        0xFFFFFFFF #endif  #ifndef SET_CCFG_CCFG_PROT_95_64 #define SET_CCFG_CCFG_PROT_95_64                        0xFFFFFFFF #endif  #ifndef SET_CCFG_CCFG_PROT_127_96 #define SET_CCFG_CCFG_PROT_127_96                       0xFFFFFFFF #endif  \/\/##################################### \/\/ Select between cache or GPRAM \/\/##################################### #ifndef SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM \/\/ #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM        0x0        \/\/ Cache is disabled and GPRAM is available at 0x11000000-0x11001FFF #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM           0x1        \/\/ Cache is enabled and GPRAM is disabled (unavailable) #endif  \/\/##################################### \/\/ TCXO settings \/\/##################################### #ifndef SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO #define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO            0x1        \/\/ Deprecated. Must be set to 0x1. #endif  #ifndef SET_CCFG_MODE_CONF_1_TCXO_TYPE #define SET_CCFG_MODE_CONF_1_TCXO_TYPE                  0x1        \/\/ 1 = Clipped-sine type. \/\/#define SET_CCFG_MODE_CONF_1_TCXO_TYPE                0x0        \/\/ 0 = CMOS type. #endif  #ifndef SET_CCFG_MODE_CONF_1_TCXO_MAX_START #define SET_CCFG_MODE_CONF_1_TCXO_MAX_START             0x7F       \/\/ Maximum TCXO startup time in units of 100us. #endif  \/\/***************************************************************************** \/\/ CCFG values that should not be modified. \/\/***************************************************************************** #define SET_CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG        0x0058 #define SET_CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS       (CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_M >> CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_S)  #if ( CCFG_FORCE_VDDR_HH ) #define SET_CCFG_MODE_CONF_VDDR_EXT_LOAD                0x0        \/\/ Special setting to enable forced VDDR HH voltage #else #define SET_CCFG_MODE_CONF_VDDR_EXT_LOAD                0x1 #endif  #define SET_CCFG_MODE_CONF_RTC_COMP                     0x1 #define SET_CCFG_MODE_CONF_HF_COMP                      0x1  #define SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP45              0xFF #define SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP25              0xFF #define SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP5               0xFF #define SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TM15              0xFF  #define SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP125             0xFF #define SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP105             0xFF #define SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP85              0xFF #define SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP65              0xFF  #define SET_CCFG_RTC_OFFSET_RTC_COMP_P0                 0xFFFF #define SET_CCFG_RTC_OFFSET_RTC_COMP_P1                 0xFF #define SET_CCFG_RTC_OFFSET_RTC_COMP_P2                 0xFF  #define SET_CCFG_FREQ_OFFSET_HF_COMP_P0                 0xFFFF #define SET_CCFG_FREQ_OFFSET_HF_COMP_P1                 0xFF #define SET_CCFG_FREQ_OFFSET_HF_COMP_P2                 0xFF  \/\/***************************************************************************** \/\/ Concatenate bit fields to words. \/\/ DO NOT EDIT! \/\/***************************************************************************** #define DEFAULT_CCFG_EXT_LF_CLK          ( \\  ((((uint32_t)( SET_CCFG_EXT_LF_CLK_DIO                          )) &lt;&lt; CCFG_EXT_LF_CLK_DIO_S                          ) | ~CCFG_EXT_LF_CLK_DIO_M                          ) &amp; \\  ((((uint32_t)( SET_CCFG_EXT_LF_CLK_RTC_INCREMENT                )) &lt;&lt; CCFG_EXT_LF_CLK_RTC_INCREMENT_S                ) | ~CCFG_EXT_LF_CLK_RTC_INCREMENT_M                ) )  #define DEFAULT_CCFG_MODE_CONF_1         ( \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_TCXO_TYPE                   )) &lt;&lt; CCFG_MODE_CONF_1_TCXO_TYPE_S                   ) | ~CCFG_MODE_CONF_1_TCXO_TYPE_M                   ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_TCXO_MAX_START              )) &lt;&lt; CCFG_MODE_CONF_1_TCXO_MAX_START_S              ) | ~CCFG_MODE_CONF_1_TCXO_MAX_START_M              ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_ALT_DCDC_VMIN               )) &lt;&lt; CCFG_MODE_CONF_1_ALT_DCDC_VMIN_S               ) | ~CCFG_MODE_CONF_1_ALT_DCDC_VMIN_M               ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN          )) &lt;&lt; CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN_S          ) | ~CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN_M          ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_ALT_DCDC_IPEAK              )) &lt;&lt; CCFG_MODE_CONF_1_ALT_DCDC_IPEAK_S              ) | ~CCFG_MODE_CONF_1_ALT_DCDC_IPEAK_M              ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_DELTA_IBIAS_INIT            )) &lt;&lt; CCFG_MODE_CONF_1_DELTA_IBIAS_INIT_S            ) | ~CCFG_MODE_CONF_1_DELTA_IBIAS_INIT_M            ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET          )) &lt;&lt; CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET_S          ) | ~CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET_M          ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_1_XOSC_MAX_START              )) &lt;&lt; CCFG_MODE_CONF_1_XOSC_MAX_START_S              ) | ~CCFG_MODE_CONF_1_XOSC_MAX_START_M              ) )  #define DEFAULT_CCFG_SIZE_AND_DIS_FLAGS  ( \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG         )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG_S         ) | ~CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG_M         ) &amp; \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS        )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_S        ) | ~CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_M        ) &amp; \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO             )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO_S             ) | ~CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO_M             ) &amp; \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM            )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM_S            ) | ~CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM_M            ) &amp; \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING_S ) | ~CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCDC_SETTING_M ) &amp; \\  ((((uint32_t)( SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR         )) &lt;&lt; CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR_S         ) | ~CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR_M         ) )  #define DEFAULT_CCFG_MODE_CONF           ( \\  ((((uint32_t)( SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA         )) &lt;&lt; CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA_S         ) | ~CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA_M         ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_DCDC_RECHARGE                 )) &lt;&lt; CCFG_MODE_CONF_DCDC_RECHARGE_S                 ) | ~CCFG_MODE_CONF_DCDC_RECHARGE_M                 ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_DCDC_ACTIVE                   )) &lt;&lt; CCFG_MODE_CONF_DCDC_ACTIVE_S                   ) | ~CCFG_MODE_CONF_DCDC_ACTIVE_M                   ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_VDDR_EXT_LOAD                 )) &lt;&lt; CCFG_MODE_CONF_VDDR_EXT_LOAD_S                 ) | ~CCFG_MODE_CONF_VDDR_EXT_LOAD_M                 ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL                )) &lt;&lt; CCFG_MODE_CONF_VDDS_BOD_LEVEL_S                ) | ~CCFG_MODE_CONF_VDDS_BOD_LEVEL_M                ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_SCLK_LF_OPTION                )) &lt;&lt; CCFG_MODE_CONF_SCLK_LF_OPTION_S                ) | ~CCFG_MODE_CONF_SCLK_LF_OPTION_M                ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC            )) &lt;&lt; CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC_S            ) | ~CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC_M            ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_RTC_COMP                      )) &lt;&lt; CCFG_MODE_CONF_RTC_COMP_S                      ) | ~CCFG_MODE_CONF_RTC_COMP_M                      ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_XOSC_FREQ                     )) &lt;&lt; CCFG_MODE_CONF_XOSC_FREQ_S                     ) | ~CCFG_MODE_CONF_XOSC_FREQ_M                     ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_XOSC_CAP_MOD                  )) &lt;&lt; CCFG_MODE_CONF_XOSC_CAP_MOD_S                  ) | ~CCFG_MODE_CONF_XOSC_CAP_MOD_M                  ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_HF_COMP                       )) &lt;&lt; CCFG_MODE_CONF_HF_COMP_S                       ) | ~CCFG_MODE_CONF_HF_COMP_M                       ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA           )) &lt;&lt; CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA_S           ) | ~CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA_M           ) &amp; \\  ((((uint32_t)( SET_CCFG_MODE_CONF_VDDR_CAP                      )) &lt;&lt; CCFG_MODE_CONF_VDDR_CAP_S                      ) | ~CCFG_MODE_CONF_VDDR_CAP_M                      ) )  #define DEFAULT_CCFG_VOLT_LOAD_0         ( \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP45               )) &lt;&lt; CCFG_VOLT_LOAD_0_VDDR_EXT_TP45_S               ) | ~CCFG_VOLT_LOAD_0_VDDR_EXT_TP45_M               ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP25               )) &lt;&lt; CCFG_VOLT_LOAD_0_VDDR_EXT_TP25_S               ) | ~CCFG_VOLT_LOAD_0_VDDR_EXT_TP25_M               ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TP5                )) &lt;&lt; CCFG_VOLT_LOAD_0_VDDR_EXT_TP5_S                ) | ~CCFG_VOLT_LOAD_0_VDDR_EXT_TP5_M                ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_0_VDDR_EXT_TM15               )) &lt;&lt; CCFG_VOLT_LOAD_0_VDDR_EXT_TM15_S               ) | ~CCFG_VOLT_LOAD_0_VDDR_EXT_TM15_M               ) )  #define DEFAULT_CCFG_VOLT_LOAD_1         ( \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP125              )) &lt;&lt; CCFG_VOLT_LOAD_1_VDDR_EXT_TP125_S              ) | ~CCFG_VOLT_LOAD_1_VDDR_EXT_TP125_M              ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP105              )) &lt;&lt; CCFG_VOLT_LOAD_1_VDDR_EXT_TP105_S              ) | ~CCFG_VOLT_LOAD_1_VDDR_EXT_TP105_M              ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP85               )) &lt;&lt; CCFG_VOLT_LOAD_1_VDDR_EXT_TP85_S               ) | ~CCFG_VOLT_LOAD_1_VDDR_EXT_TP85_M               ) &amp; \\  ((((uint32_t)( SET_CCFG_VOLT_LOAD_1_VDDR_EXT_TP65               )) &lt;&lt; CCFG_VOLT_LOAD_1_VDDR_EXT_TP65_S               ) | ~CCFG_VOLT_LOAD_1_VDDR_EXT_TP65_M               ) )  #define DEFAULT_CCFG_RTC_OFFSET          ( \\  ((((uint32_t)( SET_CCFG_RTC_OFFSET_RTC_COMP_P0                  )) &lt;&lt; CCFG_RTC_OFFSET_RTC_COMP_P0_S                  ) | ~CCFG_RTC_OFFSET_RTC_COMP_P0_M                  ) &amp; \\  ((((uint32_t)( SET_CCFG_RTC_OFFSET_RTC_COMP_P1                  )) &lt;&lt; CCFG_RTC_OFFSET_RTC_COMP_P1_S                  ) | ~CCFG_RTC_OFFSET_RTC_COMP_P1_M                  ) &amp; \\  ((((uint32_t)( SET_CCFG_RTC_OFFSET_RTC_COMP_P2                  )) &lt;&lt; CCFG_RTC_OFFSET_RTC_COMP_P2_S                  ) | ~CCFG_RTC_OFFSET_RTC_COMP_P2_M                  ) )  #define DEFAULT_CCFG_FREQ_OFFSET         ( \\  ((((uint32_t)( SET_CCFG_FREQ_OFFSET_HF_COMP_P0                  )) &lt;&lt; CCFG_FREQ_OFFSET_HF_COMP_P0_S                  ) | ~CCFG_FREQ_OFFSET_HF_COMP_P0_M                  ) &amp; \\  ((((uint32_t)( SET_CCFG_FREQ_OFFSET_HF_COMP_P1                  )) &lt;&lt; CCFG_FREQ_OFFSET_HF_COMP_P1_S                  ) | ~CCFG_FREQ_OFFSET_HF_COMP_P1_M                  ) &amp; \\  ((((uint32_t)( SET_CCFG_FREQ_OFFSET_HF_COMP_P2                  )) &lt;&lt; CCFG_FREQ_OFFSET_HF_COMP_P2_S                  ) | ~CCFG_FREQ_OFFSET_HF_COMP_P2_M                  ) )  #define DEFAULT_CCFG_IEEE_MAC_0          SET_CCFG_IEEE_MAC_0 #define DEFAULT_CCFG_IEEE_MAC_1          SET_CCFG_IEEE_MAC_1 #define DEFAULT_CCFG_IEEE_BLE_0          SET_CCFG_IEEE_BLE_0 #define DEFAULT_CCFG_IEEE_BLE_1          SET_CCFG_IEEE_BLE_1  #define DEFAULT_CCFG_BL_CONFIG           ( \\  ((((uint32_t)( SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE             )) &lt;&lt; CCFG_BL_CONFIG_BOOTLOADER_ENABLE_S             ) | ~CCFG_BL_CONFIG_BOOTLOADER_ENABLE_M             ) &amp; \\  ((((uint32_t)( SET_CCFG_BL_CONFIG_BL_LEVEL                      )) &lt;&lt; CCFG_BL_CONFIG_BL_LEVEL_S                      ) | ~CCFG_BL_CONFIG_BL_LEVEL_M                      ) &amp; \\  ((((uint32_t)( SET_CCFG_BL_CONFIG_BL_PIN_NUMBER                 )) &lt;&lt; CCFG_BL_CONFIG_BL_PIN_NUMBER_S                 ) | ~CCFG_BL_CONFIG_BL_PIN_NUMBER_M                 ) &amp; \\  ((((uint32_t)( SET_CCFG_BL_CONFIG_BL_ENABLE                     )) &lt;&lt; CCFG_BL_CONFIG_BL_ENABLE_S                     ) | ~CCFG_BL_CONFIG_BL_ENABLE_M                     ) )  #define DEFAULT_CCFG_ERASE_CONF          ( \\  ((((uint32_t)( SET_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N             )) &lt;&lt; CCFG_ERASE_CONF_CHIP_ERASE_DIS_N_S             ) | ~CCFG_ERASE_CONF_CHIP_ERASE_DIS_N_M             ) &amp; \\  ((((uint32_t)( SET_CCFG_ERASE_CONF_BANK_ERASE_DIS_N             )) &lt;&lt; CCFG_ERASE_CONF_BANK_ERASE_DIS_N_S             ) | ~CCFG_ERASE_CONF_BANK_ERASE_DIS_N_M             ) )  #define DEFAULT_CCFG_CCFG_TI_OPTIONS     ( \\  ((((uint32_t)( SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE            )) &lt;&lt; CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_S            ) | ~CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_M            ) )  #define DEFAULT_CCFG_CCFG_TAP_DAP_0      ( \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE           )) &lt;&lt; CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE_S           ) | ~CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE_M           ) &amp; \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE       )) &lt;&lt; CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE_S       ) | ~CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE_M       ) &amp; \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE          )) &lt;&lt; CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE_S          ) | ~CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE_M          ) )  #define DEFAULT_CCFG_CCFG_TAP_DAP_1      ( \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE        )) &lt;&lt; CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE_S        ) | ~CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE_M        ) &amp; \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE        )) &lt;&lt; CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE_S        ) | ~CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE_M        ) &amp; \\  ((((uint32_t)( SET_CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE           )) &lt;&lt; CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE_S           ) | ~CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE_M           ) )  #define DEFAULT_CCFG_IMAGE_VALID_CONF    SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID  #define DEFAULT_CCFG_CCFG_PROT_31_0      SET_CCFG_CCFG_PROT_31_0 #define DEFAULT_CCFG_CCFG_PROT_63_32     SET_CCFG_CCFG_PROT_63_32 #define DEFAULT_CCFG_CCFG_PROT_95_64     SET_CCFG_CCFG_PROT_95_64 #define DEFAULT_CCFG_CCFG_PROT_127_96    SET_CCFG_CCFG_PROT_127_96  \/\/***************************************************************************** \/\/ Customer Configuration Area in Lock Page \/\/***************************************************************************** #if defined(__IAR_SYSTEMS_ICC__) __root const ccfg_t __ccfg @ \".ccfg\" = #elif defined(__TI_COMPILER_VERSION__) #pragma DATA_SECTION(__ccfg, \".ccfg\") #pragma RETAIN(__ccfg) const ccfg_t __ccfg = #else const ccfg_t __ccfg __attribute__((section(\".ccfg\"))) __attribute__((used)) = #endif {                                     \/\/ Mapped to address     DEFAULT_CCFG_EXT_LF_CLK         , \/\/ 0x50003FA8 (0x50003xxx maps to last     DEFAULT_CCFG_MODE_CONF_1        , \/\/ 0x50003FAC  sector in FLASH.     DEFAULT_CCFG_SIZE_AND_DIS_FLAGS , \/\/ 0x50003FB0  Independent of FLASH size)     DEFAULT_CCFG_MODE_CONF          , \/\/ 0x50003FB4     DEFAULT_CCFG_VOLT_LOAD_0        , \/\/ 0x50003FB8     DEFAULT_CCFG_VOLT_LOAD_1        , \/\/ 0x50003FBC     DEFAULT_CCFG_RTC_OFFSET         , \/\/ 0x50003FC0     DEFAULT_CCFG_FREQ_OFFSET        , \/\/ 0x50003FC4     DEFAULT_CCFG_IEEE_MAC_0         , \/\/ 0x50003FC8     DEFAULT_CCFG_IEEE_MAC_1         , \/\/ 0x50003FCC     DEFAULT_CCFG_IEEE_BLE_0         , \/\/ 0x50003FD0     DEFAULT_CCFG_IEEE_BLE_1         , \/\/ 0x50003FD4     DEFAULT_CCFG_BL_CONFIG          , \/\/ 0x50003FD8     DEFAULT_CCFG_ERASE_CONF         , \/\/ 0x50003FDC     DEFAULT_CCFG_CCFG_TI_OPTIONS    , \/\/ 0x50003FE0     DEFAULT_CCFG_CCFG_TAP_DAP_0     , \/\/ 0x50003FE4     DEFAULT_CCFG_CCFG_TAP_DAP_1     , \/\/ 0x50003FE8     DEFAULT_CCFG_IMAGE_VALID_CONF   , \/\/ 0x50003FEC     DEFAULT_CCFG_CCFG_PROT_31_0     , \/\/ 0x50003FF0     DEFAULT_CCFG_CCFG_PROT_63_32    , \/\/ 0x50003FF4     DEFAULT_CCFG_CCFG_PROT_95_64    , \/\/ 0x50003FF8     DEFAULT_CCFG_CCFG_PROT_127_96   , \/\/ 0x50003FFC };  #endif \/\/ __CCFC_C__ <\/code><\/pre>\n<h4>\u0424\u0430\u0437\u0430 5: \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0441\u0431\u043e\u0440\u043a\u0435 Hardware Abstraction Layer (HAL) <\/h4>\n<p>\u0421 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043a\u0440\u043e\u043f\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u0443\u0442\u044c \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 GPIO, LEDs, SysTick, UART, NoRTOS, CLI.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0432 SimpleLink SDK, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u044d\u0442\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<\/p>\n<p>C:\\ti\\simplelink_cc13xx_cc26xx_sdk_5_40_00_40\\examples\\nortos\\CC26X2R1_LAUNCHXL\\drivers\\gpiointerrupt<\/p>\n<p>\u0414\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0421\u042126&#215;2 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 HAL \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442  \u043f\u0430\u043f\u043a\u0430 C:\/ti\/simplelink_cc13xx_cc26xx_sdk_5_40_00_40. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 HAL \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (*.a \u0444\u0430\u0439\u043b\u0438\u043a\u0438). \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c drivers_cc26x2.a, nortos_cc26x2.a \u0438 driverlib.lib<\/p>\n<pre><code class=\"bash\">ifneq ($(SIMPLELINK_CC13X2_26X2_SDK_MK_INC),Y)     SIMPLELINK_CC13X2_26X2_SDK_MK_INC=Y      mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))     $(info Build  $(mkfile_path) )     OPT += -DHAS_SIMPLELINK_CC13X2_26X2_SDK      SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR = C:\/ti\/simplelink_cc13xx_cc26xx_sdk_5_40_00_40     #@echo $(error SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR= $(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR))     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib\/bin     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib\/bin\/gcc     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/inc     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos     INCDIR += -I$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos\/posix                                                           LIBS += $(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/drivers\/lib\/gcc\/m4f\/drivers_cc26x2.a     LIBS += $(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos\/lib\/gcc\/m4f\/nortos_cc26x2.a     LIBS += $(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib\/bin\/gcc\/driverlib.lib      LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos\/lib     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos\/lib\/gcc     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/kernel\/nortos\/lib\/gcc\/m4f     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/drivers\/lib     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/drivers\/lib\/gcc     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/drivers\/lib\/gcc\/m4f     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib     LIBDIR += -L$(SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR)\/source\/ti\/devices\/cc13x2_cc26x2\/driverlib\/bin\/gcc endif<\/code><\/pre>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u0421\u04212652 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 CMSIS, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u044f\u0434\u0440\u043e ARM Cortex-M4.<\/p>\n<p><strong>\u0424\u0430\u0437\u0430 6: \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Makefile(\u043e\u0432)<\/strong><\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 Makefile \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a <\/p>\n<pre><code class=\"bash\">MK_PATH:=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) #@echo $(error MK_PATH=$(MK_PATH)) WORKSPACE_LOC:=$(MK_PATH)..\/..\/ INCDIR += -I$(MK_PATH) INCDIR += -I$(WORKSPACE_LOC)  TARGET=launchpad_bootloader_m  include $(MK_PATH)config.mk  ifeq ($(CLI),Y)     include $(MK_PATH)cli_config.mk endif  ifeq ($(DIAG),Y)     include $(MK_PATH)diag_config.mk endif  include $(WORKSPACE_LOC)code_base.mk include $(WORKSPACE_LOC)rules.mk  <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 (<a href=\"http:\/\/config.mk\" rel=\"noopener noreferrer nofollow\">config.mk<\/a>) \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b (code_base.mk) \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b (<a href=\"http:\/\/rules.mk\" rel=\"noopener noreferrer nofollow\">rules.mk<\/a>).  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0430\u0436\u0435 \u044d\u0442\u043e\u0442 Makefile \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u043c. \u0420\u0430\u0437\u043d\u044b\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"http:\/\/config.mk\" rel=\"noopener noreferrer nofollow\">config.mk<\/a> \u0444\u0430\u0439\u043b\u0438\u043a\u0438.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c *.mk \u0444\u0430\u0439\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041a\u043e\u0434, \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. <\/p>\n<pre><code class=\"bash\"> $(info LED_MONO_MK_INC=$(LED_MONO_MK_INC))  ifneq ($(LED_MONO_MK_INC),Y)     LED_MONO_MK_INC=Y      mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))     $(info Build LED Mono)      #FLASH_FS_DIR = $(WORKSPACE_LOC)Drivers\/flash_fs     LED_MONO_DIR = $(LED_GENERAL_DIR)\/led_mono     #@echo $(error LED_MONO_DIR=$(LED_MONO_DIR))      ifneq ($(LED),Y)         @echo $(error Add General LED driver)     endif      INCDIR += -I$(LED_MONO_DIR)     SOURCES_C += $(LED_MONO_DIR)\/led_mono_drv.c      OPT += -DHAS_LED_MONO     OPT += -DHAS_LED_MONO_PROC     MATH=Y      ifeq ($(DIAG),Y)         ifeq ($(LED_MONO_DIAG),Y)             OPT += -DHAS_LED_MONO_DIAG             SOURCES_C += $(LED_MONO_DIR)\/led_mono_diag.c         endif     endif      ifeq ($(CLI),Y)         ifeq ($(LED_MONO_COMMANDS),Y)             OPT += -DHAS_LED_MONO_COMMANDS             SOURCES_C += $(LED_MONO_DIR)\/led_mono_commands.c         endif     endif endif<\/code><\/pre>\n<p>\u0412 makefile \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u044f\u0434\u0440\u043e. \u041d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 cortex_m4.mk \u0444\u0430\u0439\u043b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u043e\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430<\/p>\n<pre><code class=\"bash\">$(info CORTEX_M4_MK_INC=$(CORTEX_M4_MK_INC) ) ifneq ($(CORTEX_M4_MK_INC),Y)     CORTEX_M4_MK_INC=Y      mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))     $(info Build  $(mkfile_path) )      CORTEX_M4_DIR = $(WORKSPACE_LOC)core\/cortex_m4     INCDIR += -I$(CORTEX_M4_DIR)     #@echo $(error CORTEX_M4_DIR=$(CORTEX_M4_DIR))     MCU=Y     SOURCES_C += $(CORTEX_M4_DIR)\/cortex_m4_driver.c     ifeq ($(DIAG),Y)         ifeq ($(CORTEX_M4_DIAG),Y)             SOURCES_C += $(CORTEX_M4_DIR)\/cortex_m4_diag.c         endif     endif      OPT += -DHAS_ARM     OPT += -DHAS_CORTEX_M4     OPT += -DHAS_CORTEX_M      CPU = -mcpu=cortex-m4 -march=armv7e-m     FPU = -mfpu=fpv4-sp-d16     # float-abi     FLOAT-ABI = -mfloat-abi=hard          # mcu     MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)      ifeq ($(SYSTICK),Y)         #@echo $(error SYSTICK=$(SYSTICK))         include $(CORTEX_M4_DIR)\/systick\/systick.mk     endif endif<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 *.mk \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430  CC2652R1FRGZ<\/p>\n<pre><code class=\"bash\">#protection against repeated include as in C preprocessor $(info CC2652R1FRGZ_MK_INC=$(CC2652R1FRGZ_MK_INC) ) ifneq ($(CC2652R1FRGZ_MK_INC),Y)     CC2652R1FRGZ_MK_INC=Y     CC2652R1FRGZ_DIR = $(MCU_DIR)\/cc2652r1f      ifeq ($(CC2652),Y)         OPT += -DHAS_CC2652         CC26X2=Y         OPT += -DDeviceFamily_CC26X2         OPT += -DHAS_CC26x2         OPT += -DHAS_CC26X2         OPT += -DHAS_CC26XX         OPT += -DCC26XX         OPT += -DCC26x2     endif      ifeq ($(CC2652R1FRGZ),Y)         OPT += -DCC2652R1F         OPT += -DHAS_CC2652R1F         OPT += -DCC2652R1FRGZ         OPT += -DHAS_CC2652R1FRGZ     endif      mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))     $(info Build  $(mkfile_path) )      FIRMWARE_TYPE_SELECTED=N     BOARD=Y      MICROCONTROLLER=Y     CC2652R1FRGZ=Y      INCDIR += -I$(CC2652R1FRGZ_DIR)      ifeq ($(BOOTLOADER),Y)         # link script         FIRMWARE_TYPE_SELECTED=Y         LDSCRIPT = $(CC2652R1FRGZ_DIR)\/cc26x2r1f.lds     endif      ifeq ($(GPIO),Y)         SOURCES_C += $(CC2652R1FRGZ_DIR)\/cc2652R1F.c     endif      SOURCES_C += $(CC2652R1FRGZ_DIR)\/startup_gcc.c     SOURCES_C += $(CC2652R1FRGZ_DIR)\/ccfg.c     SOURCES_C += $(CC2652R1FRGZ_DIR)\/syscalls.c          ifeq ($(SYSTICK),Y)         SOURCES_C += $(CC2652R1FRGZ_DIR)\/systick_general_config.c     endif      MCU_SELECTED=Y endif <\/code><\/pre>\n<p>\u0418, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 MCU rules.mk \u0444\u0430\u0439\u043b \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) $(info Build  $(mkfile_path) )  BUILD_DIR = build  INCDIR := $(subst \/cygdrive\/c\/,C:\/, $(INCDIR)) #@echo $(error INCDIR=$(INCDIR))  SOURCES_C := $(subst \/cygdrive\/c\/,C:\/, $(SOURCES_C)) #@echo $(error SOURCES_C=$(SOURCES_C))  SOURCES_ASM := $(subst \/cygdrive\/c\/,C:\/, $(SOURCES_ASM)) #@echo $(error SOURCES_ASM=$(SOURCES_ASM))  LIBS  := $(subst \/cygdrive\/c\/,C:\/, $(LIBS)) LDSCRIPT := $(subst \/cygdrive\/c\/,C:\/, $(LDSCRIPT)) #@echo $(error SOURCES_ASM=$(SOURCES_ASM))  include $(WORKSPACE_LOC)\/toolchain.mk  # CFLAGS #https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/ARM-Options.html FLOAT-ABI = -mfloat-abi=hard  MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)  # macros for gcc #CSTANDARD = -std=c11 CSTANDARD = -std=gnu99  AS_DEFS =   AS_INCLUDES =   ifeq ($(DEBUG), Y)     CFLAGS += -g3 -ggdb -gdwarf-2     OPT += -O0 else     OPT += -Os endif  OPT += -fmessage-length=0 OPT += -fsigned-char OPT += -fno-common OPT += -fstack-usage OPT += -finline-small-functions  #Perform dead code elimination OPT += -fdce  #Perform dead store elimination OPT += -fdse  ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections  CFLAGS += $(CSTANDARD) CFLAGS += -Wall #CFLAGS += -Wformat-overflow=1 CFLAGS += $(MCU) $(OPT) -fdata-sections -ffunction-sections $(INCDIR)    # Generate dependency information CFLAGS += -MMD -MP -MF\"$(@:%.o=%.d)\"  # libraries LINKER_FLAGS += -Xlinker --gc-sections  ifeq ($(MBR), Y)     LIBS += -lnosys     LDFLAGS += -specs=nano.specs else     LINKER_FLAGS += -u _scanf_float     LINKER_FLAGS += -u _printf_float endif  ifeq ($(LIBC), Y)     LIBS += -lc endif  ifeq ($(MATH), Y)     LIBS += -lm  endif  #@echo $(error LDSCRIPT=$(LDSCRIPT)) LIBDIR =   LDFLAGS += $(MCU) -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)\/$(TARGET).map,--cref -Wl,--gc-sections $(LINKER_FLAGS)  # default action: build all all: $(BUILD_DIR)\/$(TARGET).elf $(BUILD_DIR)\/$(TARGET).hex $(BUILD_DIR)\/$(TARGET).bin  # build the application # list of objects OBJECTS = $(addprefix $(BUILD_DIR)\/,$(notdir $(SOURCES_C:.c=.o))) vpath %.c $(sort $(dir $(SOURCES_C))) # list of ASM program objects OBJECTS += $(addprefix $(BUILD_DIR)\/,$(notdir $(SOURCES_ASM:.S=.o))) vpath %.S $(sort $(dir $(SOURCES_ASM)))  $(BUILD_DIR)\/%.o: %.c Makefile | $(BUILD_DIR)  $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)\/$(notdir $(&lt;:.c=.lst)) $&lt; -o $@  $(BUILD_DIR)\/%.o: %.S Makefile | $(BUILD_DIR) $(AS) -c $(CFLAGS) $&lt; -o $@  $(BUILD_DIR)\/$(TARGET).elf: $(OBJECTS) Makefile $(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(SZ) $@  $(BUILD_DIR)\/%.hex: $(BUILD_DIR)\/%.elf | $(BUILD_DIR) $(HEX) $&lt; $@  $(BUILD_DIR)\/%.bin: $(BUILD_DIR)\/%.elf | $(BUILD_DIR) $(BIN) $&lt; $@  $(BUILD_DIR): mkdir $@  # clean up clean: -rm -fR $(BUILD_DIR)  # dependencies -include $(wildcard $(BUILD_DIR)\/*.d)  # *** EOF ***<\/code><\/pre>\n<p>\u041f\u0440\u0435\u043b\u0435\u0441\u0442\u044c makefile \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043d\u0430\u0431\u0440\u0430\u0442\u044c make all. \u0417\u0430\u0442\u0435\u043c, \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442 \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u043d\u044b\u0439 \u043b\u043e\u0433 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u044d\u043a\u0440\u0430\u043d\u0430 \u043a\u0430\u043a \u0432 CCS.<\/p>\n<pre><code class=\"bash\">echo off cls  make clean 2>&amp;1 | tee clean_log.txt make  2>&amp;1 | tee build_log.txt <\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c8\/ba3\/02f\/5c8ba302ff60ef9ac56383e4f4c16cc8.png\" width=\"1330\" height=\"510\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c8\/ba3\/02f\/5c8ba302ff60ef9ac56383e4f4c16cc8.png\"\/><\/figure>\n<p>\u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b: *.bin, *.hex, *.map, *.elf<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/94d\/069\/130\/94d069130b61f300c5e45ed4e59162f9.png\" width=\"860\" height=\"422\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94d\/069\/130\/94d069130b61f300c5e45ed4e59162f9.png\"\/><\/figure>\n<h4>\u0424\u0430\u0437\u0430 7: \u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432 on-chip NOR Flash \u043f\u0430\u043c\u044f\u0442\u044c <\/h4>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0421\u04212652 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>srfprog.exe<\/strong>. \u042d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b SmartRF Flash Programmer 2. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>srfprog <\/strong>\u0436\u0438\u0432\u0435\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443  <\/p>\n<p>C:\\Program Files (x86)\\Texas Instruments\\SmartRF Tools\\Flash Programmer 2\\bin\\srfprog.exe<\/p>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0431\u044b\u043b\u0438, \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 Win \u043a\u043e\u043d\u0441\u043e\u043b\u0438 where srfprog.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/480\/8d8\/523\/4808d8523436a94a695b9b105872c567.png\" width=\"1105\" height=\"61\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/8d8\/523\/4808d8523436a94a695b9b105872c567.png\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 on-chip NOR Flash \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<pre><code class=\"bash\">echo off cls set project_dir=%~dp0  set FLASH_TOOL=srfprog.exe set BIN_PATH=%project_dir%build\\launchpad_bootloader_m.bin  call %FLASH_TOOL% --list all call %FLASH_TOOL% --help  call %FLASH_TOOL% --target lsidx(0) --erase all --program --file %BIN_PATH% --address 0 <\/code><\/pre>\n<p> \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0431\u0438\u043d\u0430\u0440\u044f<\/p>\n<pre><code> Texas Instruments SmartRF Flash Programmer 2 v1.8.2-windows -------------------------------------------------------------------------------  Connected over 2-pin cJTAG.  Reading file: C:\\....\\code_base_firmware\\source\\projects\\launchpad_bootloader_m\\build\\launchpad_bootloader_m.bin. 2%le size: 360448 bytes. Number of assigned pages: 44. About 34 percent of the file contain assigned code. Start flash erase ...   OK  Start flash programming ... 100%  OK  Reset target ...  OK  C:\\....\\code_base_firmware\\source\\projects\\launchpad_bootloader_m><\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e 80..97% \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u0438\u043d\u0430\u0440\u044f \u0432\u043e flash \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u044b\u043a\u0432\u0443. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442 \u0433\u0434\u0435-\u0442\u043e \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0449\u0435 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0443\u043f\u0435\u0440\u0446\u0438\u043a\u043b\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 JTAG. <\/p>\n<h4>\u0424\u0430\u0437\u0430 8: \u0417\u0430\u043f\u0443\u0441\u043a GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h4>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0443 TI \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>gdb_agent_console.exe<\/strong>. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b gdb_agent_console \u0435\u0439 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 *.dat \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u043b\u0430\u0442\u043e\u0439 LAUNCHXL-CC26X2R1 \u043d\u0430\u0434\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a XDS110. \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0443\u0442\u0435\u043c grep(\u0430\u043d\u0438\u044f) \u043d\u0430 \u0436\u0435\u0441\u0442\u043a\u043e\u043c \u0434\u0438\u0441\u043a\u0435, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u0432\u043e\u0442 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b CC2652_XDS110_JTAG.dat. \u041f\u0440\u0438\u0447\u0435\u043c *.dat \u0444\u0430\u0439\u043b \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0430 \u043d\u0435 \u0432 SDK. <\/p>\n<pre><code># config version=3.5 $ sepk   pod_drvr=jioxds110.dll   pod_port=0   pod_supply=1   pod_voltage_selection=1   pod_voltage=3.3 $ \/ $ product   title=\"Texas Instruments XDS110 USB\"   alias=TI_XDS110_USB   name=XDS110 $ \/ $ uscif   tdoedge=FALL   tclk_program=DEFAULT   tclk_frequency=2.5MHz   jtag_isolate=disable $ \/ $ dot7   dts_usage=enable   dts_type=xds110   dts_program=emulator   dts_frequency=1.0MHz   ts_format=jscan0   ts_pin_width=all_four $ \/ $ swd   swd_debug=disabled   swo_data=aux_uart $ \/ @ icepick_c family=icepick_c irbits=6 drbits=1 subpaths=2   &amp; subpath_2 address=0 default=no custom=yes force=yes pseudo=no     @ bypass_0 family=bypass irbits=4 drbits=1   &amp; subpath_0 address=16 default=no custom=yes force=yes pseudo=no     @ cs_dap_0 family=cs_dap irbits=4 drbits=1 subpaths=1 identify=0x4BA00477 revision=Legacy systemresetwhileconnected=1       &amp; subpath_1 type=debug address=0 default=no custom=yes force=yes pseudo=no         @ cortex_m4_0 family=cortex_mxx irbits=0 drbits=0 identify=0x02000000 traceid=0x0       &amp; \/   &amp; \/ # \/ <\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<pre><code class=\"bash\">set GDB_SERVER=C:\\ti\\ccs_base\\common\\uscif\\gdb_agent_console.exe set USB_JTAG_CONFIG=%CUR_DIR%\\CC2652_XDS110_JTAG.dat  %GDB_SERVER% --help %GDB_SERVER% %USB_JTAG_CONFIG%<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0440\u0442\u0435 55000<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3d0\/503\/9b9\/3d05039b993f73c359a54e4f045c68f0.png\" width=\"696\" height=\"272\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d0\/503\/9b9\/3d05039b993f73c359a54e4f045c68f0.png\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e GDB \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0443 <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/007\/a1f\/41a\/007a1f41a26e827faf5b0a50074f77cb.JPG\" width=\"889\" height=\"324\"\/><\/figure>\n<h4>\u0424\u0430\u0437\u0430 9: GDB \u043a\u043b\u0438\u0435\u043d\u0442<\/h4>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 GDB \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c Win \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 arm-none-eabi-gdb.exe, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0435\u0439 \u043f\u0443\u0442\u044c \u043a *.elf \u0444\u0430\u0439\u043b\u0443 \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439.  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 -g.<\/p>\n<pre><code class=\"bash\"> cls set GDB_CLIENT=\"C:\\Program Files (x86)\\GNU Arm Embedded Toolchain\\10 2021.10\\bin\\arm-none-eabi-gdb.exe\" %GDB_CLIENT% --help set ELF_FILE=%CUR_DIR%\\build\\launchpad_bootloader_m.elf %GDB_CLIENT% --nw %ELF_FILE%  <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u043d\u0430\u0434\u043e \u0432\u043d\u0443\u0442\u0440\u0438 GDB \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<pre><code>target remote localhost:55000<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 55000. \u0418 \u0432\u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435: <\/p>\n<blockquote>\n<p>\u043a\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 GDB \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439?<\/p>\n<\/blockquote>\n<p>, \u0442\u043e \u044f \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <strong>backtrace<\/strong> (bt). \u0418\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <strong>backtrace<\/strong> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0441\u0432\u0430\u043b\u0438\u043b\u0430\u0441\u044c \u0432 <strong>FaultISRHandler()<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d7b\/dce\/135\/d7bdce1352f48887228345ba01095c09.png\" alt=\"\u041f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 28 \u0431\u0430\u0439\u0442 \u0438 \u0443\u043f\u0430\u043b\u0438 \u0432 FaultISRHandler\" title=\"\u041f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 28 \u0431\u0430\u0439\u0442 \u0438 \u0443\u043f\u0430\u043b\u0438 \u0432 FaultISRHandler\" width=\"2748\" height=\"917\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7b\/dce\/135\/d7bdce1352f48887228345ba01095c09.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 28 \u0431\u0430\u0439\u0442 \u0438 \u0443\u043f\u0430\u043b\u0438 \u0432 <strong>FaultISRHandler<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 GDB \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443 \u043c\u0435\u043d\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0442\u0443\u0442 <\/p>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1AWD8GsDfaA9dtdsfqgbB1klagou1yrREc1AAK9CRUik\/edit#gid=0\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.google.com\/spreadsheets\/d\/1AWD8GsDfaA9dtdsfqgbB1klagou1yrREc1AAK9CRUik\/edit#gid=0<\/a><\/p>\n<p>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u043e\u0439 <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b11\/286\/fd0\/b11286fd0b5259abdcd25757697cf3af.png\" alt=\"\u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435\" title=\"\u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435\" width=\"1897\" height=\"2072\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b11\/286\/fd0\/b11286fd0b5259abdcd25757697cf3af.png\"\/><\/p>\n<div><figcaption>\u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435<\/figcaption><\/div>\n<\/figure>\n<h4>\u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0437\u0430\u0432\u0435\u043b\u0430\u0441\u044c?<\/h4>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 Heartbeat LED. \u0415\u0441\u043b\u0438 \u043c\u0438\u0433\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0443\u043f\u0435\u0440\u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432\u0435\u0440\u0442\u0438\u0442\u0441\u044f. \u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c NoRTOS-\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0421\u04212652 \u0441  GPIO, SysTick, LED, UART, CLI. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f CLI \u0432 UART. \u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0417\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0437\u0430\u0432\u0435\u043b\u0430\u0441\u044c. \u0423\u0441\u043f\u0435\u0445! <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/303\/d71\/95c\/303d7195ca47465ed9288c7fb574ed80.png\" alt=\"Debug CLI Terminal\" title=\"Debug CLI Terminal\" width=\"602\" height=\"706\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/303\/d71\/95c\/303d7195ca47465ed9288c7fb574ed80.png\"\/><\/p>\n<div><figcaption>Debug CLI Terminal<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u043e \u0447\u0442\u043e\u00a0\u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0438\u0434\u0435\u043b\u0438 (Debug CLI Terminal) \u044d\u0442\u043e UART\u2011CLI. \u041f\u0440\u043e\u00a0\u044d\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0442\u0443\u0442\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/694408\/\" rel=\"noopener noreferrer nofollow\"><u>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d UART\u2011Shell? (\u0438\u043b\u0438 23\u00a0\u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438)<\/u><\/a>.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u0441\u0451 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u043e\u0434\u043d\u0443 \u0451\u043c\u043a\u0443\u044e \u0441\u0445\u0435\u043c\u0443 ToolChain(\u043d\u0430). \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0432\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f\u00a0\u0421\u042126\u00d72\u00a0\u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 ARM GCC. \u0412\u0441\u0451 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c\u00a0\u043b\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/393\/fb7\/d17\/393fb7d17742ea5b9eb0c80f85122f92.png\" width=\"3133\" height=\"4992\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/393\/fb7\/d17\/393fb7d17742ea5b9eb0c80f85122f92.png\"\/><\/figure>\n<h3>\u0412\u044b\u0432\u043e\u0434<\/h3>\n<p>\u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Texas Instruments CC2652 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c ARM GCC \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 Makefile(\u043e\u0432). \u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441\u0431\u043e\u0440\u043a\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0441\u0431\u043e\u0440\u043a\u0435 \u0438\u0437 GUI-IDE CCS. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0432\u0441\u0435\u0433\u043e-\u043d\u0430\u0432\u0441\u0435\u0433\u043e 6 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 *.\u0441 *.h *.lds *.mk *.makefile, *.dat. \u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 Makefile \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443.<\/p>\n<h3>C\u043b\u043e\u0432\u0430\u0440\u044c<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\"><strong>\u0410\u043a\u0440\u043e\u043d\u0438\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">CDT<\/p>\n<\/td>\n<td>\n<p align=\"left\">C\/C++ Development Tooling<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">RAM<\/p>\n<\/td>\n<td>\n<p align=\"left\">random access memory<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">HAL <\/p>\n<\/td>\n<td>\n<p align=\"left\">Hardware Abstraction Layer<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">OS<\/p>\n<\/td>\n<td>\n<p align=\"left\">operating system<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">SRAM<\/p>\n<\/td>\n<td>\n<p align=\"left\">static RAM<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">RISC <\/p>\n<\/td>\n<td>\n<p align=\"left\">reduced instruction set computer<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">ARM<\/p>\n<\/td>\n<td>\n<p align=\"left\">Advanced RISC Machines<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">CMSIS<\/p>\n<\/td>\n<td>\n<p align=\"left\">Cortex Microcontroller Software Interface<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">SDK<\/p>\n<\/td>\n<td>\n<p align=\"left\">software development kit<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">GNU <\/p>\n<\/td>\n<td>\n<p align=\"left\">GNU\u2019s Not UNIX<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">CPU<\/p>\n<\/td>\n<td>\n<p align=\"left\">central\u00a0processing\u00a0unit  <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">ROM<\/p>\n<\/td>\n<td>\n<p align=\"left\">Read-only memory  <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">GCC<\/p>\n<\/td>\n<td>\n<p align=\"left\">The GNU Compiler Collection<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">GDB<\/p>\n<\/td>\n<td>\n<p align=\"left\">The GNU Project Debugger<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">IDE<\/p>\n<\/td>\n<td>\n<p align=\"left\">Integrated Development Environment<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">JTAG  <\/p>\n<\/td>\n<td>\n<p align=\"left\">Joint Test Action Group  <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">JRE<\/p>\n<\/td>\n<td>\n<p align=\"left\">Java Runtime Environment<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">CCA<\/p>\n<\/td>\n<td>\n<p align=\"left\">Customer Configuration Area<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">UNIX<\/p>\n<\/td>\n<td>\n<p align=\"left\">UNiplexed Information Computing System<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">CCFG<\/p>\n<\/td>\n<td>\n<p align=\"left\">Customer Configuration section<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">TI<\/p>\n<\/td>\n<td>\n<p align=\"left\">Texas Instruments<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">FPU<\/p>\n<\/td>\n<td>\n<p align=\"left\">Floating Point Unit<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Links<\/h3>\n<p><a href=\"https:\/\/developer.arm.com\/Tools\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.arm.com\/Tools<\/a> and Software\/GNU Toolchain<\/p>\n<p><a href=\"https:\/\/github.com\/wufucious\/sensortag-blink\/tree\/f65459dbc182a7c6e2d356f7de033e93d0b7f05b\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/wufucious\/sensortag-blink\/tree\/f65459dbc182a7c6e2d356f7de033e93d0b7f05b<\/a><\/p>\n<p><a href=\"https:\/\/electrolama.com\/radio-docs\/flash-ti-flash-prog\/\" rel=\"noopener noreferrer nofollow\">https:\/\/electrolama.com\/radio-docs\/flash-ti-flash-prog\/<\/a><\/p>\n<p><a href=\"https:\/\/wiki.st.com\/stm32mpu\/wiki\/GDB_commands\" rel=\"noopener noreferrer nofollow\">https:\/\/wiki.st.com\/stm32mpu\/wiki\/GDB_commands<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/unwds\/articles\/390815\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/companies\/unwds\/articles\/390815\/<\/a> <\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/430732\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/430732\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/148169\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/148169\/<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/162737\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/162737\/<\/a><\/p>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1AWD8GsDfaA9dtdsfqgbB1klagou1yrREc1AAK9CRUik\/edit#gid=0\" rel=\"noopener noreferrer nofollow\">https:\/\/docs.google.com\/spreadsheets\/d\/1AWD8GsDfaA9dtdsfqgbB1klagou1yrREc1AAK9CRUik\/edit#gid=0<\/a><\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b:<\/strong><\/p>\n<p>1&#8212;\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u0447\u0435\u0439 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <strong>main()<\/strong>?<\/p>\n<p>2&#8212;\u041a\u0430\u043a\u0438\u0435 <strong>\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/strong> \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0442\u044c <strong>\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u043c\u0443<\/strong> <strong>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e<\/strong> \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 GCC \u0438 MakeFile?<\/p>\n<p>3&#8212;\u0427\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c\u0438<\/strong> \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430? \u041a\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432?<\/p>\n<p>4&#8212;\u041a\u0430\u043a\u043e\u0439 <strong>\u043f\u0443\u0442\u044c<\/strong> \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0434 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 flash \u043f\u0430\u043c\u044f\u0442\u044c?<\/p>\n<p>5&#8212;\u041a\u0430\u043a\u0438\u0435 <strong>\u0434\u043e\u043a\u0438<\/strong>(\u0441\u043f\u0435\u043a\u0438) \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0441\u043e\u0444\u0442? \u041d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u043c\u0438\u043d\u0438\u043c\u0443\u043c 4 \u0434\u043e\u043a\u0430.<\/p>\n<p>6&#8212;\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u0434\u0430\u043b\u0438 5 *.\u0441 \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432 \u0438 20 *.h \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u0434\u0435\u0442 *.o \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432?<\/p>\n<p>7&#8212;\u0412 \u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0432 <strong>*.hex<\/strong> \u0444\u0430\u0439\u043b\u0438\u043a\u0430\u0445 <strong>\u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435<\/strong> \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0432 *.bin \u0444\u0430\u0439\u043b\u0438\u043a\u0430\u0445?<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/726352\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">97.3% <\/span><span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span><span class=\"tm-article-poll__answer-votes\">36<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 97.3%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.7% <\/span><span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.7%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 37 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 2 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/726352\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Texas Instruments (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0440\u0438\u0438 CC26x2)?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">37.14% <\/span><span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span><span class=\"tm-article-poll__answer-votes\">13<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 37.14%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">62.86% <\/span><span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span><span class=\"tm-article-poll__answer-votes\">22<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 62.86%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 35 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 3 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/726352\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a\u0438\u043c ToolChain(\u043e\u043c) \u0432\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043e\u0442 Texas Instruments?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">62.5% <\/span><span class=\"tm-article-poll__answer-label\">Code Composer Studio<\/span><span class=\"tm-article-poll__answer-votes\">15<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 62.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">20.83% <\/span><span class=\"tm-article-poll__answer-label\">IAR<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 20.83%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">20.83% <\/span><span class=\"tm-article-poll__answer-label\">Keil<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 20.83%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">37.5% <\/span><span class=\"tm-article-poll__answer-label\">GCC+ Makefile<\/span><span class=\"tm-article-poll__answer-votes\">9<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 37.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">16.67% <\/span><span class=\"tm-article-poll__answer-label\">GCC+ Cmake<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 16.67%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">8.33% <\/span><span class=\"tm-article-poll__answer-label\">Clang<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 8.33%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">GHS<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 24 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.    \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 8 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/726352\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043a\u0430\u043a\u0438\u0445 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432 \u0432\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">90% <\/span><span class=\"tm-article-poll__answer-label\">STMicroelectronics<\/span><span class=\"tm-article-poll__answer-votes\">36<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 90%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">50% <\/span><span class=\"tm-article-poll__answer-label\">Texas Instruments<\/span><span class=\"tm-article-poll__answer-votes\">20<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 50%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">30% <\/span><span class=\"tm-article-poll__answer-label\">NXP Semiconductors<\/span><span class=\"tm-article-poll__answer-votes\">12<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 30%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">30% <\/span><span class=\"tm-article-poll__answer-label\">Nordic Semiconductor<\/span><span class=\"tm-article-poll__answer-votes\">12<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 30%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">82.5% <\/span><span class=\"tm-article-poll__answer-label\">Atmel<\/span><span class=\"tm-article-poll__answer-votes\">33<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 82.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">22.5% <\/span><span class=\"tm-article-poll__answer-label\">Silicon Labs<\/span><span class=\"tm-article-poll__answer-votes\">9<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 22.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">35% <\/span><span class=\"tm-article-poll__answer-label\">Espressif Systems<\/span><span class=\"tm-article-poll__answer-votes\">14<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 35%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">17.5% <\/span><span class=\"tm-article-poll__answer-label\">Infineon<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 17.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.5% <\/span><span class=\"tm-article-poll__answer-label\">Renesas<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">45% <\/span><span class=\"tm-article-poll__answer-label\">Microchip<\/span><span class=\"tm-article-poll__answer-votes\">18<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 45%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.5% <\/span><span class=\"tm-article-poll__answer-label\">Artery Technology<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.5% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0418\u0418\u042d\u0422<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">20% <\/span><span class=\"tm-article-poll__answer-label\">\u0410\u041e \u041f\u041a\u041a \u041c\u0438\u043b\u0430\u043d\u0434\u0440<\/span><span class=\"tm-article-poll__answer-votes\">8<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 20%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.5% <\/span><span class=\"tm-article-poll__answer-label\">\u0410\u041e \u041d\u041f\u0426 \u042d\u041b\u0412\u0418\u0421<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.5%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">17.5% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0440\u0443\u0433\u0438\u0435<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 17.5%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 40 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 3 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/726352\/\"> https:\/\/habr.com\/ru\/articles\/726352\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430\u2011\u043b\u0438\u0431\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u00a0\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438 \u043e\u0442\u00a0\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Texas Instruments (TI), \u0442\u043e 70%&#8230;.90% \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u044b \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u00a0GUI\u2011IDE \u043f\u043e\u0434\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Code Composer Studio (CCS). \u041a\u0430\u043a\u00a0\u0438 \u0443\u00a0\u043b\u044e\u0431\u043e\u0439 IDE CCS \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438: \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u044b\u0448\u043a\u043e\u0439 \u043f\u043e\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f GUI, \u043e\u0442\u043a\u0430\u0437 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437\u00a0\u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0430c\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0436\u0435 \u043c\u0435\u0441\u0442\u043d\u0430\u044f \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 TI \u043d\u0435\u00a0\u0432\u00a0\u043a\u0443\u0440\u0441\u0435, \u043e\u0442\u043a\u0430\u0437 \u043e\u0442\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u043f\u0443\u0442\u0438 \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f WORKSPACE_LOC \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0448\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438\u0437\u00a0\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0445 Makefile(\u043e\u0432) \u043f\u0440\u0438\u00a0\u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 GNU ARM GCC. <\/p>\n<p>\u041e\u00a0\u043f\u043e\u043b\u044c\u0437\u0435 makefile \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0432\u043e\u0442 \u043e\u043d\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/post\/723054\/\" rel=\"noopener noreferrer nofollow\"><u>\u041f\u043e\u0447\u0435\u043c\u0443 \u0412\u0430\u0436\u043d\u043e \u0421\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0421\u2011\u043a\u043e\u0434 \u0438\u0437\u00a0MakeFile<\/u><\/a>. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0441\u00a0makefile(\u043b\u0430\u043c\u0438) \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 DevOps, CI\/CD \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u0422\u0430\u043a\u0436\u0435 \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437\u00a0makefile \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u043e\u0441\u043e\u0437\u043d\u0430\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u043e \u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u043c\u0435\u043d\u044e IDE.<\/p>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f CC26x2 \u0438\u0437 Makefile<\/h2>\n<h4>\u0424\u0430\u0437\u0430 1: \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u0430<\/h4>\n<p><strong>a&#8212;\u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0437 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\"><strong>#<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\"><strong>\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">LapTop<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">\u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 LAUNCHXL-CC26X2R1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"77\" width=\"77\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"382\" width=\"382\">\n<p align=\"left\">\u043a\u0430\u0431\u0435\u043b\u044c USB-A-USB micro<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043f\u043b\u0430\u0442\u043e\u0439 LAUNCHXL-CC26X2R1. \u0422\u0430\u043c \u0437\u0430\u043b\u043e\u0436\u0435\u043d \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CC2652R1. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>LAUNCHXL-CC26X2R1<\/figcaption><\/div>\n<\/figure>\n<p> \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u043f\u043b\u0430\u0442\u044b LAUNCHXL-CC26X2R1. \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0441\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 CC2652R1F \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a XDS110. <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 <strong>CC2652R1F<\/strong>RGZ? <\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\"><strong>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\"><strong>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Unit<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u042f\u0434\u0440\u043e<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">Arm Cortex-M4F<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">ARMv7-M<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RF Core<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">Arm Cortex-M0<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">32<\/p>\n<\/td>\n<td>\n<p align=\"left\">bit<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">FPU<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">IEEE 754-compliant single-precision <\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RAM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x20000000<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPRAM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x11000000<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPRAM  size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">ROM start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">FLASH_CCFG start<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0x00057fa8 (44\u0442\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440)<\/p>\n<\/td>\n<td>\n<p align=\"left\">hex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Flash \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">44<\/p>\n<\/td>\n<td>\n<p align=\"left\">dec<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">RAM size <\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">80<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">ROM size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">352<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Flash sector size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Cache SRAM size<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">kByte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Peripherals<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">GPIO DAC UART ADC SPI I2C I2S AES TRNG Bluetooth 5.1, Timers MPU<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Prog Interface<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">JTAG<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">CPU clock<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">48<\/p>\n<\/td>\n<td>\n<p align=\"left\">MHz<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">Pin number<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">48<\/p>\n<\/td>\n<td>\n<p align=\"left\">pin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">GPIO count<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">31<\/p>\n<\/td>\n<td>\n<p align=\"left\">pin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0430\u0439\u0442\u043e\u0432<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">little Endian<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u041a\u043e\u0440\u043f\u0443\u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">RGZ (7-mm x 7-mm VQFN48)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"167\" width=\"167\">\n<p align=\"left\">\u0428\u0430\u0433 \u043c\u0435\u0436\u0434\u0443 \u043f\u0438\u043d\u0430\u043c\u0438<\/p>\n<\/td>\n<td data-colwidth=\"441\" width=\"441\">\n<p align=\"left\">0.5<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043c\u043c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 CC2652R1FRGZ \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0438 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 (*.ld \u0444\u0430\u0439\u043b).<\/p>\n<p><strong>b&#8212;\u041a\u0430\u043a\u0438\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043e\u043a\u0438?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\"><strong>\u2116<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\"><strong>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043a\u0430<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\"><strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<br \/> \u0441\u0442\u0440\u0430\u043d\u0438\u0446<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">Using GCC\/GDB With SimpleLink CC26xx\/CC13xx<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">33<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0430 ToolChain(\u0430) \u0434\u043b\u044f GCC \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f TI MCU <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">CC2652R SimpleLink Multiprotocol 2.4 GHz Wireless MCU<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">70<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0444\u043b\u0430\u0435\u0440 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">CC13x2, CC26x2 SimpleLink Wireless MCU Technical Reference Manual<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">2083<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">Cortex-M3\/M4F Instruction Set<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">221<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td data-colwidth=\"341\" width=\"341\">\n<p align=\"left\">WCS037 LAUNCHXL-CC26X2R1<\/p>\n<\/td>\n<td data-colwidth=\"113\" width=\"113\">\n<p align=\"left\">7<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>c&#8212;\u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0437 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u0430?<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\"><strong>#<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\"><strong>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">OS Windows<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Eclipse<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">GNU Toolchain<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">UniFlash<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">9<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">SmartRF Flash Programmer 2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">10<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">XDS Emulation Software (EMUPack) (64-bit Windows)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c GDB \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 CC26x2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">C:\\ti\\simplelink_cc13xx_cc26xx_sdk_5_40_00_40  <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 cc26xx<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Build tools for Windows<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. make, rm <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">make <\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 makefile<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">13<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">grep<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">6<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">gdb_agent_console.exe<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u0442\u0438\u043b\u0438\u0442\u0430 GDB \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043e\u0442 TI<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">7<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">arm-none-eabi-gdb.exe<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 GDB \u043a\u043b\u0438\u0435\u043d\u0442\u0430 <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"50\" width=\"50\">\n<p align=\"left\">11<\/p>\n<\/td>\n<td data-colwidth=\"292\" width=\"292\">\n<p align=\"left\">Tera Term<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e COM \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 \u043f\u043e UART<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 GNU Toolchain<strong>\u00a0<\/strong>\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u00a0<strong>arm-none-eabi-gcc &#8212;version<\/strong>\u00a0\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Windows  <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0443\u0436\u043d\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 make. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 MinGW. <\/p>\n<figure class=\"full-width\"><\/figure>\n<h4>\u0424\u0430\u0437\u0430 2: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430.<\/h4>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0430\u043c \u0421-\u043a\u043e\u0434 \u043d\u0435 \u043e\u0441\u043e\u0431\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u043c\u044b\u0439. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430.  \u0412 GCC \u044d\u0442\u043e *.ld \u0444\u0430\u0439\u043b\u044b. \u0413\u0434\u0435 \u0436\u0435 \u0432\u0437\u044f\u0442\u044c *.ld \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 cc2652r1frgz? \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442. \u041d\u0430\u0434\u043e \u043f\u043e\u0440\u044b\u0442\u044c\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 SDK. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b grep \u044f \u0432\u0441\u043a\u043e\u0440\u0435 \u0441\u0443\u0437\u0438\u043b \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043e  \u043f\u0430\u043f\u043a\u0438<br \/>C:\\ti\\simplelink_cc13xx_cc26xx_sdk_5_40_00_40\\source\\ti\\devices\\cc13x2_cc26x2\\linker_files. \u0422\u0430\u043c \u0438 \u043b\u0435\u0436\u0430\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430 cc26x2r1f.lds<\/p>\n<pre><code class=\"cpp\">\/*  @file      cc26x2r1f.lds  @brief     CC26x2R1F rev2 linker configuration file for GNU compiler.  *\/  \/* Entry Point *\/ ENTRY( ResetISR )  \/* System memory map *\/ MEMORY {     \/* Application is stored in and executes from internal flash *\/     FLASH (RX) : ORIGIN = 0x0, LENGTH = 0x57FA8     \/* Customer Configuration Area (CCFG) *\/     FLASH_CCFG (RX) : ORIGIN = 0x57FA8, LENGTH = 88     \/* Application uses internal RAM for data *\/     SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 0x14000     \/* Application can use GPRAM region as RAM if cache is disabled in the CCFG        (DEFAULT_CCFG_SIZE_AND_DIS_FLAGS.SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM = 0) *\/     GPRAM (RWX) : ORIGIN = 0x11000000, LENGTH = 0x2000 }  \/*. Highest address of the stack. Used in startup file .*\/ _estack = ORIGIN(SRAM) + LENGTH(SRAM); \/*end of SRAM .*\/  \/*. Generate a link error if heap and stack does not fit into RAM .*\/ _Min_Heap_Size = 0; _Min_Stack_Size = 0x100;  \/* Section allocation in memory *\/ SECTIONS {     .text :     {         _text = .;         KEEP(*(.vectors))         *(.text*)         *(.rodata*)         *(.init)         *(.fini*)         *(.eh_frame*)         _etext = .;     } > FLASH = 0     .ARM.exidx :     {         __exidx_start = .;         *(.ARM.exidx* .gnu.linkonce.armexidx.*)         __exidx_end = .;     } > FLASH      .ARM.extab :     {         *(.ARM.extab* .gnu.linkonce.armextab.*)     } > FLASH      .init_array :     {         _init_array = .;         KEEP(*(SORT(.init_array.*)))         KEEP(*(.init_array*))         _einit_array = .;     } > FLASH      .data :     {         _data = .;         *(vtable)         *(.data*)         _edata = .;     } > SRAM AT > FLASH     _ldata = LOADADDR(.data);      .bss :     {         __bss_start__ = .;         _bss = .;         *(.bss*)         *(COMMON)         _ebss = .;         __bss_end__ = .;     } > SRAM      .ccfg :     {         KEEP(*(.ccfg));     } > FLASH_CCFG      \/* User_heap_stack section, used to check that there is enough SRAM left *\/     ._user_heap_stack :     {       . = ALIGN(4);       . = . + _Min_Heap_Size;       . = . + _Min_Stack_Size;       . = ALIGN(4);     } > SRAM      .gpram :     {     } > GPRAM } <\/code><\/pre>\n<h4>\u0424\u0430\u0437\u0430 3: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 startup \u043a\u043e\u0434\u0430<\/h4>\n<p>\u0414\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 main() \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c startup \u043a\u043e\u0434. \u0413\u0434\u0435 \u0436\u0435 \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b \u0434\u043b\u044f startup \u043a\u043e\u0434\u0430? \u0422\u0443\u0442 \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a grep(\u043e\u043f) \u0432\u043d\u0443\u0442\u0440\u0438 SDK \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 startup \u043f\u0440\u0438\u0432\u0435\u043b \u043c\u0435\u043d\u044f \u043a \u0444\u0430\u0439\u043b\u0443 startup_gcc.c. \u0423 ST \u043e\u0431\u044b\u0447\u043d\u043e  startup \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 assembler, \u043d\u043e \u0443 TI startup \u0444\u0430\u0439\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0421. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0412\u043d\u0443\u0442\u0440\u0438 startup_gcc.c \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f ResetISR(). \u0424\u0443\u043d\u043a\u0446\u0438\u044f ResetISR \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (rwdata), \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (bss), \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 FPU \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e main(), \u0430 \u0435\u0441\u043b\u0438 main \u0434\u0430\u043b\u0430 \u043e\u0441\u0435\u0447\u043a\u0443 &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435. \u0412 startup \u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u044126&#215;2. <\/p>\n<pre><code class=\"cpp\">\/****************************************************************************** *  Filename:       startup_gcc.c *  Revised:        $Date: 2017-06-01 16:01:48 +0200 (Thu, 01 Jun 2017) $ *  Revision:       $Revision: 17804 $ * *  Description:    Startup code for CC26x2 device family for use with GCC. * ******************************************************************************\/  \/\/***************************************************************************** \/\/ Check if compiler is GNU Compiler \/\/***************************************************************************** #if !(defined(__GNUC__)) #error \"startup_gcc.c: Unsupported compiler!\" #endif  #include \"..\/inc\/hw_types.h\" #include \"..\/driverlib\/setup.h\"  \/\/***************************************************************************** \/\/ Macro for weak symbol aliasing \/\/***************************************************************************** #define WEAK_ALIAS(x) __attribute__ ((weak, alias(#x)))  \/\/***************************************************************************** \/\/ Forward declaration of the reset ISR and the default fault handlers. \/\/***************************************************************************** void        ResetISR( void ); static void NmiSRHandler( void ); static void FaultISRHandler( void ); static void IntDefaultHandler( void ); extern int  main( void );  \/\/ Default interrupt handlers void NmiSR(void) WEAK_ALIAS(NmiSRHandler); void FaultISR(void) WEAK_ALIAS(FaultISRHandler); void MPUFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void BusFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void UsageFaultIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SVCallIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void DebugMonIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void PendSVIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SysTickIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void GPIOIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void I2CIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCCPE1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void PKAIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AONRTCIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void UART0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void AUXSWEvent0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SSI0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void SSI1IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCCPE0IntHandler(void) WEAK_ALIAS(IntDefaultHandler); void RFCHardwareIntHandler(void) WEAK_ALIAS(IntDefaultHandler); void<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-416180","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/416180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=416180"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/416180\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=416180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=416180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=416180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}