Programowanie mikroprocesorów jednoukładowych

Podobne dokumenty
Programowanie mikroprocesorów jednoukładowych

Programowanie mikroprocesorów jednoukładowych

Programowanie mikroprocesorów jednoukładowych

Programowanie mikroprocesorów jednoukładowych

Wykład 4. Środowisko programistyczne

Jak przenieść kod z ARM7 do Cortex-M3?

>>> Techniki rozbudowy systemów wbudowanych >>> Systemy wbudowane. Name: Mariusz Naumowicz Date: 29 maja 2019 [~]$ _ [1/32]

PROCESORY ARM TRUDNO ZNALEŹĆ PROCESORY O TAK LICZNYCH, ORYGINALNYCH, NOWYCH, POMYSŁOWYCH ROZWIĄZANIACH!

Prezentacja systemu RTLinux

Szkolenia specjalistyczne

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Rok akademicki: 2015/2016 Kod: IIN s Punkty ECTS: 4. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Programowanie w asemblerze ARM: instrukcje

Rejestr HKEY_LOCAL_MACHINE

projektowanie systemu

Wstęp Podstawowe informacje o mikroprocesorach AT91SAM9...11

Politechnika Świętokrzyska

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

4. Procesy pojęcia podstawowe

Przerwania w architekturze mikrokontrolera X51

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Rok akademicki: 2016/2017 Kod: JIS s Punkty ECTS: 6. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Załącznik I Instrukcja działania FBs-PACK

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Procesory osadzone ETD 7211 W

Instrukcja do ćwiczeń

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

MIKROPROCESORY I MIKROKONTROLERY INSTRUKCJE / KOMENDY / ROZKAZY: PRZEGLĄD I KILKA PRZYKŁADÓW DLA PRZYPOMNIENIA, GŁÓWNE REJESTRY ROBOCZE CPU:

Komputery klasy PC. Dariusz Chaberski

Mikroinformatyka. Wielozadaniowość

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

WPROWADZENIE Mikrosterownik mikrokontrolery

(Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)

Zegar tygodniowy sterowanie przewodowe

MIKROKONTROLERY I MIKROPROCESORY

ZL17PRG. Programator ICP dla mikrokontrolerów ST7F Flash

Aparatura Elektroniczna (EAE) Stopień studiów i forma: I stopień, stacjonarna Rodzaj przedmiotu: obowiązkowy - 2

Jerzy Nawrocki, Wprowadzenie do informatyki

Architektura komputerów. Asembler procesorów rodziny x86

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

Metody obsługi zdarzeń

Przerwania, polling, timery - wykład 9

Programator procesorów rodziny AVR AVR-T910

ZL24PRG. Interfejs JTAG dla mikrokontrolerów ARM

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Działanie systemu operacyjnego

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Architektura Systemów Komputerowych

Programowanie w asemblerze ARM wprowadzenie

System operacyjny MS-DOS

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

USB 2.0 DVD MAKER INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 6

Konfiguracja sterowników Horner APG do pracy w trybie Modbus RTU Master

INSTRUKCJA OBSŁUGI PROGRAMATORA WILLEM

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Wykład 3: Implementacja programów wbudowanych

Instytut Teleinformatyki

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Instytut Teleinformatyki

Programowalne układy logiczne

Systemy operacyjne. Paweł Pełczyński

Adam Kotynia, Łukasz Kowalczyk

Działanie systemu operacyjnego

Instytut Teleinformatyki

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

Instytut Teleinformatyki

4. Procesy pojęcia podstawowe

DVD MAKER USB2.0 Instrukcja instalacji

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

4. Procesy pojęcia podstawowe

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

S Y L A B U S P R Z E D M I O T U

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Podstawowe zagadnienia

Konfiguracja i podłączenie sterownika Horner APG do oprogramowania Cscape po RS232

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

INSTRUKCJA INSTALACJI

