Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Systemy komputerowe: architektura i programowanie

Informacje ogólne

Kod przedmiotu: 103A-CBxxx-ISP-SYKOM
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Systemy komputerowe: architektura i programowanie
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka techniczna )-Cyberbezpieczeństwo-inż.-EITI
( Programowanie )-Telekomunikacja-inż.-EITI
( Przedmioty podstawowe )-Techniki bezprzewodowe i multimedialne-mgr.-EITI
( Przedmioty podstawowe )-Teleinformatyka i cyberbezpieczeństwo-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:

SYKOM

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

  1. Język C/C++ w systemie procesorowym

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

  1. 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.
  2. 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.
  3. 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

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


Literatura uzupełniająca

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


Oprogramowanie

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

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

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

103600 - Instytut Telekomunikacji

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

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

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 31 miejsc więcej informacji
Projekt, 15 godzin, 31 miejsc więcej informacji
Wykład, 30 godzin, 31 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

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

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

103600 - Instytut Telekomunikacji

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

Okres: 2021-10-01 - 2022-02-22
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 24 miejsc więcej informacji
Projekt, 15 godzin, 24 miejsc więcej informacji
Wykład, 30 godzin, 24 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

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, 45 miejsc więcej informacji
Projekt, 15 godzin, 45 miejsc więcej informacji
Wykład, 30 godzin, 45 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)