Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Systemy komputerowe: architektura i programowanie

Informacje ogólne

Kod przedmiotu: 103A-TLxxx-ISP-SYKT
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Systemy komputerowe: architektura i programowanie
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Programowanie )-Telekomunikacja-inż.-EITI
( Przedmioty podstawowe )-Techniki bezprzewodowe i multimedialne-mgr.-EITI
( Przedmioty podstawowe )-Teleinformatyka i cyberbezpieczeństwo-mgr.-EITI
( Przedmioty podstawowe )-Telekomunikacja-mgr.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

SYKT

Numer wersji:

1

Skrócony opis:

Głównym celem przedmiotu jest kompleksowe zapoznanie studentów(ek) z budową systemów komputerowych oraz z aspektami programistycznymi związanymi z warstwami oprogramowania stykającymi się bezpośrednio ze sprzętem.

Pełny opis:

Głównym celem przedmiotu jest kompleksowe zapoznanie studentów(ek) z budową systemów komputerowych oraz z aspektami programistycznymi związanymi z warstwami oprogramowania stykającymi się bezpośrednio ze sprzętem.



Treść wykładu

  • Język C/C++ w systemie procesorowym. Budowa programów, rola funkcji w języku C/C++ w tym funkcji main(). Proste typy danych, deklaracje zmiennych określonego typu, zasięg zmiennych, zaawansowane typy danych: struktury, enumcje, ... Rola preprocesora, prototypy funkcji, podział kodu na moduły.
  • Procesor w systemie komputerowym. Przestrzenie pamięciowe (z punkt widzenia procesora, dla architektur: Harward, Von Neumna). Rozkazy procesora (podział na: RISC, CISC, kodowanie rozkazów, tryby adresowania, porównanie listy rozkazów: X86 i NIOS II).
  • Pamięci. Typy, hierarchie i budowa pamięci używanych w systemach komputerowych (SRAM, DRAM/DDRxx, Flash/NOR/NAND, ...). Mechanizmy zabezpieczenia przez kody korekcyjne zawartości pamięci komputerowych. Kodowanie i składowanie zmiennych typów podstawowych i zaawansowanych w pamięciach systemu komputerowego, rola stosu i sterty. Kodowanie zmiennych języków wysokiego poziomu (NKB, U2, IEEE754). Konsolidacja kodu aplikacji, podstawowe formaty plików wykonywalnych.
  • Cykl życia systemu komputerowego. Uruchamianie kodu i usuwanie błędów z kodu, narzędzia diagnostyczne (debuger, JTAG). Procedury POST/BIOS, uruchamianie systemu komputerowego. Programy ładujące (Bootloader). Proces uruchamiania kodu wynikowego przez procesor.
  • System operacyjny dla systemów komputerowych. Definicja, budowa i działanie systemu Linux jako przykład nowoczesnego systemu operacyjnego. Styk aplikacji użytkowych z systemem operacyjnym, biblioteki jądra i systemowe (furtki systemowe, syscall). Podstawy tworzenia oprogramowanie w języku C/C++ dla systemu Linux.
  • Przerwania, obsługa sytuacji wyjątkowych. Rola przerwań w systemach komputerowych. Typowe sytuacje wyjątkowe w systemach komputerowych. Metody implementacji obsługi przerwań z przykładami w języku C/C++.
  • Urządzenia wejścia / wyjścia w systemach komputerowym. Styk procesora z układami wejścia / wyjścia – warstwa sprzętu (łączenie, mapa pamięci). Tworzenie oprogramowania współpracującego z peryferiami na przykładzie systemu operacyjnego Linux. Analiza dwóch podejść w tworzeniu kodu współpracującego ze sprzętem: podejście uproszczone - sterownik przestrzeni użytkownika i podejście zaawansowane - sterownik przestrzeni jądra.
  • Sprzętowe wspomaganie systemu operacyjnego. Systemy zarządzania pamięciami (MMU), tryby chroniony, wirtualizacja pamięci. Realizacja fizyczna systemów wielowątkowych i wieloprocesorowych.
  • Zaawansowane układy peryferyjne. Układy wspierania działania pamięci: układy odświeżania pamięci, układy realizacji pamięci podręcznej, układy bezpośredniej komunikacji peryferii z pamięciami (DMA). Pamięci masowe, klasyfikacja pamięci masowych, budowa dysków (HDD, SSD), mechanizmy zwiększania pojemności i niezawodności (JBOD, RAID, LVM). Interfejsy komunikacji między elementami systemu komputerowego (PCI/PCIe, USB, karty sieciowe). Karty graficzne, akceleratory graficzne (CUDA). Akceleratory kryptograficzne, generatory liczb losowych, szyfrowanie strumieni danych. Koegzystencja procesorów i układów peryferyjnych w jednym układzie scalonym (SoC).



