1. Глава 1: Введение

В этой главе мы сделаем первые шаги в программировании на языке Си на вашей Raspberry Pi Zero 2 W. Мы подготовим операционную систему, установим все необходимые инструменты и, конечно же, напишем и запустим нашу самую первую программу. Этот процесс поможет вам понять, как выглядит цикл разработки программы на Си, от написания кода до его выполнения.

—

1.1. Подготовка Raspberry Pi

Прежде чем начать писать код, нам нужно подготовить нашу миниатюрную, но мощную Raspberry Pi Zero 2 W. Эти шаги гарантируют, что у вас будет чистая, эффективная среда для разработки.

  1. Установите Raspberry Pi OS Lite (без графики) на SD-карту через [Raspberry Pi Imager](https://www.raspberrypi.com/software/).

    • Почему «Lite» и без графики? Версия «Lite» потребляет меньше ресурсов (оперативной памяти и процессорного времени) и занимает меньше места на SD-карте, что идеально для Raspberry Pi Zero 2 W с ее ограниченными возможностями. Разработка на Си часто не требует графического интерфейса, а подключение по SSH позволяет работать удаленно с любого компьютера.

    • Raspberry Pi Imager: Это официальный инструмент, который упрощает процесс записи образа операционной системы на SD-карту. Вы можете найти его на официальном сайте Raspberry Pi.

  2. Подключитесь по SSH или откройте терминал, если у вас есть экран.

    • SSH (Secure Shell): Это безопасный сетевой протокол, который позволяет вам управлять Raspberry Pi удаленно с вашего основного компьютера через командную строку. Это очень удобно, так как вам не нужен дополнительный монитор, клавиатура или мышь для Pi. Для подключения вам понадобится IP-адрес вашей Raspberry Pi и логин/пароль (по умолчанию pi/raspberry).

    • Терминал: Если вы подключили монитор и клавиатуру к вашей Pi, вы можете работать прямо в терминале операционной системы.

  3. Обновите систему:

    sudo apt update && sudo apt upgrade
    
    • `sudo`: Это команда, которая позволяет выполнять другие команды с правами суперпользователя (администратора). Обновление системы требует таких прав.

    • `apt update`: Эта команда обновляет список доступных пакетов в репозиториях (хранилищах программного обеспечения). Она не скачивает сами пакеты, а лишь их метаданные.

    • `apt upgrade`: Эта команда скачивает и устанавливает новые версии всех установленных пакетов, для которых доступны обновления.

    • `&&`: Этот оператор означает «и». Он гарантирует, что apt upgrade будет выполнен только в том случае, если apt update завершился успешно. Это хорошая практика для последовательных команд.

    • Зачем обновлять? Регулярное обновление системы гарантирует, что у вас установлены самые свежие версии программ и исправлены известные ошибки безопасности.

—

1.2. Установка компилятора gcc

Для того чтобы ваша Raspberry Pi «поняла» код, который вы напишете на языке Си, ей нужен специальный инструмент — компилятор. Компилятор — это программа, которая переводит ваш высокоуровневый код (который вы пишете) в низкоуровневый машинный код, понятный процессору.

Чтобы компилировать программы на C, установим GNU Compiler Collection (GCC). Это стандартный и самый распространённый набор компиляторов для различных языков, включая Си.

sudo apt install build-essential
  • `build-essential`: Это метапакет, который включает в себя не только gcc (компилятор Си), но и другие необходимые инструменты для компиляции программ, такие как g++ (компилятор C++), make и dpkg-dev. Установка этого пакета гарантирует, что у вас есть всё необходимое для сборки большинства программ из исходников.

Проверим установку:

gcc --version
  • Эта команда выведет версию установленного компилятора gcc. Если вы видите номер версии (например, gcc (Raspbian 10.2.1-6+rpi1) 10.2.1), значит, установка прошла успешно.

—

1.3. Первая программа: hello.c

Теперь, когда ваша Raspberry Pi готова, а компилятор установлен, давайте напишем нашу первую программу! Традиционно, первой программой является «Hello, World!», которая просто выводит сообщение на экран.

Создайте файл hello.c:

  • Вы можете использовать любой текстовый редактор в терминале, например nano (наберите nano hello.c и нажмите Enter). После ввода кода сохраните файл, нажав Ctrl+X, затем Y и Enter.

#include <stdio.h> // Это "директива препроцессора". Она включает стандартную библиотеку ввода/вывода (Standard Input/Output). Без нее мы не сможем использовать функцию printf.

int main() { // Это главная функция программы. Выполнение любой программы на Си начинается именно с функции main().
    printf("Привет, Raspberry Pi!\\n"); // Функция printf() используется для вывода текста на экран (в консоль).
                                        // Символ '\n' — это "последовательность экранирования", которая означает переход на новую строку.
                                        // Без нее следующий вывод появился бы в той же строке.
    return 0; // Возвращаем 0, чтобы показать операционной системе, что программа завершилась успешно, без ошибок.
}
  • Комментарии в коде: Обратите внимание на строки, начинающиеся с //. Это комментарии. Комментарии игнорируются компилятором и служат только для того, чтобы помочь людям понять код. Они очень важны для документирования вашей работы!

  • Синтаксис Си: Си — это язык с чувствительностью к регистру (например, main и Main — это разные вещи), и он использует точку с запятой (;) в конце большинства инструкций. Фигурные скобки ({ }) используются для обозначения блоков кода (например, тело функции main).

Скомпилируйте и запустите:

gcc hello.c -o hello
./hello
  • `gcc hello.c -o hello`:
    • gcc: Запускаем компилятор.

    • hello.c: Указываем имя нашего исходного файла.

    • -o hello: Это флаг (опция) компилятора. Он говорит gcc назвать сгенерированный исполняемый файл hello. Если бы мы не использовали -o, исполняемый файл по умолчанию назывался бы a.out.

  • `./hello`:
    • ./: Указывает операционной системе, что исполняемый файл hello находится в текущем каталоге. Это необходимо для запуска программ, находящихся не в стандартных системных путях.

    • hello: Запускает скомпилированную программу.

Примечание

Флаг -o hello говорит компилятору назвать исполняемый файл hello.

Вывод:

Привет, Raspberry Pi!

Поздравляем! Вы только что успешно скомпилировали и запустили свою первую программу на C на вашей Raspberry Pi Zero 2 W. Это фундаментальный шаг в мире встроенного программирования и работы с аппаратным обеспечением!

—

1.4. Что дальше?

Теперь, когда вы освоили основы настройки и запуска простейшей программы, пришло время углубиться в сам язык Си.

Следующий шаг — разобраться с переменными и арифметикой в языке C. Вы узнаете, как хранить данные в памяти, как выполнять математические операции и как ваш код может стать интерактивным.

Дополнительные ресурсы: - man gcc — справочник по компилятору gcc. Введите эту команду в терминале, чтобы получить подробную информацию. - man printf — документация по функции printf. Это очень мощная функция, и man страница покажет вам все ее возможности форматирования.