Разработвам малък вградена система на ARM микроконтролер БЕЗОПЕРАТИВНА СИСТЕМА. Той има няколко различни вида прекъсвания (натискане на бутони, преобразуване от А до D, таймер и т.н.) и само една нишка.
Искам да имам FIFO опашка от събития за обработкакъдето всяка програма за прекъсване добавя събитието към опашката, а основният (и единствен) поток премахва събитията от опашката за обработване. тъй като ако основната нишка има заключване и се случи прекъсване, ISR ще изчака завинаги ключалката.
Разбира се, вече знам, че мога да деактивирам прекъсванията, докато основната нишка се бърка с опашката, но това не е идеално.
Какъв е най-добрият начин да продължите тук?
Благодаря А
Отговори:
0 за отговор № 1Ако можете да се измъкнете с опашка с пръстени с фиксиран размер,не се нуждаете от нищо сложно (предполагам, че прекъсванията са деактивирани в ISR), защото има само един четец - конецът на ядрото - който обновява указателя на опашката, и един писател - ISR - който актуализира указателя на главата. Заредете свързани / съхранявайте условно инструкции за прилагане на a опашка без заключване.