Zakres laboratorium

Zajęcia laboratoryjne mają być wprowadzeniem do wykonywanego projektu. Podzielono zajęcia te na 3 części tematyczne:

  • Zapoznanie się z projektowaniem systemów wykorzystujących procesor FPGA (np.: NIOS II): budowa projektu procesora w języku opisu sprzętu (np.: VHDL), utworzenie minimalnego programu w C/C++ którego zadaniem ma być weryfikacja poprawności działania systemu przy założeniu braku systemu operacyjnego, uruchomienie całości z demonstracją jego działania.
  • Do powstałego w ramach 1 zajęć laboratoryjnych systemu, dodać układ peryferyjny zadany przez prowadzącego oraz napisać w C/C++ prosty demonstrator działania tego układu peryferyjnego.
  • Osadzić system Linux na wytworzonym w ramach 1 i 2 zajęć laboratoryjnych systemie oraz napisać odpowiedni sterownik przestrzeni użytkownika pozwalający na interakcję z zasobem peryferyjnym powstałym w ramach 2 zajęć laboratoryjnych.



Zakres projektu

Zbudować system procesorowy bazujący na podejściu bez systemu operacyjnego (tzw. bare-metal). Dodać do tego systemu wskazane przez prowadzących specjalistyczne peryferia (np.: układ wsparcia kryptografii, układ przyspieszenia operacji graficznych, transformaty FFT, obrazów i podobne, ...). Dla celów testowych wymagane jest utworzenie aplikacji testującej demonstrującej możliwości tak przygotowanego systemu.

Literatura:

Literatura

  • B. W. Kernighan, D. M. Ritchie, "Język ANSI C. Programowanie", Helion, 2010.
    • J. Ogrodzki, "Wstęp do systemów komputerowych", OWPW 2005.

    Literatura uzupełniająca
    • J. Corbet, A. Rubini, G. Kroah-Hartman, „Linux device drivers”, O'Reilly, 2005.
    • R. Pełka, "Mikrokontrolery, architektura, programowanie, zastosowania", WKŁ, Warszawa 2000.
    • W. Daca, "Mikrokontrolery - od układów 8-bitowych do 32-bitowych", MIKOM, Warszawa 2000.
    • M. Gołaszewski, „Procesory Nios II w układach FPGA”, Elektronika Praktycznie: 10/2010, 11/2010, 12/2010, 1/2011, 3/2011.
    • Pong P. Chu, „Embedded SoPC Design with Nios II Processor and Verilog Examples”, John Wiley & Sons 2012.
    • M. Nowakowski, „PicoBlaze. Mikroprocesor w FPGA”, BTC 2009.

    Oprogramowanie
    • Pakiet dla tworzenia opisu FPGA oraz testowania tworzonych systemów: „Intel Quartus II Web Edition Software”.
    • Pakiet dla tworzenia opisu procesorów NIOS II: „Nios II Embedded Design Suite”.
    • Zestaw kompilator i linker dla tworzenia oprogramowania w językach C/C++ „GCC, the GNU Compiler Collection”.
    • Zestaw do tworzenia podstawowego systemu plików z kolekcjami narzędzi dla systemu Linux "Buildroot".

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

Okres: 2021-02-20 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 60 miejsc więcej informacji
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Mariusz Rawski
Prowadzący grup: Aleksander Pruszkowski, Mariusz Rawski
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)