Linux KVM - wparcie dla wirtualizacji w kontekście serwerów ARM

Algorytm mnożenia sekwencyjnego (wariant 1)

Błąd pamięci karty graficznej lub Uszkodzona lub źle podpięta karta graficzna

Działanie systemu operacyjnego

TRUST 850F VIBRAFORCE FEEDBACK SIGHTFIGHTER

SIWAREX WP521/WP522. Moduł SIWAREX występuje w dwóch wersjach: WP521 jednokanałowej, WP522 dwukanałowej. FAQ: /PL Data: 06/09/2016

Systemy operacyjne III

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Procesory osadzone ETD 7211 W

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Struktury systemów operacyjnych

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

>>> Techniki rozbudowy systemów wbudowanych >>> Biblioteki wspomagające rozbudowę systemów wbudowanych. Name: Mariusz Naumowicz Date: 29 maja 2019

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Transkrypt:

Programowanie mikroprocesorów jednoukładowych Systemy operacyjne dla systemów wbudowanych Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 1 / 30

Plan I SLOS Inicjalizacja Model pamięci Obsługa przerwań i wyjątków Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 2 / 30

Simple Little Operating System SLOS to mały system operacyjny napisan na rdzeń ARM7TDMI oraz płytę ewaluacyjną Evaluator-7T. Jest prosty w modyfikacji i jest uruchamiany przez Sandstone firmware. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 3 / 30

Inicjalizacja systemu I Listing 1: Inicjalizacja 1 AREA ENTRYSLOS, CODE, READONLY 2 ENTRY 3 LDR pc, v e c t o r R e s e t 4 LDR pc, v e c t o r U n d e f i n e d 5 LDR pc, vectorswi 6 LDR pc, v e c t o r P r e f e t c h A b o r t 7 LDR pc, v e c t o r D a t a A b o r t 8 LDR pc, v e c t o r R e s e r v e d 9 LDR pc, vectorirq 10 LDR pc, v e c t o r F I Q 11 v e c t o r R e s e t DCD c o r e I n i t i a l i z e 12 v e c t o r U n d e f i n e d DCD c o r e U n d e f i n e d H a n d l e r 13 vectorswi DCD coreswihandler Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 4 / 30

Inicjalizacja systemu II 14 v e c t o r P r e f e t c h A b o r t DCD c o r e P r e f e t c h A b o r t H a n d l e r 15 v e c t o r D a t a A b o r t DCD coredataaborthandler 16 v e c t o r R e s e r v e d DCD c o r e R e s e r v e d H a n d l e r 17 vectorirq DCD coreirqhandler 18 v e c t o r F I Q DCD corefiqhandler Listing 2: Ustawienia FIQ 1 b r i n g u p I n i t F I Q R e g i s t e r s 2 MOV r2, r14 ; s a v e r14 3 BL switchtofiqmode ; change FIQ mode 4 MOV r8,#0 ; r 8 _ f i q=0 5 MOV r9,#0 ; r 9 _ f i q=0 6 MOV r10,#0 ; r 1 0 _ f i q=0 7 BL switchtosvcmode ; change SVC mode 8 MOV pc, r2 ; r e t u r n Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 5 / 30

9 c o r e I n i t i a l i z e 10 BL b r i n g u p I n i t F I Q R e g i s t e r s Inicjalizacja systemu III Listing 3: Ustawienia stosu 1 MOV sp,#0 x80000 ; SVC s t a c k 2 MSR cpsr_c,# NoInt SYS32md 3 MOV sp,#0 x40000 ; u s e r / system s t a c k 4 MSR cpsr_c,# NoInt IRQ32md 5 MOV sp,#0 x9000 ; IRQ s t a c k 6 MSR cpsr_c,# NoInt SVC32md Wyniki działania powyższych listingów: inicjalizacja niskopoziomowego debugowania stos dla SVC, IRQ oraz systemu jest ustawiony Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 6 / 30

