Eclipse AVR – instalacja biblioteki u8glib

Na prośbę jednego z czytelników zamieszczam instrukcję jak “odpalić” bibliotekę graficzną U8glib pod środowisko programistyczne Eclipse z pluginem AVR. Instalacja jest bardzo podobna jak w przypadku Atmel Studio.

 

 

 

1. Ściągamy i rozpakowujemy paczkę z naszą biblioteką którą można pobrać TU 

 

2. Uruchamiamy Eclipse i tworzymy nowy projekt

 

New_Project

  • Jako typ projektu wybieramy AVR Cross Target Static Library
  • Nadajemy nazwę projektu, najlepiej “u8glib”

Static_Library

  • Klikamy 2x Next i wybieramy nasz mikrokontroler oraz taktowanie zegara.
  • W moim przypadku jest to ATmega16, na której testuję tą bibliotekę. Do testów ustawiłem taktowanie 1MHz.

MCU_Type

3. Dodajemy pliki biblioteki

 

  • Klikamy PPM na naszym projekcie w Project Explorer.
  • Z listy wybieramy Import…

Import

  • Otworzy nam się okienko z którego wybieramy typ plików do zaimportowania.
  • Wybieramy File System z zakładki General.

File_System

  • W kolejnym okienku klikamy Browse…
  • Wybieramy folder z plikami biblioteki, u mnie jest to C:\u8glib\src
  • Odhaczamy wszystkie pliki i klikamy Finish

Import_SRC

  • Project Explorer powinien wyglądać tak:

Project_Explorer

4. Edytujemy ustawienia projektu

 

  • Klikamy PPM na naszym projekcie w Project Explorer
  • Z listy na samym dole wybieramy Properties

Properties

  • W okienku które nam wyskoczy po lewej stronie w zakładkach wybieramy C/C++ Build – Settings.
  • Następnie u góry w rozwijanym menu Configuration zmieniamy na All configurations.
  • Po czym w zakładce Tool Settings -> AVR Compiler -> Symbols definiujemy nowy symbol F_CPU=1000000UL który odpowiada za ustawienie taktowania zegara. Jak wspomniałem wcześniej, u mnie jest to 1MHz. Należy tą wartość zmienić zależnie od tego z jakim zegarem ma pracować mikrokontroler w naszym projekcie

Symbols

  • Następnie przechodzimy do zakładki Optimization.
  • Tam zmieniamy Optimization Level na Size Optimizations (-Os).
  • Musimy jeszcze dodać dodatkowe flagi. W Other Optimization Flags dopisujemy -ffunction-sections -fdata-sections

Optimization

5. Budujemy bibliotekę

 

  • Musimy teraz zbudować naszą bibliotekę żeby móc z niej korzystać.
  • Klikamy na ikonkę młotka i czekamy. Kompilacja potrwa około 30 sekund.

Build

6. Tworzymy przykładowy projekt

 

  • Robimy to tak samo jak poprzednio, tylko jako typ projektu wybieramy AVR Cross Target Application

Test

 7. Edytujemy ustawienia przykładowego projektu 

 

  • Tak jak poprzednio definiujemy symbol F_CPU=1000000UL

Test_Properties

  • Zmieniamy opcje optymalizacji, przechodzimy do zakładki Opimization.
  • Zmieniamy Optimization Level na Size Optimizations (-Os).
  • Dodajemy flagi w Other Optimization Flags dopisujemy -ffunction-sections -fdata-sections

Test_Optimization

  • Przechodzimy do zakładki AVR C Linker – General
  • W Other Arguments dopisujemy -Wl,--gc-sections

Test_Linker

  • Przechodzimy zakładki AVR Compiler – Directories
  • I dodajemy ścieżkę ..\..\u8glib klikając na zielony plusik

Test_Directories

  • Następnie przechodzimy do AVR C Linker – Libraries
  • I dodajemy w Libraries nazwę biblioteki czyli u8glib
  • W Libraries Path dodajemy ścieżkę do biblioteki ..\..\u8glib\Debug

Test_Patch

  • Wszystkie dopisane ścieżki są relatywne  i wskazują na folder gdzie znajduje się poprzednio utworzony projekt z biblioteką.
