понедельник, 30 ноября 2009 г.

Пишем драйвер для лампочки=) Часть 2.

В прошлый раз я писал как создавал драйвер для лампочки. Эта часть будет посвящена тому как я использовал свой драйвер в отдельном проекте.

Написание основного проекта
Свой проект я разместил в папке ~/hard_project, основной и единственный файл которого имеет следующее содержание:
// файл ~/hard_project/libdrv/main.c
#define F_CPU 16000000UL /* тактовая частота МК */
#include "leddrv/leddrv.h"

int main(void)
{
  led_init(); // инициализация лампочки
  for (;;) // бесконечный цикл
    led_blink_ms(500); // мигнуть с частотой 0,5сек
}
Этот код настолько прост и понятен что в дополнительных комментариях и не нуждается.

Упрощённую версию Makefile для сборки проекта можно скачать тут. Скомандовав в консоли, я и получил целевой hex файл:
$ make
avr-gcc -g -Wall -O2 -mmcu=atmega168 -o .main.o -c main.c
avr-gcc -g -Wall -O2 -mmcu=atmega168  -o .main.elf .main.o -static -Lleddrv/ -lleddrv
avr-objcopy -j .text -j .data -O ihex .main.elf main.hex

А затем и прошил свой МК:
$ make program
avrdude -v -c dapa -p atmega168 -P /dev/parport0 -b 115200 -U flash:w:main.hex

И вот оно, о чудо - работает!



Итог
Всё круто! Цель достигнута. В моих планах написать аналогичные библиотеки для ЖК-модуля и датчика температуры. Надеюсь это произойдёт в недалёкой перспективе:)

---
Скачать hard_project.tar.gz

Комментариев нет: