Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil



Podobne dokumenty
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie w C. dr inż. Stanisław Wszelak

K. Konopko; Toolchain. Toolchain. dr inż. Krzysztof Konopko

Tworzenie oprogramowania

Operacje wejścia/wyjścia odsłona pierwsza

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie Systemów Wbudowanych

1.Wstęp. 2.Generowanie systemu w EDK

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Programowanie mikrokontrolerów AVR

Funkcje zawarte w bibliotece < io.h >

Programowanie Niskopoziomowe

Funkcje zawarte w bibliotece < io.h >

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Komputery przemysłowe i systemy wbudowane

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Wykład 3: Implementacja programów wbudowanych

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Fragmenty są wspierane od Androida 1.6

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Programowania. Wykład 1

Wstęp. do języka C na procesor (kompilator RC51)

Programowanie niskopoziomowe

Programowanie obiektowe zastosowanie języka Java SE

Podstawy programowania skrót z wykładów:

Podstawy programowania w języku C++

Podstawy programowania. Wprowadzenie

2 Przygotował: mgr inż. Maciej Lasota

2 Tworzenie oprogramowania dla systemu wbudowanego

1. Tworzenie nowego projektu.

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Szablony funkcji i szablony klas

Język C i C++. Podstawy. Zagadnienia do opanowania. Przykład 1. (modyfikuj kod, aby zrealizować punkty 5., 7.)

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Podstawy programowania

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Wstęp do programowania

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

KURS C/C++ WYKŁAD 1. Pierwszy program

Podstawy programowania - 1

Struktury systemów operacyjnych

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Ćwiczenie nr 6. Programowanie mieszane

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Projektowanie aplikacji internetowych laboratorium

Podstawy programowania C. dr. Krystyna Łapin

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Strumienie i pliki. Programowanie Proceduralne 1

Mobilne aplikacje multimedialne

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Podstawy programowania (1)

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Kompilator języka C na procesor 8051 RC51 implementacja

Programowanie Systemów Wbudowanych

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Wstęp do Programowania, laboratorium 02

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Opis efektów kształcenia dla modułu zajęć

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Systemy wbudowane. Rysunek 1: Ilustracja procesu kompilacji oprogramowania

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Co nie powinno być umieszczane w plikach nagłówkowych:

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie w Internecie. Java

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Programowanie w Javie

Szkolenia specjalistyczne

Pliki. Informacje ogólne. Obsługa plików w języku C

Wstęp do programowania

Kompilacja i scalanie programów w linii poleceń gcc i make

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Transkrypt:

Środowisko Krzysztof Świentek Systemy wbudowane Spis treści 1 2

Źródła 1 http://infocenter.arm.com 2 http://www.keil.com/arm/mdk.asp 3 http://pl.wikipedia.org Spis treści 1 2

Co to jest toolchain? Zbiór narzędzi programistycznych potrzebnych do wygenerowania działajacego programu Typowy toolchain składa się z: kompilatora, asemblera, linkera, biblioteki standardowej W skład toolchain a wchodzi też często debugger Toolchain buduje się dla konkretnej architektury tzn. robimy kompilator, linker, bibliotekę standardowa i inne narzędzia Biblioteki C implementujace POSIX API: glibc uniwersalna, ale duża Embedded glibc (eglibc) zoptymalizowana dla systemów wbudowanych, odchudzone glibc, zarzucone uclib powstała jako wsparcie dla µclinux, Linux a bez MMU musl stosunkowo nowy, szybka, prosta Biblioteka standardowa musi zostać wybrana na etapie tworzenia kompilatora! Budowanie toolchain a Tworzymy jednocześnie wszystkie narzędzia potrzebne do zbudowania działajacej aplikacji. Czyli co? Rozróżniamy trzy, w ogólności różne, maszyny build machine tam gdzie toolchain powstaje host machine tam gdzie toolchain będzie odpalony target machine dla której toolchain generuje kod Sposoby budowy toolchain ów natywny toolchain zwykłe narzędzia np. w dystrybucji Linux a cross-kompilowany toolchain najczęściej wykorzystywany, zbudowany na platformie x86 dla x86, a tworzacy kod np. dla ARM a cross-natywny toolchain zbudowany na np. x86, dla ARM a, aby go tam odpalać canadian build budujemy na maszynie A, aby odpalać na B i generować kod dla C; zazwyczaj niepotrzebny Typowy efekt budowy toolchain to cross-kompilator