8. Tworzymy przykładowy program

 

  • Nie pozostaje nam już nic innego jak dodać nowy plik z rozszerzeniem .c do naszego przykładowego projektu
  • Wkleić przykładowy kod wyświetlający napis “Hello World”
/*
 *  Na podstawie https://code.google.com/p/u8glib/wiki/thelloworld
 *  Testowane na ATmega16
 *  Autor: Gembcior
 *  https://gembcior.pl
 */

#include "u8g.h"
#include <avr/interrupt.h>
#include <avr/io.h>

u8g_t u8g;

void draw(void)
{
  u8g_SetFont(&u8g, u8g_font_6x10);
  u8g_DrawStr(&u8g, 10, 20, "Hello World!");
}

int main(void)
{
  /*
    CS: PORTB, Bit 4 --> PN(1,4)
    A0: PORTB, Bit 3 --> PN(1,3)
    SCK: PORTB, Bit 7--> PN(1,7)
    MOSI: PORTB, Bit 5 --> PN(1,5)
  */
	u8g_InitSPI(&u8g, &u8g_dev_st7565_dogm128_sw_spi, PN(1, 7), PN(1, 5), PN(1, 4), PN(1, 3), U8G_PIN_NONE);
	u8g_SetContrast(&u8g,55); // Ustawienie kontrastu

	for(;;)
	{
		u8g_FirstPage(&u8g);
		do
		{
			draw();
		} while ( u8g_NextPage(&u8g) );
		u8g_Delay(100);
	}
}
  • Skompilować i wgrać wsad do mikrokontrolera.

Test_Build

 

W tym poradniku korzystałem z Eclipse Kepler w wersji 32 bitowej z wgranym pluginem avr w wersji 2.4 i Atmel Toolchain 3.4.2.1573

Eclipse AVR – instalacja biblioteki u8glib
Ocena: 5 (3 głosów)

6 komentarzy

  • Toperko
    24 października 2014 o 15:24

    Skompilowało mi dopiero po zmianie na “-Wl,–gc-sections”. Lece do sklepu po 74hc125!

  • stan
    29 września 2016 o 15:21

    Zawsze używałem AVR GCC, ale niestety miałem problemy z uruchomieniem tej biblioteki. Znalazłem ten poradnik i pomimo postępowania krok po kroku wywala mi jakiś błąd. Najwyraźniej nie znajduje świeżo skompilowanej biblioteki. Wersja Eclipse i toolchain różni się oczywiście nieco, ale to chyba nie jest powodem błędu. Chyba wrócę do przestarzałego AVR GCC, bo tworzenie projektu jest szybsze i prostsze. Niestety trzeba się użerać z Makefile 🙁

    c:/program files/atmel/avr tools/avr toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: cannot find -lu8glib

    • 29 września 2016 o 15:28

      Czy kompilacja biblioteki przebiegła u Ciebie pomyślnie? Mam na myśli krok 5 w moim poradniku.

  • stan
    29 września 2016 o 16:26

    Tak, sama biblioteka skompilowała się bez żadnych błędów. Właśnie przeglądam internet w poszukiwaniu informacji jak ugryźć to pod WinAVR. Wiem, że to stary i nie kontynuowany projekt, ale mam pod nim masę gotowych projektów a pierwsze próby przeniesienia się z nimi pod Eclipse nie wypadają zachęcająco.

  • stan
    29 września 2016 o 18:14

    Pod WinAVR poszlo bez problemow. Przyznaję, że Eclipsem bawiłem się dość krótko, ale nie rozumiem tych zachwytów nad nim. Dzięki.

  • macron
    3 maja 2017 o 15:51

    This is interesting page, bookmarked for future referrence

Dodaj komentarz

*

*

Ile jest * Time limit is exhausted. Please reload CAPTCHA.

banner

Korzystając z tej strony wyrażasz zgodę na korzystanie z plików cookie. Zobacz szczegóły

Wykorzystujemy pliki cookie do spersonalizowania treści i reklam, aby oferować funkcje społecznościowe i analizować ruch w naszej witrynie. Informacje o tym, jak korzystasz z naszej witryny, udostępniamy partnerom społecznościowym, reklamowym i analitycznym. Więcej informacji znajdziesz na Jak Google wykorzystuje dane gromadzone podczas korzystania z witryn i aplikacji naszych partnerów.

Zamknij