© Hogeschool Rotterdam.
Op deze pagina leg ik met behulp van een aantal presentaties en video's uit hoe je gebruik kunt maken van de pthread library om meerdere taken concurrent uit te voeren op een microcontroller. Concurrent betekent schijnbaar gelijktijdig. Het schijnbaar gelijktijdig uitvoeren van taken wordt ook wel multitasking genoemd. De voorbeeldprogramma's voer ik uit op de CC3220S Launchpad van Texas Instruments met behulp van TI-RTOS.
In veel embedded systemen moeten meerdere functionaliteiten worden geïmplementeerd. Het is dan overzichtelijk om elke functionaliteit als een aparte taak te programmeren en er met behulp van een Operating System voor te zorgen dat deze taken (schijnbaar) gelijktijdig worden uitgevoerd. In onderstaande video leg ik uit hoe je dit kan doen met behulp van de pthread library.
kennisclip_pthread.pdf kennisclip_pthread.pptx pthread.c |
Vaak is het handig om aan een taak (bij het opstarten) bepaalde argumenten mee te geven. In de volgende video leg ik uit hoe je dit kan doen.
kennisclip_pthread_par.pdf kennisclip_pthread_par.pptx pthread_par.c |
Als meerdere taken bepaalde resources delen, dan kunnen er problemen ontstaan. Denk bijvoorbeeld aan het gebruik van een gemeenschappelijke variabele of aan meerdere taken die een ADC gebruiken. In de onderstaande video leg ik uit waardoor dit probleem ontstaat en welke oplossingen Operating Systems daarvoor bieden.
kennisclip_pthread_problem.pdf kennisclip_pthread_problem.pptx |
Het in de vorige video benoemde probleem wordt in de onderstaande video gedemonstreerd. Je kunt het programma pthread_problem.c ook op je eigen Launchpad uitvoeren.
kennisclip_pthread_problem.pdf kennisclip_pthread_problem.pptx pthread_shared.c pthread_problem.c |
Het in de vorige video's benoemde en gedemonstreerde probleem kan opgelost worden door het gebruik van een zogenoemde mutex. In de onderstaande video leg ik uit hoe je dit kunt doen. Tot slot van de video demonstreer ik dat het probleem uit de vorige video vermeden kan worden door het gebruik van een mutex.
kennisclip_pthread_mutex.pdf kennisclip_pthread_mutex.pptx mutex_solution.c |
In plaats van een mutex kunnen we ook gebruik maken van een semaphore gebruiken om wederzijdse uitsluiting te implementeren. Een counting semaphore kan ook gebruikt worden om meer dan één tak toegang te geven tot een kritische section. Een semaphore kan bovendien ook gebruikt worden om taken onderling te synchroniseren. In de volgende video leg ik uit hoe je een semaphore kan gebruiken.
kennisclip_pthread_semaphore.pdf kennisclip_pthread_semaphore.pptx |
Met behulp van een message queue kunnen taken eenvoudig met elkaar communiceren. In de onderstaande video leg ik uit en demonstreer ik hoe je dit kunt doen.
kennisclip_pthread_mqueue.pdf kennisclip_pthread_mqueue.pptx mqueue.c |