Частина 2 - Привітання світу
Сьогодні ми навчимося створювати власні проекти на Raspberry Pi Pico.
У нашому каталозі pico створимо каталог 0x02_pico_hello_world__ поряд з каталогами pico-sdk і pico-example.
ХМДХ
mkdir 0x02_pico_hello_world cd 0x02_pico_hello_worldХМДХ
Створимо свій vim 0x02_hello_world.c file.
ХМДХ
vim 0x02_hello_world.cХМДХ
Додамо наступне.
ХМДХ
#include <stdio.h>include "pico/stdlib.h"
XMDX8074388f38d3XMDX main() {
stdio_init_all();while(1) { XMDX75f455ff1d42XMDX("Hello world! ");
sleep_ms(1000); }
return 0; } </pre>ХМДХ
Спочатку обробимо логіку для ініціалізації всіх стандартних вхідних і виходів.
ХМДХ
stdio_init_all();ХМДХНарешті, виведемо "Привітання світу!" кожну секунду до стандартного виходу в нескінченний цикл.
ХМДХ
while(1) { XMDXf86a742b2f82XMDX("Hello world! ");sleep_ms(1000); } </pre>ХМДХ
Потім після успішного виконання повернемо 0 для вказівки успішності, оскільки наш функція main є int. Це не технічна вимога, але добра практика.
ХМДХ
return 0;ХМДХРобота з cmake значно полегшує процес будівництва для наших проектів. Спочатку нам потрібно створити CMakeLists.txt file.
ХМДХ
cmake_minimum_required(VERSION 3.13)include(pico_sdk_import.cmake)
project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init()
add_executable(0x02_hello_world 0x02_hello_world.c )
pico_enable_stdio_usb(0x02_hello_world 1)
pico_add_extra_outputs(0x02_hello_world)
target_link_libraries(0x02_hello_world pico_stdlib) </pre>ХМДХ
Далі нам потрібно скопіювати pico_sdk_import.cmake__ file з зовнішнього каталогу в установці pico-sdk до каталогу проекту 0x02_hello_world__.
ХМДХ
cp../pico-sdk/external/pico_sdk_import.cmake.ХМДХНарешті, ми готові до будівництва.
ХМДХ
mkdir build cd build export PICO_SDK_PATH=../../pico-sdk cmake.. makeХМДХЦе призведе до створення декількох файлів, і ті, які ми візьмемо до уваги, це .elf file при відладці і хакінгу, який є повним виводом програми, можливо, включаючи інформацію про відладку, і .uf2 file, який є програмним кодом і даними в форматі UF2, який можна перетягнути на до плати RP2040, коли вона встановлена як зовнішній диск.
Я витратив час на підключення кнопки перезавантаження на Піко, щоб я не мав роз'єднувати USB і натискати BOOTSEL кожного разу, коли мені потрібно перезавантажити, тому ось схема такого.
ХМДХ
</XMDX4154dc41f172XMDX>ХМДХ
Щоб перезавантажити, натисніть зовнішню кнопку і під час її натискання натисніть кнопку BOOTSEL на платі, потім звільніть кнопку BOOTSEL і, нарешті, звільніть зовнішню кнопку.
Затем просто скопіюйте .uf2 file в зовнішній диск.
ХМДХ
cp 0x02_hello_world.uf2 /Volumes/RPI-RP2ХМДХЗатем нам потрібно знайти зовнішній диск, щоб ви могли виконати наступні дії.
ХМДХ
ls /dev/tty.ХМДХНатисніть таб, щоб знайти зовнішній диск, а потім у моїх випадках я використовую screen для підключення.
ХМДХ
screen /dev/tty.usbmodem0000000000001ХМДХВітаємо! Ви повинні побачити "Привітання світу!" до стандартного виходу кожну секунду.
У наступному урокі ми навчимося відлагоджувати .elf бінарний файл в Radare2.
У наступному уроку ми навчимося відлагоджувати .elf бінарний файл в Radare2.