:::: MENU ::::
Posts tagged with: Записки программиста на C

Загрузка программы без ОС с помощью grub на x86

Давайте загрузим программу без ОС на x86 — это вам может понадобиться, например, при написании ОС. Для загрузки будем использовать grub и Multiboot. Multiboot — открытый стандарт, который описывает как bootloader может загрузить ОС на x86.

Continue Reading




Modbus RTU Server (Slave)

Довольно часто программисту встраиваемых систем приходится работать с протоколом Modbus RTU или Modbus через Ethernet. Это клиент-серверный протокол. На встраиваемом устройстве может работать как клиент (шлет запросы), так и сервер (отвечает на запросы).

Далее приведено описание моей реализации modbus сервера (slave) для микроконтроллеров (в принципе ее можно использовать и на ПК).

Continue Reading


assert_param stm32

При отладке программы очень удобно для вывода сообщений об той или иной ситуации, иметь универсальную функцию, которая позволяла бы выводить сообщение об ошибке, номер строки и файл в котором эта ошибка возникла. Для этого, в библиотеке периферии от ST, используется assert_param. 

Continue Reading


CRC16 для Modbus RTU — табличный метод

В Modbus RTU для проверки целостности сообщения применяется алгоритм контрольной суммы CRC16 (циклический избыточный код) с полиномом 0xA001. Далее приведен табличный метод расчета CRC16 на C.

Continue Reading


volatile и зависания

Ключевое слово volatile – это спецификатор, применяемый при объявлении переменной. Он сообщает компилятору, что значение переменной может изменяться в любой момент – без какого-либо действия со стороны кода, который компилятор обнаруживает поблизости.

Continue Reading


Битовые операции C

Во встраиваемых системах часто для экономии памяти приходится использовать битовые операции, например для реализации флага какого-либо события. Далее рассмотрен удобный способ работы с битами на макросах.

Continue Reading


Получение следующего элемента связанного списка из структуры, на которую указывает связанный список

Иногда бывает ситуация когда мы имеем адрес элемента структуры и есть необходимость получить адрес структуры, в которой находится данный элемент. Такая ситуация имеет место например, когда мы получаем в очереди из связанных списков адрес следующего элемента связанного списка, который в свою очередь является еще и элементом структуры, адрес которой нам необходимо узнать.

Continue Reading