Inicjalizacja systemu IV Listing 4: Inicjalizacja PCB 1 ; v o i d pcbsetup ( v o i d entryaddr, v o i d PCB, UINT o f f s e t ) ; 2 pcbsetup 3 STR r0, [ r1,# 4] ; PCB[ 4]= C_TaskEntry 4 STR r0, [ r1,# 64] ; PCB[ 64]= C_TaskEntry 5 SUB r0, sp, r2 6 STR r0, [ r1,# 8] ; PCB[ 8]= sp <o f f s e t > 7 MOV r0,#0 x50 ; cpsr_c 8 STR r0, [ r1,# 68] ; PCB[ 68]= ift_user 9 MOV pc, l r Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 7 / 30

Inicjalizacja systemu V Listing 5: Ustawienie identyfikatora 1 LDR r0,= PCB_CurrentTask 2 MOV r1,#0 3 STR r1, [ r0 ] 4 LDR l r,=c_entry 5 MOV pc, l r ; e n t e r the CEntry world Inicjalizacja PCB dla wszystkich trzech zadań Ustawienie aktualnego PCB jako zadania 1 (identyfikator 0) Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 8 / 30

1 v o i d c i n i t _ i n i t ( v o i d ) 2 { 3 e v e n t I O D e v i c e I n i t ( ) ; 4 e v e n t S e r v i c e s I n i t ( ) ; 5 e v e n t T i c k I n i t ( 2 ) ; 6 } Inicjalizacja systemu VI 1 i n t C_Entry ( v o i d ) 2 { 3 c i n i t _ i n i t ( ) ; 4 e v e n t T i c k S t a r t ( ) ; 5 asm 6 { 7 MSR cp sr_ c,#0 x50 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 9 / 30

Inicjalizacja systemu VII 8 } 9 C_EntryTask1 ( ) ; 10 r e t u r n 0 ; 11 } Rezultatem wywołania wszystkich funkcji inicjalizujących napisanych w C jest: Sterowiniki urządzeń są zainicjalizowane. Usługi są zainicjalizowane. Okresowy zegar jest zainicjalizowany i uruchomiony. Przerwania IRQ są aktywne w rejsterze cpsr. Procesor jest ustawiony w trybie użytkownika. Punkt startu zadania pierwszego jest wywołany (np. C_EntryTask1). Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 10 / 30

Model pamięci Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 11 / 30

Obsługa przerwań i wyjątków I Wyjątek Reset SWI IRQ Cel inicjalizacja systemu operacyjnego mechanizm dostępu do sterowników mechanizm obsługi zdarzeń Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 12 / 30

Obsługa SWI I 1 coreswihandler 2 STMFD sp!, { r0 r12, r14 } ; s a v e c o n t e x t 3 LDR r10, [ r14,# 4] ; l o a d SWI i n s t r u c t i o n 4 BIC r10, r10,#0 x f f 0 0 0 0 0 0 ; mask o f f the MSB 8 b i t s 5 MOV r1, r13 ; copy r13_svc to r1 6 MRS r2, s p s r ; copy s p s r to r2 7 STMFD r13!, { r2 } ; s a v e r2 onto the s t a c k 8 BL swi_jumptable ; branch to the swi_jumptable 1 LDMFD r13!, { r2 } ; r e s t o r e the r2 ( s p s r ) 2 MSR s p s r _ c x s f, r2 ; copy r2 back to s p s r 3 LDMFD r13!, { r0 r12, pc }^ ; r e s t o r e c o n t e x t and r e t u r n Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 13 / 30

Obsługa SWI II 1 swi_jumptable 2 MOV r0, r10 ; move the SWI number to r0 3 B eventsswihandler ; branch to SWI h a n d l e r 1 v o i d eventsswihandler ( i n t swi_number, SwiRegs r ) 2 { 3 i f ( swi_number==slos) 4 { 5 i f ( r >r [0]== E v e n t _ I O D e v i c e I n i t ) 6 { 7 / do not e n a b l e IRQ i n t e r r u p t s.... / 8 i o _ i n i t i a l i z e _ d r i v e r s ( ) ; 9 } 10 e l s e Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 14 / 30

Obsługa SWI III 11 { 12 / i f not i n i t i a l i z i n g change to system mode 13 and e n a b l e IRQs / 14 i f (STATE!=1) { modifycontrolcpsr (SYSTEM IRQoN ) ; } 15 s w i t c h ( r >r [ 0 ] ) 16 { 17 c a s e / SWI / Event_ IODeviceOpen : 18 r >r [ 0 ] = 19 ( u n s i g n e d i n t ) i o _ o p e n _ d r i v e r 20 ( 21 / i n t ID / ( UID ) r >r [ 1 ], 22 / u n s i g n e d major_device / r >r [ 2 ], 23 / u n s i g n e d minor_device / r >r [ 3 ] 24 ) ; 25 break ; Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 15 / 30

Obsługa SWI IV 26 c a s e / SWI / Event_IODeviceClose : 27 / c a l l i o _ o p e n _ d r i v e r / 28 break ; 29 c a s e / SWI / Event_IODeviceWriteByte : 30 / c a l l i o _ w r i t e b y t e _ d r i v e r / 31 break ; 32 c a s e / SWI / Event_IODeviceReadByte : 33 / c a l l i o _ r e a d b y t e _ d r i v e r / 34 break ; 35 c a s e / SWI / Event_IODeviceWriteBit : 36 / c a l l i o _ w r i t e b i t _ d r i v e r / 37 break ; 38 c a s e / SWI / Event_IODeviceReadBit : 39 / c a l l i o _ r e a d b i t _ d r i v e r / 40 break ; Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 16 / 30

Obsługa SWI V 41 c a s e / SWI / Event_IODeviceWriteBlock : 42 / c a l l i o _ w r i t e b l o c k _ d r i v e r / 43 break ; 44 c a s e / SWI / Event_IODeviceReadBlock : 45 / c a l l i o _ r e a d b l o c k _ d r i v e r / 46 break ; 47 } 48 / i f not i n i t i a l i z i n g change back to s v c mode 49 and d i s a b l e IRQs / 50 i f (STATE!=1) { modifycontrolcpsr (SVC IRQoFF ) ; } 51 } 52 } 53 } Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 17 / 30

Obsługa IRQ I 1 TICKINT EQU 0 x400 2 BUTTONINT EQU 0 x001 3 eventsirqhandler 4 SUB r14, r14, #4 ; r14_irq =4 5 STMFD r13!, { r0 r3, r12, r14 } ; s a v e c o n t e x t 6 LDR r0, INTPND ; r0=i n t pending r e g 7 LDR r0, [ r0 ] ; r0=memory [ r0 ] 8 TST r0,#tickint ; i f t i c k i n t 9 BNE e v e n t s T i c k V e n e e r ; then t i c k ISR 10 TST r0,#buttonint ; i f button i n t e r r u p t 11 BNE e v e n t s B u t t o n V e n e e r ; then button ISR 12 LDMFD r13!, { r0 r3, r12, pc }^ ; r e t u r n to t a s k Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 18 / 30

Obsługa IRQ II 1 e v e n t s T i c k V e n e e r 2 BL e v e n t s T i c k S e r v i c e ; r e s e t t i c k hardware 3 B k e r n e l S c h e d u l e r ; branch to s c h e d u l e r Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 19 / 30

Planista I 1 t a s k t =0, t ; 2 s c h e d u l e r ( ) 3 { 4 t = t + 1 ; 5 i f t = MAX_NUMBER_OF_TASKS then 6 t = 0 // the f i r s t t a s k. 7 end ; 8 ContextSwitch ( t, t ) 9 } Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 20 / 30

Przełączanie zadań I 1 MaxNumTasks EQU 3 2 F i r s t T a s k EQU 0 3 CurrentTask 4 LDR r3,= PCB_CurrentTask ; [ 1 ] r 3=PCB_CurrentTask 5 LDR r0, [ r3 ] ; r0= c u r r e n t Task ID 6 LDR r1,=pcb_table ; [ 2 ] r1=pcb_table a d d r e s s 7 LDR r1, [ r1, r0, LSL#2] ; r1=mem32 [ r1+r0 << 2 ] 8 LDR r2,= PCB_ PtrCurrentTask ; [ 3 ] r 2=PCB_ PtrCurrentTask 9 STR r1, [ r2 ] ; mem32 [ r2 ]= r1 : t a s k addr 10 ; PCB_PtrCurrentTask updated with the addr o f the c u r r e n t t a s k 11 ; r2 = PCB_PtrCurrentTask a d d r e s s 12 ; r1 = c u r r e n t t a s k PCB a d d r e s s 13 ; r0 = c u r r e n t t a s k ID 14 NextTask 15 ADD r0, r0,#1 ; [ 4 ] r0 = ( CurrentTaskID )+1 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 21 / 30

Przełączanie zadań II 16 CMP r0,#maxnumtasks ; i f r 0==MaxNumTasks 17 MOVEQ r0,# F i r s t T a s k ; then r0 = F i r s t T a s k ( 0 ) 18 STR r0, [ r3 ] ; [ 5 ] mem32 [ r3 ]= next Task ID 19 LDR r1,=pcb_table ; [ 6 ] r1=pcb_table addr 20 LDR r1, [ r1, r0, LSL#2] ; r1=memory [ r1+r0 << 2 ] 21 LDR r0,= PCB_PtrNextTask ; [ 7 ] r 0=PCB_PtrNextTask 22 STR r1, [ r0 ] ; memory [ r0 ]= next t a s k addr Rezultaty uruchomienia powyższego kodu: PCB_PtrCurrentTask wskazuje na adres aktualnie aktywnego PCB. PCB_PtrNextTask wskazuje na adres następnego aktywnego PCB. PCB_CurrentTask przechowuje wartość identyfikatora następnego zadania. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 22 / 30

Przełączanie kontekstu I 1 O f f s e t 1 5 R e g s EQU 15 4 2 h a n d l e r _ c o n t e x t s w i t c h 3 LDMFD r13!, { r0 r3, r12, r14 } ; [ 1. 1 ] r e s t o r e r e g i s t e r s 4 LDR r13,= PCB_PtrCurrentTask ; [ 1. 2 ] 5 LDR r13, [ r13 ] ; r13=mem32 [ r13 ] 6 SUB r13, r13,# O f f s e t 1 5 R e g s ; r13 =15 Reg : p l a c e r13 7 STMIA r13, { r0 r14 }^ ; [ 1. 3 ] s a v e u s e r mode r e g i s t e r s 8 MRS r0, s p s r ; copy s p s r 9 STMDB r13, { r0, r14 } ; s a v e r0 ( s p s r ) & r14 ( l r ) Rezultaty zapisu aktualnego kontekstu jest: Stos IRQ jest resetowany i zapisany do PCB_IRQStack. Rejestr użytkownika dla zadania t jest zapisany do aktualnego PCB. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 23 / 30

Wczytywanie kontekstu I 1 LDR r13,= PCB_PtrNextTask ; [ 2. 1 ] r 1 3=PCB_PtrNextTask 2 LDR r13, [ r13 ] ; r13=mem32 [ r13 ] : next PCB 3 SUB r13, r13,# O f f s e t 1 5 R e g s ; r13 =15 R e g i s t e r s 4 LDMDB r13, { r0, r14 } ; [ 2. 2 ] l o a d r0 & r14 5 MSR s p s r _ c x s f, r0 ; s p s r = r0 6 LDMIA r13, { r0 r14 }^ ; l o a d r0_user r14_user 7 LDR r13,=pcb_irqstack ; [ 2. 3 ] r13=irq s t a c k addr 8 LDR r13, [ r13 ] ; r13=mem32 [ r13 ] : r e s e t IRQ 9 MOVS pc, r14 ; [ 2. 4 ] r e t u r n to next t a s k Rezultaty uruchomienia powyższego kodu: Przełączanie kontekstu jest wykonane. Rejestry kolejnego zadania są wczytywane do rejestrów w trybie użytkownika. Stos IRQ jest przywrócony do stanu wejścia w obsługę przerwania. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 24 / 30

Device Driver Framework I 1 d e v i c e _ t r e e s t r h o s t ; 2 UID s e r i a l ; 3 4 h o s t = eventiodeviceopen (& s e r i a l, DEVICE_SERIAL_E7T,COM1) ; 5 i f ( h o s t==0) 6 { 7 /... e r r o r d e v i c e d r i v e r not found... / 8 } 9 s w i t c h ( s e r i a l ) 10 { 11 c a s e DEVICE_IN_USE : 12 c a s e DEVICE_UNKNOWN: 13 /... problem with d e v i c e... / 14 } Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 25 / 30

Device Driver Framework II 1 PRE r0 = Event_IODeviceOpen ( u n s i g n e d i n t ) 2 r1 = & s e r i a l ( UID u ) 3 r2 = DEVICE_SERIAL_E7T ( u n s i g n e d i n t major ) 4 r3 = COM1 ( u n s i g n e d i n t minor ) 5 SWI 5075 6 POST r1 = The data p o i n t e d to by the UID p o i n t e r i s updated Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 26 / 30

Przełączanie kontekstu I Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 27 / 30

Podsumowanie I Podstawowe komponenty występujące systemach operacyjnych uruchamianych na procesorach ARM są następujące: Inicjalizacja ustawiająca wszystkie wewnętrzne zmienne, struktury danych oraz urządzenia używane przez system operacyjny. Obsługa pamięci organizuje przestrzeń dla kernela oraz innych wykonywanych aplikacji. Wszystkie przerwania i wyjątki wymagają funkcji obsługujących je. Nieużywane przerwania i wyjątki muszą posiadać zainstalowane pozorowane funkcje obsługujące. Zegar okresowy jest wymagana w systemach przełączających zadania. Zegar produkuje przerwanie wywołujące funkcje planisty. Planista jest algorytmem, który określa nowe zadania mające być uruchomione. Przełączanie kontekstu zapisuje stan aktualnego zadania i wczytuje stan następnego zadania. Powyższe komponenty są przykładowo zrealizowane w Simple Little Operating System(SLOS): Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 28 / 30

Podsumowanie II Initialization-Inicjalizacja ustawoa wszystkie funkcje systemu SLOS, włączając w to tryby pracy stosu, proces kontroli bloków (PCB) dla każdej aplikacji, sterowniki, itd. Memory model- Jądro SLOS jest umieszczone w niskiej pamięci, każda aplikacja ma swoją własną przestrzeń pamięci oraz stos. Rejestry systemowe mikrokontrolera są umieszczone daleko od pamięci ROM i RAM. Interrupts and exceptions-slos korzysta tylko z trzech zdarzeń. Tymi zdarzeniami są Reset, SWI i IRQ. Pozostałej nieużywane przerwania i wyjątki mają zainstalowane prowizoryczne funkcje obsługi. Scheduler-SLOS implenentuje prosty algorytm round-robin w planiście. Context switch-aktulany kontekst jest zapisywane w PCB, następnie kontekst następnego zadania jest odczytywany z PCB. Device driver framework-ochrania system operacyjny przed bezpośrednim dostęp z aplikacji do sprzętu. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 29 / 30

References Andrew Sloss, Dominic Symes, and Chris Wright. ARM System Developer s Guide: Designing and Optimizing System Software. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 11 września 2017 30 / 30