Cortex M4 Exceptions, state, types, handlers - Arduino Myanmar

Breaking

Open Arduino for Myanmar

Wednesday, June 13, 2018

Cortex M4 Exceptions, state, types, handlers

Cortex M4 Exceptions, state, types, handlers
====================================
Program တစ္ခုα€€ို α€‘α€œုပ္α€œုပ္ေနတဲ့ထခ်ိα€”္α€™ွာ α€™α€œိုα€œားထပ္တဲ့ ထျα€–α€…္ထပ်α€€္(error) ေတြα€€ို handle α€œုပ္α€–ို႕ထတြα€€္ Exception ေတြα€€ိုα€‘α€žံုးျပဳပါα€α€š္။ Exception ႏွα€…္α€™်ိဳး α€›ွိပါα€α€š္။

(၁) ပထမတစ္α€™်ိဳးα€€ System Exception ျα€–α€…္ျပီးေတာ့

(၂) α€’ုတိα€šα€α€…္ခုα€™်ိဳးα€€ေတာ့ Interrupt Exception ျα€–α€…္ပါα€α€š္။


Exception တစ္ခုα€Ÿာ software α€›ဲα‚•α€‘α€œုပ္ေတြα€€ိုေျပာင္းα€œဲေα€…ႏိုင္ပါα€α€š္။ Reset α€€α€œြဲα€œိုα‚•  Processor α€Ÿာ Exception ေတြထားα€œံုးα€€ို handle ျပဳα€œုပ္α€–ိုα‚•α€›α€”္ထတြα€€္ handler mode α€€ိုα€‘α€žံုးျပဳပါα€α€š္။ Interrupt handling α€€ို NVIC register ေတြα€€ေα€”ျပီးေတာ့ ထိα€”္းခ်ဳပ္ပါα€α€š္။

Exception State α€…ုα€…ုေပါင္း ေα€œးခုα€›ွိပါα€α€š္။

(၁) ပထမတစ္ခုα€€ Inactive ျα€–α€…္ပါα€α€š္။ α€’ီ state α€™ွာဆိုရင္ Exception α€€ active ျα€–α€…္α€™ေနပါα€˜ူး။ ထို႕ထတူ ဆိုင္းငံ့ ေα€”ျခင္းα€œα€Š္းα€™α€›ွိပါα€˜ူး။

(၂) α€’ုတိα€šα€α€…္ခုα€€ေတာ့ Pending ျα€–α€…္ပါα€α€š္။ Processor α€€ေα€”α€‘α€œုပ္α€œုပ္ေပးα€–ိုα‚•α€›α€”္ exception α€€ ဆိုင္းငံ့ေနပါα€α€š္။ Peripheral တစ္ခုα€€ေα€”α€œာတဲ့ Interrupt Request α€žိုα‚•α€™α€Ÿုတ္ Software α€€ေα€”α€œာတဲ့ Software α€€ေα€”α€œာတဲ့ α€œာတဲ့ Interrupt Request တစ္ခုα€Ÿာ α€žူα€”ဲ႕ပတ္α€žα€္တဲ့ Interrupt α€›ဲα‚• state α€€ိုဆိုင္းငံ့ေα€…ႏိုင္ပါα€α€š္။

(၃) တတိα€šα€α€…္ခုα€€ေတာ့ Active ျα€–α€…္ပါα€α€š္။ Processor α€€ exception α€€ို α€‘α€œုပ္α€œုပ္ေနဆဲျα€–α€…္ပါ α€α€š္။ α€’ါေα€•α€™α€š့္ α€™ျပီးေα€žးပါα€˜ူး။ Exception handler တစ္ခုα€Ÿာ ေα€”ာα€€္ထပ္ exception handler တစ္ခု α€‘α€œုပ္α€œုပ္တာα€€ို interrupt ျα€–α€…္ေα€…ႏိုင္ပါα€α€š္။ α€’ီα€œိုထေျခေα€”α€™ွာဆိုရင္ exception ႏွα€…္ခုα€…α€œံုးα€Ÿာ inactive state α€™ွာα€›ွိပါα€α€š္။

(၄) စတုတၳတစ္ခုα€€ေတာ့ Active and pending ျα€–α€…္ပါα€α€š္။ Exception α€€ို Processor α€€ေα€”α€‘α€œုပ္α€œုပ္ေနပါα€α€š္။ α€’ါ့ထျပင္ source တူျပီးေတာ့ ေα€…ာင့္ဆိုင္းေနတဲ့ exception တစ္ခုα€œα€Š္း α€›ွိေနပါα€α€š္။

Exception types
++++++++++++++
Exception ထမ်ိဳးထစား α€†α€š္ခုα€›ွိပါα€α€š္။
(၁) Reset 
(၂) NMI
(၃) Hard fault
(၄)Memory Management fault
(၅)Bus fault
(၆) Usage fault
(၇) SVCall
(၈) PendSV
(၉) SysTick
(၁၀) Interrupt(IRQ)

ေα€”ာα€€္ Post α€™ွာ Exception ထမ်ိဳးထစားတစ္ခုခ်င္းα€…ီထေၾကာင္းα€€ိုα€›ွင္းျပပါα€₯ီးα€™α€š္။

Exception handlers
+++++++++++++++++
Processor α€Ÿာ exception ေတြα€€ို handle α€œုပ္တဲ့ေα€”α€›ာα€™ွာ ေထာα€€္ပါတိုα‚•α€€ိုα€‘α€žံုးပါα€α€š္။

(၁) ပထမတစ္ခုα€€ Interrupt Service Routines (ISRs)                                                          Interrupt ေတြျα€–α€…္ၾကတဲ့ IRQ0 α€€ေα€”ျပီးေတာ့ IRQ81 ထထိ α€Ÿာ ISRs α€€ေα€” handle α€œုပ္တဲ့ Exception ေတြျα€–α€…္ၾကပါα€α€š္။

(၂) α€’ုတိα€šα€α€…္ခုα€€ေတာ့ Fault handler ေတြျα€–α€…္ပါα€α€š္။     Hard fault, memory management fault, usage fault, bus fault တိုα‚•α€Ÿာ fault handler ေတြα€€ေα€” handle α€œုပ္တဲ့ handler exception ေတြျα€–α€…္ၾကပါα€α€š္။

(၃) တတိα€šα€α€…္ခုα€€ေတာ့ System handler ေတြျα€–α€…္ၾကပါα€α€š္။
NMI, PendSV, SVCall , SysTick α€”ဲα‚• fault exception ေတြထားα€œံုးα€Ÿာ system handler ေတြα€€ေα€” handle α€œုပ္တဲ့ system exception ေတြျα€–α€…္ၾကပါα€α€š္။

Thank you!
Zaw Myat

No comments:

Post a Comment