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 страница покажет вам все ее возможности форматирования.