Molti anni fa il codice nel sistema embedded era praticamente scritto in Assembly (e non in Assembler). L'assembly è la lingua dei microprocessori. Il codici sviluppati in quel periodo erano molto densi con molte funzionalità.
In questo caso, la nostra applicazione doveva consentire un comportamento fluido e uniforme per tutti i cursori che potevano essere spostati simultaneamente. Abbiamo progettato un kernel con uno scambio di contesti semplice ma molto efficace e creato molte attività necessarie per gestire i comportamenti paralleli.
Event e Semaphore erano parte fondamentale di questo kernel 8051
;==================================
; WAIT_SEMAPHORE
; COMMENT : PROCEDURA DI ATTESA SEMAFORO
;
; ON ENTRY : ( INDICE_TABELLA ) INDICE
; ON EXIT : NONE
;====================================
WAIT_SEMAPHORE:
;---------- SALVA CONTESTO TASK CHIAMANTE
POP SAVEPCH
POP SAVEPCL
CALL SAVE_CONTEXT
MOV EVERGREEN,GREEN
;---------- PASSAGGIO A TASK SUCCESSIVA
NEXT_TASK: INC TSK_CNT
MOV A,TSK_CNT
DEC A
CLR C
SUBB A,TSK_MAX
JC OK_TASK_NUMBER
MOV TSK_CNT,#1
OK_TASK_NUMBER:
Nessun commento:
Posta un commento