Binarny interfejs aplikacji ABI binarny interfejs aplikacji (ang. Application Binary Interface) ABI to interfejs pomiędzy np. bibliotekami i systemem operacyjnym na poziomie kodu maszynowego ABI jest podobne do API, ale nie na poziomie kodu źródłowego, ale skompilowanego ABI obejmuje zbiór rozkazów rozmiar,layout i aligment typów danych sposób wywoływania funkcji tzw. calling convention: sposób przekazywania parametrów do funkcji i zwracania rezultatu EABI (Embedded ABI) zazwyczaj znacznie prostsze (brak dll i) formaty plików wykorzystanie rejestrów procesora organizacja stosu itp.... Nas obejmuje ARM EABI dba o to kompilator Spis treści 1 2

MDK Microcontroller Development Kit (MDK) Zamiast MDK może być też DS-5, jedno i drugie jest wspierane przez ARM Holdings Środowisko: µvision IDE Nasz toolchain Kompilator armcc wersja 5.05 Asembler armasm wersja 5.05 Linker armlink wersja 5.05 Budowanie statycznych bibliotek armar wersja 5.05 Konwersja wyniku fromelf wersja 5.05 Biblioteka: ARM C microlib prawie 3 razy mniejsza niż standardowa Biblioteka: Rogue Wave C++ Biblioteka: C++ Standard Template Library (STL) µvision debugger (i symulator) Alternatywnie może być toolchain oparty o narzędzia GNU Niestandardowe funkcje kompilatora I modyfikator weak można stosować do funkcji i zmiennych funkcja o takiej samej nazwie bez modyfikatora zostanie zlinkowana w miejsce funkcji słabej sporo funkcji jest tak zdefiniowanych np. wszystkie przerwania #pragma import(symbol_name) importuje referencję do symbol_name można właczyć/wł aczyć pewne funkcje biblioteki standardowej np.: wyłaczyć implementację sterty use_no_heap zmienić implementację use_realtime_heap tzw. szybkiego dzielenia use_realtime_division ANCI C stdio use_full_stdio wolniejsze memcpy use_smaller_memcpy... itp.

Niestandardowe funkcje kompilatora II wsparcie dla pól bitowych typedef struct { int i : 1; int j : 2; } BB attribute ((bitband)); BB value; // Unplaced object void update_value(void) { value.i = 1; value.j = 0; } dodatkowy typ danych Semihosting Co zrobić z printf jeżeli system nie ma odpowiedniego wyjścia? Komunikacja z debuggerem przez link debugujacy Debugger (sprzętowo) musi obsługiwać tracing Implementowane poprzez SVC (formalnie SWI)

Wyłaczanie czyli retargeting Wyłaczenie semihosting u: #pragma import( use_no_semihosting_swi) Zawsze implementujemy strukturę FILE Dla printf trzeba zaimplementować fputc, stdout oraz (opcja) ferror Dla scanf trzeba zaimplementować fgetc, stdin oraz backspace Gdzie możemy wysłać (skad wczytać) strumień znaków? Te same zasady dotycza putchar i puts oraz getchar i gets Może zajść konieczność zdefiniowania także _sys_exit ta funkcja nie może wrócić, musi zawierać pętlę nieskończona! Mechanizm Sub/Super Jak nadpisać funkcję której nie można zmodyfikować? Mamy dwie deklaracje nadrzędna i podrzędna z odpowiednim prefiksem $Sub$$ lub $Super$$ int $Super$$fputc(int c, FILE *fp); int $Sub$$fputc(int c, FILE *fp) { if (fp == (FILE *)MAGIC_NUM) { write_to_uart(c); return c; } else { return $Super$$fputc(c, fp); } } Można wykorzystać do podmiany fputc bez wyłaczania semihosting u Obsługiwane na poziomie linkera armlink, działa tylko przy linkowaniu statycznym Można tak też opakować np. funkcję main