Microcontrollers- ի իրական ժամանակի գործառնական համակարգեր: Ներկառուցված համակարգեր եւ ՕՀ նրանց համար

Ողջույն, Հաբ.
Այսօր ես ձեզ կասեմ այնպիսի հետաքրքիր բանի մասին, ինչպես օպերացիոն համակարգ Իրական ժամանակ (OSR): Վստահ չեմ, որ այն հետաքրքիր կլինի փորձառու ծրագրավորողների համար, բայց կարծում եմ, որ սկսնակներին դուր կգան:

Ինչ է OSR- ը:

Եթե \u200b\u200bմենք նայենք Վիքիպեդիային, կտեսնենք նույնքան 4 սահմանում:
Եթե \u200b\u200bհամառոտ եք ասում, OSR- ը աշխատանքային համակարգ է, որը որոշակի ժամանակահատվածում արձագանքում է արտաքին իրադարձություններին: Այստեղից մենք կարող ենք հասկանալ OSR- ի հիմնական նպատակը `անհրաժեշտ է այն սարքերը, որոնցում անհրաժեշտ են արագ արձագանքել իրադարձություններին (բայց ոչ մի դեպքում չի շփոթում OSR- ի աշխատանքը ընդհատումներով):

Ինչու մեզ պետք է:

Այսինքն, բավականին շատ պատճառներ:
Նախ, OSRV- ն աջակցում է սեմֆորային գործընթացների առաջնահերթություններին եւ շատ ավելին:
Երկրորդ, դա շատ հեշտ է եւ համարյա ռեսուրսներ չի պահանջում:
Երրորդ, վերը նշված բոլորը կարող ենք գրեթե ցանկացած գեղձի հասնել (օրինակ, Freertos- ը աշխատում է նույնիսկ 8-բիթանոցով):
Դե, չորրորդ. Պարզապես խաղալ ինքներդ ձեզ եւ վայելեք:

3 հայտնի OSR- ների ակնարկ:

Ուշադրություն. Հետո անցնում է իմ անձնական կարծիքը:
Freertos.
Այսօր ամենատարածված OSR- ներից մեկը: Տեղափոխվել է հսկայական քանակությամբ երկաթ: Պաշտոնական կայք:
կողմնակից
1) անվճար
2) տեղափոխվել է մեծ թվով գեղձ
3) հզոր ֆունկցիոնալություն
4) Կան տարբեր գրադարաններ, գրաֆիկա, ինտերնետ եւ այլն:
5) Լավ փաստաթղթեր:
Մինուսներ
1) Նոր երկաթի բավականին բարդ գործընթաց:

Եզրակացություն. Այն իսկապես պրոֆեսիոնալ մասնագիտություն է `լավ փաստաթղթերով: Լավ կլինի սկսնակների համար, եթե նավահանգիստն արդեն ունի նավահանգիստ:

Keilrtx:
Մինչեւ վերջերս այս OSRV- ը առեւտրային էր, բայց վերջերս բացվեց: Այն աշխատում է միայն ARM ճարտարապետության վրա: Պաշտոնական կայք:
կողմնակից
1) անվճար
2) Հեշտությամբ նավահանգիստները նոր երկաթի (բազկային ճարտարապետության շրջանակներում):
3) Կան տարբեր գրադարաններ, գրաֆիկա, ինտերնետ եւ այլն:
Մինուսներ
1) Կեղեւի մեջ աշխատել գրեթե անիրական է
2) մի փոքր կտրված ֆունկցիոնալություն
3) Միայն թեւն է աջակցվում:
4) (անձնական փորձի մասին) կորցնում է շատ արագություն:
Եզրակացություն. Իդեալական է սկսնակների եւ փոքր նախագծերի համար:
uC / OS.
Հզոր առեւտրային փոխանակում: Վեբ կայք:
կողմնակից
1) հսկայական քանակությամբ գործառույթներ եւ գրադարաններ:
2) աջակցում է շատ երկաթ
Մինուսներ
1) առեւտրային:
2) օգտագործման բարդույթ:

Եզրակացություն. Դուք կարող եք այն անվանել նորեկի համար `մեծ ձգմամբ:

Այլ հետաքրքիր osrvs

Rtlinux OSRV- ները `հիմնվելով սովորական Linux- ի վրա:
QNX OSRV հիման վրա UNIX- ի վրա:

Զարգացման առանձնահատկությունները `օգտագործելով OSRV

Դե, նախ եւ առաջ անհրաժեշտ է հասկանալ հետեւյալը. Dra- ն Windows- ը չէ: Այն հնարավոր չէ տեղադրել: Այս համակարգը պարզապես կազմվում է ձեր ծրագրով:
OSR- ի հետ ծրագրեր գրելիս գործառույթները չեն օգտագործվում իրենց սովորական փոխըմբռնման մեջ: Գործառույթների փոխարեն օգտագործվում են գործընթացները (կամ թեստերը): Այն փաստը, որ գործընթացները, ի տարբերություն գործառույթների, անսահման ցիկլեր են եւ երբեք չեն ավարտվում (եթե միայն մեկը կամ դա չի սպանում):
Եթե \u200b\u200bներառված են մի քանի գործընթացներ, ապա OSR- ն անցնում է դրանք, իր հերթին թողարկող մեքենա եւ ռեսուրսներ: Սա այն դեպքում, երբ առաջանում է գործընթացի առաջնահերթության հայեցակարգը, եթե երկու գործընթացներին անհրաժեշտ է միանգամյա շարժիչի ժամանակ, OSR- ն այն կտա իրեն, ով ավելի առաջնային է:
OSRV- ում կան ուշացման հատուկ առանձնահատկություններ, այնպես որ ապարդյուն ժամանակն անհետանում է մեկ գործընթացի ձգձգման պահին, երկրորդը կատարվում է երկրորդը:
Հիմա եկեք խոսենք այսպիսի բանի մասին `այսպիսի բան, որը վերահսկում է դիմումի մուտքը դիմումի ռեսուրսներին: Յուրաքանչյուր ռեսուրսի համար կա մարկեր `երբ գործընթացը ռեսուրսի կարիք ունի, դա տեւում է եւ օգտագործում է այս ռեսուրսը: Եթե \u200b\u200bչկա մարկեր, ապա գործընթացը ստիպված կլինի սպասել, մինչեւ այն վերադարձվի: Ես օրինակ կտամ. Տարբեր գործընթացներ տեղեկատվություն են ուղարկում մեկ UART- ի վերաբերյալ: Եթե \u200b\u200bսեմֆոր չլիներ, նրանք հերթով կուղարկեին բայթեր եւ խառնաշփոթ կլիներ: Եվ այսպես, առաջին գործընթացը uart- ի ցուցիչով ուղարկեց հաղորդագրություն ուղարկեց հաղորդագրություն եւ երկրորդը տվեց (եւ այդպես `անսահմանությանը):

Լրացուցիչ OSR գրադարաններ:

Հաճախ, OSRV- ն առաջարկում է տարբեր գրադարաններ աշխատանքի համար, օրինակ, գրաֆիկայի, ինտերնետ եւ այլն: Դրանք իսկապես հարմարավետ են եւ չպետք է ստիպված լինեն օգտագործել դրանք: Այնուամենայնիվ, հիշեք, որ առանց OSR- ի, որի համար գրված են, նրանք չեն աշխատի:
Ահա օրինակներ.
RTX- ի համար

Ինչ է վերաբերում, երբ լսում եք օպերացիոն համակարգը: Անշուշտ, պատուհանները, Linux- ը, մակրո .. կամ նման բան: True իշտ է, եւ այն հարցին, թե ինչու է նա պետք, բոլորը վստահորեն կպատասխանեն. Լսեք երաժշտություն, խաղացեք խաղը (ինտերնետում), խոսելով մյուսի հետ Skype- ի հետ: Միեւնույն ժամանակ, LED- ի բոցավառումը մտածելով, Yuart- ից բայթ ստանալը:

Եվ եթե ավելի խորը փորում եք, ապա երաժշտություն լսելը, ինտերնետի վերաբերյալ տվյալներ ուղարկելը բոլոր գործընթացներն են, եւ քանի որ մենք ունենք մեկ պրոցեսոր, ապա միաժամանակ կարող է կատարել միայն մեկ խնդիր: Հետեւաբար, առաջադրանքներն իրականացվում են այլընտրանքային փոքր «մասերում», OS- ի էությունը դա անում է օգտագործողի համար: Այնպես որ, որ ձայնը երգում է, եւ միեւնույն ժամանակ: Միեւնույն ժամանակ, եթե առաջադրանքներից մեկը «կախվի», ապա մնացած ամեն ինչ շարունակեց աշխատել:

Եթե \u200b\u200bթողեք բոլոր լրացուցիչ թխուկները եւ թողեք մերկ էությունը, ապա առաջին հերթին ՕՀ-ն, դա պարզապես ժամանակաչափ է, որը հավասար է հավասար ընդմիջումներով, եւ, առանց օգտագործողի մասնակցության, փոխվում է առաջադրանքների միջեւ: Անհրաժեշտ է նաեւ հաշվի առնել, որ առաջադրանքների մեծ մասը կարող է ժամանակ չունենալ մեկ քվանտով ավարտելու համար, այնպես որ անհրաժեշտ է խնայել առաջադրանքի կարգավիճակը `մեկ այլ անձի տեղափոխման պահին, եւ հաջորդ անգամ փոփոխական պետությունը վերականգնելու համար , Այս ամենի կառավարումը կատարվում է առաջադրանքի պլանավորողի կողմից:

Գոյություն ունեն OS- ի երկու հիմնական տեսակ, տեղահանում եւ կոոպերատիվ: Առաջին դեպքում առաջադրանքների միջեւ անցումը կլինի «ծանր», ես: Եթե \u200b\u200bժամանակի քանակը 1MS է, ապա առաջինը առաջին խնդիրը կկատարվի հենց 1 մետր, ապա երկրորդ ճշգրիտ 1 MS- ն եւ այլն: Նման կացինները կոչվում են իրական ժամանակում (ORVD): Կոոպերատիվը մի փոքր ավելի պարզ է, գործընթացն ինքնին պետք է ասի, որ «ես մահապատժի եմ ենթարկվել», հետեւաբար անհնար է նրանց նշանակել:

Արագ ակնառու AVR- ն չի գործի, քանի որ Փոքր համար RAM. Կոոպերատիվների առկա ընտրանքներից ինձ գրավում էին MRTOS- ը, դուք կարող եք կարդալ այս համակարգի մանրամասները հեղինակի (հեշտությամբ googles) կայքում: հիմնական պատճառը Դրա օգտագործումը պարզությունն է, Cavr- ի տակ պատրաստի տարբերակի առկայությունը, հասկանալու համար Ընդհանուր սկզբունքներ Ամենատարածվածը:

Այնպես որ, հիմնական հարցերը մնացին, թե ինչու եւ երբ են առանցքը կիրառել: Տեսականորեն, միեւնույն բանը, որ դուք անում եք առանցքի հետ, կարող եք առանց դրա անցնել, քանի որ ռեսուրսները նույնն են: Այն փաստից, որ դուք այն ընդունում եք նախագծին, տիեզերքում Megahertz- ը չի հանվի, երկաթը կմնա նույնը, ուստի ռեսուրսները նույնն են:

Հետեւաբար, դուք պետք է ինքներդ ձեզ մի քանի հարց տա.
1. Կարող եք կառավարել իրավասու ռեսուրսները:
2. Արդյոք չի ենթադրվում նույն հեծանիվը հորինել որոնվածը գրելու գործընթացում:
3. Որքան եք կարդում ձեր ծածկագիրը: Դուք ունակ եք այն բացել կես տարեկան եւ դուրս գալ:
4. Դուք գրում եք կամ խումբ:

Դժվար է առաջին հարցի պատասխանը տալը, քանի որ ամեն ինչ կախված է մշակողների ուսումնականությունից: Երկրորդի միջոցով ամեն ինչ ավելի հասկանալի է, եթե կան շատ անկախ առաջադրանքներ, եւ նախատեսվում է դրանք կատարել որոշակի ընդմիջումներից հետո, ավելի լավ է նայել ՕՀ-ի կողքին: Երրորդը նույնպես պարզ է, շատ ավելի հեշտ է հասկանալ առանձին առաջադրանքի մեջ, քան հիմնական ցիկլում կախվածությունը նկարել: Եթե \u200b\u200bգրում եք ոչ միայնակ, ապա այստեղ կան առավելություններ, քանի որ բոլորը կարող են առանձին գրել իրենց առաջադրանքը, առանց մնացածին միջամտելու:

Վերոնշյալը համատեղելը, դիմումի շրջանակը բավականին հատուկ է, որոշակի առաջադրանքների շրջանակներում: Մի ցնցեք այն յուրաքանչյուր նախագծի մեջ: Սիրողական ռադիո սարքերի մեծ մասի համար առանցքը ավելորդ է, բայց նախկինում գաղափար ունենալը, հավանաբար նրան կնքեց մի քանի նախագծեր:

Հիմա նայեք գլխարկի տակ: MRTOS- ը նախագծին սկսելու համար հարկավոր է կապել MrTos.c եւ մետաղադրամ MrTos.h: Օրենսգրքի կառուցվածքը սովորականից փոքր-ինչ տարբերվում է

#Ներառում. #Include «mrtos.h» // այստեղ մարմնի գործառույթը, որտեղ մենք գրում ենք ձեր գերծանրքաշային ծածկագիրը Անվավեր Tour1 () (մինչդեռ (1) // ցանկացած OS- ում առաջադրանքները կառուցված են անսահման ցիկլի հիման վրա { // Ձեր առաջադրանքի ծածկագիրը Ուղարկում; // պլանավորման կառավարման գործառույթ } ; } // ժմչփեր ընդհատիչ բեռնաթափում 0 Ընդհատեք [Tim0_OVF] անվավեր timer0_ovf_isr (անվավեր) (Չար ii; #asm ("cli") tcnt0 \u003d 0x9c; inc_systime (); for (ii \u003d 0; II)< init_tasks; ii++ ) if (tasks[ ii] .delay ) -- tasks[ ii] .delay ; #asm("sei") } void main(void ) { // ծայրամասերի նախաստորագրում It_mrtos (); // OS նախաստորագրում // Այստեղ մենք ստեղծում ենք տոտներ (առաջադրանքներ) 3 առաջադրանքներ Ստեղծեք_task (առաջադրանք 1, 1, ակտիվ); // ստեղծել առաջադրանք (առաջադրանքի անվանումը, առաջնահերթությունը, կարգավիճակը) Seat_task (առաջադրանք 2, 1, ակտիվ); Seat_task (Task3, 1, ակտիվ); Sheduler (); // Գործարկման ժամանակացույց Մինչդեռ (1); )

#Ներառում. #include «mrtos.h» // Այստեղ գործառույթի մարմինը, որտեղ մենք գրում ենք ձեր գերծանրքաշային կոդը անվավեր TEST1 () (մինչդեռ ցանկացած OS- ի առաջադրանքները կառուցվում են անսահման ցիկլի հիման վրա) Ձեր առաքման առաջադրանքի ծածկագիրը. // գործառույթի փոխանցման ժամանակացույցի կառավարում);) // Timer ընդհատիչ գործընթաց 0 ընդհատեք անվավեր ժամանակաչափիչ 10_OIM_ISH («CLISTIME (); II \u003d 0; II

Հիմա ավելին: Առաջադրանքների քանակը նշվում է MRTOS.h- ում: HP Defaines Apptasks N. Խնդիրը հայտարարվում է Task1 () (), Task2 () (), իսկ 1) Անհրաժեշտ չէ ոչինչ Գործառույթները զանգահարելու համար այս ամենը դա անելու է, դուք պլանավորող եք: Ինչպես տեսնում եք, առաջադրանքը բաղկացած է անսահման ցիկլից, այն պետք է լինի նորմալ եւ պետք է լինի, բայց առաջադրանքի ներսում պետք է տիրապետեք պլանավորողի վերահսկմանը: Կամ սպասման գործառույթը, կամ առաքումը: Եթե \u200b\u200bդա չի արվել, ապա առաջադրանքը կկատարվի անսահմանորեն:

Ինչպես է դա աշխատում? Ստեղծեք առաջադրանքների ing րամեկուսացման LED:

Անվավեր TESS1 () (մինչդեռ (1) (Portb.0 \u003d! Portb.0; սպասել (100););)

Անվավեր TESS1 () (մինչդեռ (1) (Portb.0 \u003d! Portb.0; սպասել (100););)

Սպասումը միայն որոշակի ուշացում է () անալոգը միայն, հետաձգման ընթացքում միկրոկոնտրոլլերը ոչինչ չի կատարում եւ դատարկ ցիկլեր է վարում: Նույն սպասման ընթացքում վերահսկողությունը փոխանցվում է այլ առաջադրանքների: Նրանք: Կարող եք ստեղծել առաջադրանքների մի փունջ, տարբեր LED- ներն ուղղելով, տարբեր սպասմամբ եւ բոլորն էլ կթողնեն տարբեր հաճախականություններ: Եթե \u200b\u200bհետաձգումները անհրաժեշտ չեն, ապա վերջում օգտագործում է առաքումը:

Սպասելիս կարեւոր է հասկանալ, որ ամբողջ համակարգը ունի նվազագույն TIC (ժամանակի քանակ), ուստի սպասում ենք (50) 50 մղոն համակարգ, բայց 50) 50 մղոն համակարգ: Նշման կարգավորումը կախված է նրանից, թե ինչպես են ժամանակաչափի ընդհատումները հաճախ կոչվում, ես: Եթե \u200b\u200bմենք կազմաձեւենք ընդհատում 1MS- ին, ապա կարող ենք ենթադրել, որ մեր գործողությունը կատարվում է 1 MS- ի համար: Փորձերը ցույց են տվել, որ հնարավոր է նվազեցնել համակարգը 1-ին ժամացույցի շուրջ 20 մկների հետ `16 ՄՀց ժամ:

Ժամանակաչափի պարամետրը նախկինում ուսումնասիրված չէ, քանի որ ժամանակաչափը ունի միայն արտահոսքի ընդհատում, ապա բոլոր պարամետրերը կապված են դրա հետ: Cavr- ի վերջին տարբերակներում շատ հարմար է գրել ժամանակի համապատասխանությունները, պարամետրերը ինքնաբերաբար կստեղծեն:

Ստեղծեք_task (առաջադրանք 1, 1, ակտիվ);

Ստեղծել_task (առաջադրանք 1,1, ակտիվ);

Առաջնահերթություններով, ամեն ինչ պարզապես ոչ միայն: Եթե \u200b\u200bտարբեր գերակայություն ունեցող երկու առաջադրանք կա, եւ մեծ առաջադրանքն անընդհատ իրականացվում է, ապա մենք երբեք չենք գնա առաջադրանքի առաջադրանքի առաջադրանքի: Հետեւաբար, դուք պետք է կազմակերպեք աշխատանք, որպեսզի բոլոր առաջադրանքներն ունենան: Squake ուշադրությունը դրա վրա, մենք չենք կիսելու հաջորդ անգամ: Առաջադրանքի կարգավիճակը, ակտիվ - սկսված, StopTask- ը դադարեցվել է:

Այսպիսով, նրանց համար, ովքեր ցանկանում են պարզապես flash the LED.

#Ներառում. #include «mrtos.h» անվավեր Task1 () (մինչդեռ (1) (սպասեք (1000); Portb.0;)) // ժմչփ 0 արտահոսքի ընդհատման ծառայության ռեժիմ Ընդհատեք [tim0_ovf] void timer0_ovf_isr (անվավեր) (alari ii; #asm ("cli") tcnt0 \u003d 0xb2; inc_systime (); for (ii \u003d 0; II)< init_tasks; ii++ ) if (tasks[ ii] .delay ) -- tasks[ ii] .delay ; #asm("sei") } void main(void ) { DDRB= (1 << DDB7) | (1 << DDB6) | (1 << DDB5) | (1 << DDB4) | (1 << DDB3) | (1 << DDB2) | (1 << DDB1) | (1 << DDB0) ; PORTB= (0 << PORTB7) | (0 << PORTB6) | (0 << PORTB5) | (0 << PORTB4) | (0 << PORTB3) | (0 << PORTB2) | (0 << PORTB1) | (0 << PORTB0) ; // ժմչփ / հաշվիչ 0 նախաստորագրում // Ժամացույց Աղբյուրը, համակարգի ժամացույց // Ժամացույցի արժեքը `7,813 կՀՄ TCCR0 \u003d (0<< CS02) | (1 << CS01) | (1 << CS00) ; TCNT0= 0x83 ; // ժմչփ (ներ) / հաշվիչ (ներ) ընդհատման (ներ) ի սկզբնավորում Timsk \u003d (0<< OCIE2) | (0 << TOIE2) | (0 << TICIE1) | (0 << OCIE1A) | (0 << OCIE1B) | (0 << TOIE1) | (1 << TOIE0) ; Init_mRTOS() ; create_task(task1, 1 , Active) ; Sheduler() ; while (1 ) ; }

#Ներառում. #include «mrtos.h» անվավեր հանձնարարական 1 () (մինչդեռ (1) (սպասեք (1000); portb.0;) (arm is) (armo) ; #Asm («CLI») TCNT0 \u003d 0XB2; inc_systime (); for (ii \u003d 0; II)

Որպես բոնուս, ես փորձեցի պատրաստել պոլիֆոնիկ (երկկողմանի) մեղեդի «Dr.Mario chill»: Գաղափարն այն է, որ վերահսկիչի յուրաքանչյուր ոտքը անընդհատ շրջվում է առանձին թասկեում, դրանով իսկ առաջացնում է հաճախականությունը: Կափարիչը փոխելը կարող եք փոխել նոտաների բարձրությունը:

Անվավեր TESS2 (անվավեր) (մինչդեռ (1) (եթե (լուռ \u003d\u003d 0) // եթե թույլատրվում է խաղալ (if_ch2 [n_n] \u003d\u003d 0) // Եթե դադար եք սպասում, մենք ոչինչ չենք խաղում (Portb.4 \u003d 0; սպասել (5);) այլ (portb.4 \u003d! Portb.4; // Եթե այն չի դադարեցնում, ապա ոտքը խստացրեք ցանկալի հաճախականությամբ Սպասեք (note_ch2 [n_n]); )))))

Անվավեր Tour2 (անվավեր) (մինչդեռ (1) (եթե (անլար \u003d\u003d 0) // Եթե ձեզ թույլատրվում է խաղալ (եթե դադարում եք, մենք սպասում եք դադար) (Portb. 4 \u003d 0; սպասել (5);) այլ (portb.4 \u003d! Portb.4; // Եթե չլիներ, իսկ ոտքով `սպասման ցանկալի հաճախականությամբ)))))))))))))))

Ես գաղափարը չէի անհանգստացրել, 1 թասակ, մենակատարի համար նոտաների հաճախականությամբ, երկրորդում, բասի համար: Յուրաքանչյուր նշանի բարձրությունը վերցվում է զանգվածներից: Տեւողությունը, Tasque3- ում տեւողությունը, անջատելը եւ կոտրելը:

Անվավեր TEXT3 (անվավեր) (սպասել (1) (սպասել (1500); // Խաղալ նոտաների նվազագույն քանակը համար (լուռ \u003d 0; լուռ)< 500 ; mute++ ) // Կտտացրեք գրությունը `միաձուլելու համար (Portb.3 \u003d 0; PORTB.4 \u003d 0;); Mute \u003d 0; // սահմանեք դրոշը, որը կարող եք ձայն խաղալ n_n ++; // Գնալ հաջորդ նոտա եթե (n_n \u003d\u003d n_max) // եթե նրանք ամեն ինչ խաղացին շրջագծով (n_n \u003d 0;))))

Անվավեր TEXT3 (անվավեր) (սպասեք (1) (սպասեք (1500); // Նրբաթիթեղի նվազագույն տարբերակն է (լուռ \u003d 0; լուռ)< 500; mute++) //обрываем ноту, чтобы не сливались { PORTB.3 = 0; PORTB.4 = 0; }; mute = 0; //выставляем флаг, что можно воспроизводить звук n_n++; //переходим на следующую ноту if(n_n == n_max) //если сыграли все то идем по кругу { n_n = 0; } } }

Երկու ալիքներ խառնել օգտագործված պարզ սխեման:

Ընդհանուր փոքր կտոր

Որոնիչ միջոցների համար ցանկացողների համար

Ես մշակեցի մի փոքր ավելի քան 10 էլեկտրոնային սարք եւ ամբողջովին հաշվարկվեց նրանց ցածր մակարդակի աշխատանքի մեջ `առանց գործառնական համակարգի: Իրավիճակը փոխվել է, երբ հաջորդ սարքի ֆունկցիոնալությունը կտրուկ ընդլայնվել է: Բացի այդ, առաջադրանքի անհրաժեշտություն կար, որը կոչվում է նշված ժամանակահատվածի միջոցով, եւ զանգի ճշգրտությունը ազդում է արդյունքի վրա: Պարզվեց նաեւ, որ դա չի ստացվի ամեն ինչ հատկացված ժամանակի համար, եւ այն կստեղծվի ավելի ուշ: Կարճ արտացոլումից հետո ես հասկացա, որ նախագիծը պետք է ներառի իրական ժամանակում գործող համակարգը (ORVD կամ RTO):

Ի տարբերություն համակարգչի, որտեղ ՕՀ-ն ավելի շատ շերտ է համակարգի ռեսուրսների հետ աշխատելու համար, միկրոկոնտրոլերային OSR- ի համար. Սա հիմնականում առաջադրանքի ժամանակացույց է, իրականում նա մեծ դեր է խաղում «իրական ժամանակում»: Այս պահին ինձ համար կարեւոր է ապահովել առաջադրանքների այսպես կոչված «կեղծ-զուգահեռ» կատարումը: Այսինքն, նույն գերակայությամբ կան մի քանի առաջադրանքներ, եւ կարեւոր է դրանք նշված կարգով տալ նշված ժամանակահատվածում:

Հետեւյալ օրինակը տեսողական էր. Eurobot 2011 նախագծում համակարգում ներկա էին 18 ծայրամասային սարքեր: 2 էլեկտրոնային հասցեները կարող են միավորվել մեկի մեջ: Նրանց արժեքը կնվազի, հուսալիությունն աճեց (համակարգում բաղադրիչների քանակը կրճատեց), գործով ազատ տարածության քանակը մեծացավ: Հանգամանքը բարդացնում է այն փաստը, որ առաջադրանքների քանակը համամասնորեն աճում է, եւ այստեղ այն այլեւս չի արվում առանց ՕՀ-ի: Բացի այդ, OSR- ն օգնում է խուսափել պրոցեսորի հնարավոր դադարեցումից, օրինակ, ADC փոխարկման ընթացքում դուք կարող եք արգելափակել այս առաջադրանքը եւ կատարել ուրիշներին, դրանով իսկ ճիշտ բաշխելով սարքի աշխատանքը: Կարեւոր է նաեւ, որ այժմ սարքը չի ընկնի առաջադրանքի ձախողման պատճառով, փոխարենը հնարավոր է պահպանել մասնակի կատարումը (չնայած այն կարող է հանգեցնել անկանխատեսելի արդյունքների): Ինչի պատճառով մենք ապահովում ենք այս ցուցանիշների աճը: Իրականում մենք բոլոր հնարավորությունները սեղմում ենք ԲԿ-ից, արդյունավետորեն օգտագործելով դրա հաշվարկային հնարավորությունները:

Հակիրճ որոնումից հետո ընտրությունը ընկավ Freertos- ում: Այս Ord- ը բաշխվում է C- ի եւ նավահանգիստների սկզբնական կոդով `27 ճարտարապետության: Ինձ համար վերջին հանգամանքը որոշիչ է: Այն կնվազեցնի աշխատանքային ծախսերը այլ արտադրողների MK- ի հետ աշխատելիս: Այժմ ես ավելի շատ հետաքրքրում եմ նավահանգիստը AVR- ի համար:

Ծրագրում Freertos ակնարկների առկայությունը ուտում է ծրագրերի ծրագրերի եւ 1.8 KB RAM- ի մոտ 9,8 կԲ: Օրինակ, ATMEGA32- ի համար եւ Winavr- ի կազմիչը `համապատասխանաբար 60% եւ 85%: Արդեն այս մոդելի համար ստեղծեք հիանալի ֆունկցիոնալությամբ սարք, դժվար է `ոչ բավարար հիշողություն: Բայց այս խնդիրը անհետանում է AVR- ի նոր մոդելներ օգտագործելիս: Այն ամբողջովին վիրավորված է Mega2560- ի համար `իր 256KB ծրագրերի ծրագրերով եւ 8 KB RAM- ով: Ապագա MK- ի միտումը ուղեկցում է միայն OSR- ի հաջողությունը:

Runly վազելով Runet- ի վրա, ես զարմացա, որ ռուսերենում չկա որեւէ փաստաթղթեր: Այսպիսով, ինչ է այստեղ: Բնօրինակ փաստաթղթերը վերաբերում են լրացուցիչ արժեքին: Իրավիճակը պարզեցրեց «Անդրեյ Կուրթիկա» հոդվածը ( [Email պաշտպանված]) «Բաղադրիչներ եւ տեխնոլոգիա» ամսագիր: Հեղինակի հետ համաձայնագրով ես կօգտագործեմ հոդվածը վերամշակված տարբերակում: Նրա հոդվածը կարող է լավ ծառայել ռուսերեն: Բայց բնօրինակը տպագրության մեջ անհասանելի է, ամսագրի կայքը կայանում է, ուստի նյութը պետք է մի փոքր վերամշակվի: Ընդհանուր առմամբ, հեղինակը հիանալի հոդված է սարքել, եւ իմաստ չունի կրկին անցնել տեսությունը, այն ամբողջությամբ կհրապարակվի այստեղ: Բնօրինակ հոդվածը կցվում է հրապարակման ավարտին: Նկատեցի նաեւ, որ օգտվողները դժվարանում են OSR- ն կազմել: Դա պայմանավորված է նրանով, որ օգտագործվում է արտաքին կերակրատեսակ, որում գրված են թղթապանակների ուղիները: Հետեւաբար, ես կկիրառեմ պատրաստի նախագիծ, AVR ստուդիայի եւ AVR ECLIPSE- ի ձեւանմուշի տեսքով: Դժբախտաբար, հայրենիքի Makefile- ը չի հանում կարգաբերման տեղեկատվությունը, ինչպիսիք են RAM- ի զբաղվածության աստիճանը եւ ծրագրերի հիշատակը, այն պետք է հորինել համապատասխան ստանդարտ մարտահրավերը:

Այսպիսով, հակիրճ անհրաժեշտության մասին, ձեր նախագծում ցանկալի է անհրաժեշտության դեպքում օգտագործել OSR.

Կազմակերպեք բազմազանություն եւ այլընտրանքային առաջադրանքներ

Ներկայացրեք առաջադրանքի մեկնարկը խստորեն սահմանված ժամկետի ընդմիջումներով

Տեղեկատվություն փոխանցեք մեկ առաջադրանքից մյուսին

Անհրաժեշտության դեպքում ավելացրեք նոր առաջադրանքներ

OSRV- ի առավելությունները մինչեւ մԴեպի,

  1. Բազմաթիվ: OSRV- ն ծրագրավորողին պատրաստ է, բարեկեցական մեխանիզմը: Պարզ դեպքում յուրաքանչյուր խնդիր կարող է ծրագրավորվել առանձին, բոլոր աշխատանքները կոտրվել են թիմի մի քանի անդամների միջեւ: Պետք չէ հոգ տանել առաջադրանքների միջեւ անցման մասին, այն կստիպի պլանավորողին:
  2. Ժամանակավոր բազա: Անհրաժեշտ է չափել ժամանակի ընդմիջումները: OSRV- ն պետք է ունենա այս գործիքը: Դա ձեզ թույլ կտա գործողություններ կատարել խիստ նվիրված ժամանակային ընդմիջումներով:
  3. Տվյալների փոխանակում առաջադրանքների միջեւ: Այդ նպատակով հերթը օգտագործվում է OSR- ում:
  4. Համաժամացում: Եթե \u200b\u200bտարբեր առաջադրանքներ օգտագործում են նույն ռեսուրսը, օրինակ, սերիական նավահանգիստ, ապա կարող են օգտագործվել լնդլեքսներ եւ կրիտիկական հատվածներ: Եթե \u200b\u200bՁեզ անհրաժեշտ է առաջադրանքներ կատարել խիստ հաջորդականությամբ կամ երբ հատուկ իրադարձություն է առաջանում, կարող եք սեմաֆորներ կամ ազդանշաններ օգտագործել առաջադրանքները համաժամեցնելու համար:

OSRV- ի թերություններ:

1. Միջուկը կյանքի կոչելու ծրագրի անհրաժեշտության կտրուկ աճ

2. Անհրաժեշտ RAM- ի աճը `յուրաքանչյուր առաջադրանքի կեռը պահելու, սեմաֆորների, հերթերի, լեռների եւ այլ օբյեկտի հիմնական օբյեկտների պահարան պահելու համար:

3. Հետաձգում, երբ անցում կատարվում է համատեքստային պահպանման առաջադրանքների միջեւ:

Նկարագրությունfreertos.:

Freertos- ը անվճար բաց կոդով կոշտ իրական ժամանակի ՕՀ է: Նախընտրելի է գրված C- ում, բայց կան հավաքման ներդիրներ: Այն մշակվել է իրական ժամանակում Engineers Ltd- ի կողմից, որոնք հատուկ ներկառուցված համակարգերի համար են: Վերջերս «Safertos» նախագիծը `բարելավված, փաստաթղթավորված, փորձարկված եւ անցյալի սերտիֆիկացում` IEC 61508 անվտանգության ստանդարտին համապատասխանության համար `IEC 61508 տարբերակի համապատասխանության համար: Գերմանական ընկերությունը զբաղվում էր այս նախագծով, եւ այժմ Safertos- ն օգտագործվում է օդատիեզերական արդյունաբերության եւ բժշկական տեխնոլոգիայի մեջ: Կա նաեւ Openrtos նախագիծ `արտադրողի երաշխիքով առեւտրային տարբերակ:

FRERTOS- ի հիմնական բնութագրերը:

1. Ժամացույցը աջակցում է բազմամշակման 3 տեսակի.

Հնազանդ

Կոոպերատիվ

Հիբրիդ

2. Միջուկի չափը 9,8 կԲ է AVR- ի համար կազմված ձեւով: (Winavr)

3. Հիմնականի հիմքը `4 ֆայլ C- ում:

4. Աջակցում է առաջադրանքներն ու Coprograms- ին: Փոխակրիչները հատուկ ստեղծվում են MK- ի համար `RAM- ի փոքր ծավալը:

5. Հարուստ հետքի հնարավորություններ:

6. Հնարավոր է հետեւել կեռի արտահոսքին:

7. Միաժամանակյա կատարված առաջադրանքների քանակի համար ծրագրային սահմանափակում չկա:

8. Ոչ մի սահմանափակում, առաջադրանքի առաջնահերթությունների քանակի վերաբերյալ:

9. Որոշ առաջադրանքներ կարող են նշանակվել նույն առաջնահերթությունը:

10. Մշակված գործիքներ «Առաջադրանք-առաջադրանք» եւ «Խնդիր-ընդհատում» համաժամացման գործիքներ.

Հերթեր

Երկուական սեմաֆորներ

Հաշիվներ Semaphores

Վերականգնող սեմաֆորներ

Գդալ

11. Mutexes առաջնահերթ ժառանգությամբ:

12. Աջակցություն Cortex-M3- ի հիշողության պաշտպանության մոդուլին

13. Պարտքի տրամադրված է DEMO նախագծերով տարբեր հարթակների եւ կազմողների համար:

14. ԱՆՎԱՐ. Դուք կարող եք օգտագործել նախագծերում, առանց աղբյուրի կոդը բացահայտելու, GPL- ի երկարաձգման լիցենզիայի համաձայն:

15. Վճարովի փաստաթղթեր, բայց այստեղ հասանելի է առցանց:

16. Համատեքստի միացման ժամանակը Quartz- ից 16 MHz- ով կլինի ընդամենը 20,8 մկ: Այնքան անհրաժեշտ է տվյալները պահելու համար Տվյալների կեռը եւ զանգահարեք հետեւյալը: (Հետաքրքիր դիտողություն, եթե այն համեմատեք Pic18XXX- ի հետ, AVR- ի վերահսկիչը ավելի արագ է անում 4 անգամ !!!, ամենայն հավանականությամբ, դա պայմանավորված է կազմողի որակով)

Տեղափոխման բազմամշակումը նշանակում է, որ ցածր գերակայությամբ առաջադրանքը համընկնվում է պատրաստի առաջադրանքի միջոցով `ավելի բարձր գերակայությամբ: Առաջադրանքների միջեւ անցումը տեղի է ունենում հավասար ժամանակի Quanta: Հետեւաբար, նախքան հետախուզական առաջադրանքի կատարումը սկսելը, ժամանակվա ընթացիկ քվանտը պետք է ավարտվի, երբ ցածր առաջնահերթությունը կատարվի:

Այսպիսով, Freertos- ի արձագանքը արտաքին իրադարձությունների վերաբերյալ MultiCtasking- ի ռեժիմում `մեկից ավելի ժամանակացույցի ժամանց չէ Quanta, որը կարող է հստակեցվել պարամետրերում: Լռելյայն, այն հավասար է 1 MS- ին:

Եթե \u200b\u200bդուք պատրաստ եք նույն առաջնահերթությամբ մի քանի առաջադրանքներ կատարելու, ապա այս դեպքում պլանավորողը նրանցից յուրաքանչյուրին հատկացնում է մեկ քվանտով, որից հետո վերահսկողությունը նույն առաջնահերթությամբ է ստանում:

Համագործակցային բազմամշակումը տարբերվում է պլանավորողի տեղաշարժից, անկախորեն չի կարող ընդհատվել ներկայիս առաջադրանքի կատարումը, նույնիսկ ավարտվել է առաջադրանքը կատարելու համար առաջադրանքը: Յուրաքանչյուր առաջադրանք պետք է ինքնուրույն փոխանցի ժամանակացույցի կառավարումը: Այսպիսով, գերակա առաջնահերթ խնդիր է սպասվում, քանի դեռ ցածր առաջնահերթությունը կավարտի իր աշխատանքը եւ տալիս է պլանավորողի կառավարումը: Արտաքին իրադարձության համակարգի ռեակցիայի ժամանակը անորոշ է դառնում եւ կախված է այն բանից, թե որքանով է իրականացվելու ընթացիկ առաջադրանքի առջեւ: Windows 4 OS ընտանիքում կոոպերատիվ բազմաշերտը օգտագործվել է Windows 4 OS ընտանիքում:

Multitasking- ի տեղաշարժը եւ համագործակցային հայեցակարգը համակցված են հիբրիդային բազմամշակման մեջ, երբ մարտահրավերի զանգը տեղի է ունենում ժամանակի յուրաքանչյուր քանակի, բայց ի տարբերություն Multitasking- ի տեղաշարժի, առաջադրանքի մարմնում հնարավորություն ունի: Այս ռեժիմը հատկապես օգտակար է, երբ անհրաժեշտ է նվազեցնել համակարգի արձագանքման ժամանակը `ընդհատելու համար: Ենթադրենք, ներկայումս կատարվում է ցածր գերակայություն առաջադրանքը, եւ բարձր գերակայությունը սպասում է որոշակի ընդհատման: Հաջորդը տեղի է ունենում, բայց ընդհատվող բեռնաթափման դադարեցումից հետո կատարումը վերադառնում է ցածր գերակա առաջնահերթ խնդիր, եւ բարձր առաջնահերթությունը ակնկալում է ընթացիկ ժամանակը քվանտ: Այնուամենայնիվ, եթե ընդհատվող բեռնաթափումը կատարելուց հետո տեղափոխեք ժամանակացույցի վերահսկողությունը, այն կփոխանցի բարձր առաջնահերթ առաջադրանքի վերահսկողությունը, ինչը նվազեցնում է համակարգի արձագանքման ժամանակը, որը կապված է արտաքին իրադարձության հետ:

ԻնչուվրաԶրուցելԲ

Կարող եք սկսել մշակել միկրոկոնտրոլերային սարք, որն աշխատում է Freertos- ը, իր վերջին տարբերակը բեռնելու համար:

Freertos- ի բաշխումը հասանելի է որպես սովորական կամ ինքնալուծիչ ZIP արխիվ: Բաշխումը պարունակում է ուղղակիորեն միջուկի ծածկագիր (որպես բազմաթիվ վերնագիր ֆայլեր եւ աղբյուրի ֆայլեր) եւ ցուցադրական ծրագրեր (յուրաքանչյուր նավահանգստի յուրաքանչյուր զարգացման միջավայրի համար մեկ նախագիծ): Հաջորդը, դուք պետք է բացեք արխիվը զարգացման կայանում ցանկացած հարմար վայրում:

Չնայած արխիվում բավականին մեծ թվով ֆայլեր, դիրեկտորիաների կառուցվածքը իրականում պարզ է: Եթե \u200b\u200bնախատեսում եք 1-3 ճարտարապետության համար սարքել 2-3 ճարտարապետության սարքեր, 1-2 զարգացման միջավայրում, ցուցադրական նախագծերին եւ զարգացման տարբեր միջավայրերին վերաբերող ֆայլերի մեծ մասը անհրաժեշտ չեն:

Գրացուցակի մանրամասն կառուցվածքը տրված է կարկատակի վրա:

Միջուկի ամբողջ աղբյուրի կոդը գտնվում է / աղբյուրի տեղեկատուում:

Բովանդակություն.

1.Tasks.c. - Առաջադրանքի մեխանիզմի իրականացում, ժամանակացույց

2. queue.c. - Գույքի իրականացում

3. list.C. - Սակայն պլանավորողի ներքին կարիքները կարող են օգտագործվել կիրառական ծրագրերում:

4. croutine.c. - Spram- ի իրականացումը (կարող է բացակայել, եթե փոխակրիչները չեն օգտագործվում):

Վերնագրի ֆայլերը, որոնք գտնվում են գրացուցակում Աղբյուր / ներառել:

1. Առաջադրանքներ .H, queue.h, tist.h, croutine.h - Վերնագրի ֆայլերը, համապատասխանաբար, նույն անվանման ծածկագրի ֆայլերի համար:

2. Freertos.h. - Կոնգրումը կազմաձեւելու համար իրականացնում է նախնական առեւտրային հրահանգներ:

3. mpu_wrappers.h. - Պարունակում է գերակշռել ծրագրի միջերեսի (API գործառույթների) գործառույթները Freertos- ը `հիշողության պաշտպանության մոդուլին (MPU) աջակցելու համար:

4. portable.h.-պլապո-կախված պարամետրեր:

5. projdefs.h.-Հժեք համակարգի սահմանումներ

6. սեմֆր. - Սահմանում է API գործառույթները, որոնք աշխատում են սեմաֆորների հետ, որոնք իրականացվում են հերթերի հիման վրա:

7. stackmacros.h. - Պարունակում է մակրոներ `փակուղի արտահոսքը դիտարկելու համար: Յուրաքանչյուր ապարատային պլատֆորմ պահանջում է հիմնական կոդի փոքր մասը, որն իրականացնում է այս պլատֆորմի հետ Freertos- ի փոխազդեցությունը: Ամբողջ պլատֆորմի կախված կոդը գտնվում է ենթադրության մեջ / Աղբյուր / դյուրակիրԱյնտեղ, որտեղ այն համակարգված է, բայց զարգացման միջավայրերը (IAR, GCC եւ այլն) եւ ապարատային պլատֆորմներ (օրինակ, Atmelsam7S64, MSP430F449): Օրինակ, ենթաբաժինը / Աղբյուր / Դյուրակիր / GCC / ATMEGA323 Պարունակում է port.c եւ portmacro.h ֆայլեր, որոնք իրականացնում / վերականգնում են առաջադրանքի համատեքստը, նախաստորագրեք ժամանակաչափը `ժամանակավոր տվյալների բազա ստեղծելու համար, նախաստորագրեք յուրաքանչյուր առաջադրանքի եւ այլ ապարատային կախվածության գործառույթների համար Winavr կազմող (GCC):

Առանձին-առանձին, անհրաժեշտ է ընդգծել ենթահողությունը / Աղբյուր / Դյուրակիր / Memmangորը պարունակում է ֆայլեր heap_l.c, Heap_2.c, Heap_3.CFreertos- ի կարիքների համար 3 \u200b\u200bտարբեր հիշողության բաշխման մեխանիզմներ իրականացնելը, որը մանրամասն նկարագրվելու է ավելի ուշ:

The / Demo Directory- ը պատրաստ է հավաքագրման եւ հավաքման ցուցադրական նախագծերի: Բոլոր ցուցադրական նախագծերի համար ծածկագրի ընդհանուր մասը կարեւորվում է ենթաբաժինում / Demo / Common.

Ձեր նախագծում Freertos- ը օգտագործելու համար դուք պետք է միացնեք միջուկի եւ հարակից վերնագրերի ֆայլերի աղբյուրի կոդը: Կարիք չկա դրանք փոփոխել կամ հասկանալ դրանց իրականացումը:

Օրինակ, եթե նախատեսում եք օգտագործել Port- ը MSP430 միկրոկոնտրոլերների եւ GCC կազմողի համար, ապա նախագիծ ստեղծել, զրոյական » / Աղբյուր / Դյուրակիր / GCC / MSP430_GCC եւ / Աղբյուր / դյուրակիր / Memmang, / Աղբյուրի / դյուրակիր գրացուցակից մնացած բոլոր ենթակետերը անհրաժեշտ չեն եւ հնարավոր է հեռացնել:

Եթե \u200b\u200bնախատեսվում է փոփոխել գոյություն ունեցող ցուցադրական նախագիծը (որն իրականում խորհուրդ է տրվում անել Freertos- ի ուսումնասիրության սկզբում), ապա ձեզ հարկավոր է նաեւ ենթահամակարգի / Դեմո / MSP430_GCC մի քանազոր / Դեմո / ընդհանուր, Մնացած ստորաբաժանում / ցուցադրումն անհրաժեշտ չէ եւ հնարավոր է հեռացնել:

Դիմում ստեղծելիս խորհուրդ է տրվում օգտագործել Կիքիֆիլ: (կամ զարգացման միջավայրի զարգացման ֆայլ) համապատասխան ցուցադրական նախագծից, որպես ելակետ: Խորհուրդ է տրվում վեհաժողովից (կառուցել) ֆայլերը (կառուցել) ֆայլերը / Դեմո գրացուցակից, դրանք փոխարինելով ձեր սեփական, եւ / աղբյուրի տեղեկատուի ֆայլերը անձեռնմխելի են: Նշեք նաեւ վերնագրի ֆայլի մասին Frertosconfig.h.որը տեղակայված է յուրաքանչյուր ցուցադրական նախագծում: FreerTosconfig.h- ը պարունակում է սահմանումներ (#Define), որը թույլ է տալիս Freertos միջուկի կարգավորմանը.

1. Համակարգի գործառույթների մի շարք:

2. Օգտագործելով Spram- ը:

3. Առաջադրանքների եւ շինությունների քանակը

4. Հիշողության չափ (կեռ եւ կույտեր):

5. Ժամացույցի հաճախականության մկան:

6. Կատարման յուրաքանչյուր առաջադրանքի համար հատկացված ժամանակային պլանավորողի գործունեության ժամկետը, որը սովորաբար հավասար է 1 MS- ին: Որոշ համակարգի գործառույթների անջատումը եւ նվազեցնում է առաջնահերթությունների քանակը (նվազեցնում է հիշողության սպառումը):

Freertos բաշխումը ներառված է նաեւ ժամանակացույցից ստացված հետքի տեղեկատվության վերափոխման գործիքներ, տեքստի ձեւով (տեղեկատու / TGSSUN:) եւ լիցենզիայի տեքստը (տեղեկատու / Լիցենզիա:).

Եզրակացություններ

The իկլերի առաջին հոդվածի օգնությամբ ընթերցողը ծանոթացել է Freertos La Microcontrollers- ի գործառնական համակարգին: Ցույց տալով աշխատանքի առանձնահատկություններ: Նկարագրեց Freertos բաշխման բովանդակությունը: Պետք է սկսվի Freertos- ի գործածված սարքի մշակումից հիմնական քայլերը:

Հետեւյալ հրապարակումներում ուշադրություն կդարձվի բազմամշակման, մասնավորապես առաջադրանքների եւ փոխակրիչների մեխանիզմին: Ժամացույցի նմուշը կլինի նմուշ, օգտագործելով Atmel AVR միկրոկոնտրոլներ եւ Winavr Compiler (GCC):

Ես անընդհատ այս հարցը տալիս եմ ձեր հոբբիի ընթացքում, - 16-բիթանոց միկրոկտրոլերի հիման վրա ավտոմատ կառավարման (խելացի տան) տնային համակարգի զարգացում: Ամսուկես ամիս առաջ ես արդեն գրել եմ իմ բլոգում «Միկրոկոնտրոլներս համակարգեր-չիպի \u200b\u200bդեմ» թեմայով: Այնպես որ, ես նորից կգրեմ այդ մասին:

Մասնակիորեն դա հուշում էր Stellaris Launchpad- ի եւ Arduino- ի հայտնվելու պատճառով: Նրանք երկուսն էլ հիմնված են 32-բիթանոց միկրոկոնտոլտների վրա, եւ շատ առումներով շատ նման են: Ես ուսումնասիրեցի ճշգրտումը (DATASHEET) երկուսին, եւ չնայած դրանք պարկեշտորեն տարբեր են գներով, դրանք նախատեսված են մեկ թիրախային լսարանի համար: Ես մտածեցի այն մասին, թե ինչ կարող էի տեղափոխվել MSP430- ով դեպի աստղարան, եւ այն կարող է նույնիսկ տեղափոխվել հիմնովին այլ համակարգի, որպեսզի միկրոկոնտոլիստների փոխարեն օգտագործեք ազնվամորու PI- ի նման մի բան:

Երկուսն էլ, Stellaris Launchpad- ը եւ Arduino- ն են, շատ հզոր են, բայց չեն նախատեսվում իրականացնել Linux- ը: Նրանք գործում են կամ նրանց համար ուղղակիորեն գրված գործադիր կոդով, կամ իրական ժամանակի (RTOS) գործառնական համակարգը գործարկելը, - մինիմալիստական \u200b\u200bՕՀ-ն, արտաքին իրադարձություններին շատ կարճ ժամանակով: Նաեւ երկուսն էլ շատ ավելի բարդ են, քան MSP430- ը կամ 8-բիթանոց AVR- ն:

Մյուս կողմից, իրական կյանքում (արտերկրում), որոնց մեծ մասը ես գիտեմ, որ Linux- ում օգտագործեք ազնվամորի PI կամ այլ ներկառուցված համակարգեր: Միկրոկոնտոլտների օգտագործումը, բավականին հազվադեպ դեպք, որի մեջ ես հանդիպել եմ: Նույնիսկ Արդուինոն, շատ ավելի քիչ սիրված իմ շրջապատում, քան ներկառուցված Linux- ը: Երբ ես դա հասկանում եմ, այդ իսկ պատճառով arduino գնել ինչ-որ մեկին, երբ կարող եք ձեռք բերել ազնվամորու PI, որը կարող է լինել շատ ավելին, եւ արժե նույնը կամ ավելի քիչ: Linux- ի տակ կա հսկայական քանակությամբ պատրաստված ծրագիր, եւ այն կարող է ծրագրավորվել `օգտագործելով պարզ գրված լեզուներ:

Ինձ համար անձամբ, պատճառը, թե ինչու չեմ ուզում օգտագործել Linux- ը, քանի որ ես ամեն օր օգտագործում եմ աշխատանքի մեջ եւ վերադառնում եմ տուն, Linux- ի նման համակարգերում նորից աշխատելու անհրաժեշտությունից հաճույք չեմ զգում: Linux- ի հետ կապված խնդիրներ չունեմ, բայց դա ամենուր շատ է, նա ճնշում է ինձ: Ինձ համար շատ ավելի հետաքրքիր է աշխատել պարզ էլեկտրոնային սարքերի հետ 8/16-բիթանոց միկրոչիպերում:

Այնուամենայնիվ, ես իրականությունից չեմ շեղվում: Եթե \u200b\u200bես ուզում եմ իսկական աշխարհի հետ մնալ նույն ալիքի վրա, ես պետք է օգտագործեմ այն \u200b\u200bգործիքները, որոնք օգտագործվում են իրական աշխարհում: Հակառակ դեպքում, կարծես, շոգեխաշած շարժիչով մեքենա վարելու ցանկություն է, միայն այն պատճառով, որ ներքին այրման շարժիչը չափազանց ծիծաղելի է, ես միշտ օգտագործում եմ այն \u200b\u200bամբողջ ժամանակ: Եթե \u200b\u200bաշխարհի աշխարհը գնում է ավելի առաջադեմ տեխնոլոգիա, ապա հարկավոր է տիրապետել այն, ինձ դուր է գալիս, թե ոչ: Մասնավորապես, եթե ուզում եմ, որ իմ բլոգը հետաքրքրվի մարդկանցով եւ մնա համապատասխան:

Իմ նախագծի մեջ խելացի տուն, ես իսկապես հանդիպեցի այս խնդրի: Ես արդեն պատրաստել եմ տեղական ցանցի վարորդ, MSP430- ի կառավարման համակարգի համար, եւ ամեն ինչ շատ արժանի է թվում: Ըստ էության, ես կարող եմ անել այն ամենը, ինչ ձեզ հարկավոր է ավտոմատացման համակարգի վրա MSP430- ում: Այնուամենայնիվ, ես մտածում եմ, արդյոք ես անում եմ սա: Փորձում եմ, եթե կա պատառաքաղ ապուր, երբ կա գդալ: Միգուցե Linux- ը ավելի պատշաճ համակարգ է: Թույլ տուր բացատրեմ.

Եթե \u200b\u200bդուք կանգ եք առնում եւ նայում ենք ստեղծված իրավիճակին, 2012 թվականի նոյեմբերին տեխնոլոգիական առաջխաղացումների համաձայն: Ես ինքս ինձ հարցնում եմ, միկրոկոնտոլիստներ լավն ու արդիական են եւ արդիական են, համեմատած Linux- ի միջոցով օգտագործվող chip համակարգերի հետ:

Եթե \u200b\u200bդուք նշում եք նախագծերը ներկառուցված համակարգերի վրա, որոնք ինձ մոտ են գալիս գլխում, դա, անօդաչուներ, ռոբոտներ, տան ավտոմատացում, շարժիչների կարգավորիչներ, սենսորներ, ձեռքի ժամացույցներ, 3D տպիչներ եւ այլն: Այս դեպքերում ներկառուցված Linux- ը հարմար է ավելին, քան միկրոկոնտրոլներ: Եվ ինչու:

Կարծում եմ, որ կան երեք իրավիճակներ, երբ Microcontroller- ը լավագույն ընտրությունն է. Որտեղ ակնթարթային (իրական ժամանակում) կարեւոր է իրադարձությունների համար. որտեղ անհրաժեշտ է ծայրաստիճան ցածր էներգիայի սպառում. Եվ որտեղ անհրաժեշտ է հնարավորինս ցածր չիպսեր օգտագործել:

Սկսելու համար էժան չիպերի օգտագործումը, ինձ համար այնքան էլ կարեւոր չէ: Ես զբաղվում եմ իմ հոբբիով ինքս ինձ համար եւ չեմ պատրաստվում երբեւէ արտադրել մրցակցային արտադրանք: Ես պետք չէ մտածել արտադրության տեղափոխման գործարանին, որն օգտագործում է ստրուկ աշխատանքը, որպեսզի ունենա իմ ցանկության աննշան նախագծերի համար մրցակցային գին: Ես ուրախ կլինեի, եթե կարողանայի, մեկ օրից ավելի տախտակ բացել, շնորհիվ իմ կարողությունների:

Օրինակ, խելացի տան նախագծի համար ես կարող եմ զարգացնել, հեռակա վերահսկվող անջատիչ: Այն կարող է միացնել / անջատել լույսը կամ այլ բան: Միեւնույն ժամանակ, ես կարող եմ գնալ տեղական խանութի էլեկտրատեխնիկա եւ գնել նույնը 20 դոլարով, որը արտադրվում է Չինաստանում: Կարող եմ երբեւէ սպանել այս գինը, փորձելով վաճառել ձեր սեփական անջատիչը: Չեմ կարծում, որ դա հնարավոր է:

Եթե \u200b\u200bմտածում եք այդ մասին, դա վերաբերում է նաեւ տնային ավտոմատացման համար անհրաժեշտ մի շարք այլ բաների: Temperature երմաստիճանի տվիչները, ծուխը, շարժումը եւ այլն, ես բավականին ընդունակ եմ նույնը անել, բայց քիչ հավանական է, որ կարողանաք արդյունահանել ֆինանսական օգուտներ: Ով է հոգ տանում գնել նման բաներ 75 դոլարով, երբ նրանք կարող են գտնել դրանք 20 դոլարով տնային ապրանքներում:

Եթե \u200b\u200bմենք անդրադառնանք ձեր հոբբիից ինչ-որ օգուտների արդյունահանման մասին, ավելի լավ է ուշադրություն դարձնել ավելի թանկ եւ բարդ արտադրանքներին: Օրինակ, տան ավտոմատացման վերահսկիչ կամ ջերմակարգ, սովորաբար արժեն ավելի քան 100 դոլար եւ ավելի շատ ազատություն թողնում անհատական \u200b\u200bստեղծագործության համար, կարող եք ստեղծել մեկը, վաճառել ձեր հարեւաններին եւ նույնիսկ դրա վրա ինչ-որ բան վաստակել:

Բայց վերջնական սարքի ավելի շահավետ գնի հասնելու ցանկությունը չի նշանակում, որ դուք պետք է օգտագործեք Երկրի ամենաէժան մանրադիտակը: Իրականում դա վատ գաղափար է, որովհետեւ Զարգացման ժամանակը նույն ծախսն է, ինչպես նաեւ օգտագործված մասերը: Գուցե միկրոկոնտրոլլերը էժան է, բայց ավելի շատ ժամանակ է պահանջում կառավարման կոդ գրելու համար: Ժամանակը փող է, եւ եթե ավելի արագ եք աշխատում, ժամանակ կունենաք ավելին հասնելու համար:

Այս բոլոր արտացոլումները, ամփոփեք ինձ, որ ավելի ձեռնտու է ավելի լավ տնային համակարգ մշակել Linux- ում, քան մանրադիտյուններ, չնայած իմ անձնական նախասիրություններին, Linux- ը ավելի շատ է ձանձրանում):

Եթե \u200b\u200bվերադառնաք թեմայի թեմային, միկրոկոնտրոլների գինը, դա կարող է լինել կարեւոր գործոն `մեծ կորպորացիաների համար, որոնք պատրաստվում են ազատ արձակել նոր արտադրանք, բայց անհատական \u200b\u200bմակարդակով զբաղվել եք բիզնեսի ոճով Այլեւս այնքան էլ նշանակալի չէ, որ զարգացման արագ ժամանակը, ավելի կարեւոր, քան բաղադրիչների արժեքը:

Մյուս կողմից, միկրոկոնտրոլներները կարող են լինել լավագույն ընտրությունը, քան համակարգը `չիպը, երբ էներգիայի ցածր սպառումը անհրաժեշտ է: Նման համակարգերում կա երկու միավոր, որի դիագրամի ցածր սպառումը, շահագործման ընթացքում եւ կարճաժամկետ ժամանակ: Փոքր սարքերի համար մարտկոցը խնայելու բնորոշ միջոց է ինքնազբաղումը (անջատեք): Երբ համակարգիչը անջատեք Linux- ում, աշխատանքի վերադառնալու համար անհրաժեշտ է արժանապատիվ ժամանակ, երբեմն մինչեւ մի քանի րոպե: Այս անգամ ընդունելի չէ ներկառուցված համակարգերի համար:

Եթե \u200b\u200bնման միկրոկոնտրոլեր եք վերցնում որպես MSP430, ապա այն կարող է տարիներ աշխատել մեկ մարտկոցից: Stellaris Launchpad- ը եւ Arduino- ն, սկզբունքորեն, նույնն են այդպիսի, նրանք ավելի շատ էներգիա են սպառում, քան MSP430- ը, բայց շատ քիչ, համեմատած ազնվամորյական Pi- ի հետ: Նաեւ, MSP430, այն կարող է անմիջապես սկսվել, անջատումից հետո:

Այսպիսով, ես բացարձակապես վստահ եմ, որ բոլոր իրավիճակներում, որտեղ անհրաժեշտ են ցածր լարման գործողություններ, իմաստ ունի օգտագործել մանրադիտակներ: Կան մեծ թվով բազմազան սարքեր, որոնք աշխատում են մարտկոցների վրա, որտեղ ծագում է այդպիսի անհրաժեշտությունը:

Երրորդ դեպքում, ինչպես ասացի, միկրոկոնտրոլերի օգտագործումը ավելի իմաստալից է, քան Linux- ը, ակնթարթային արձագանքը (Realtime պատասխան): Նկատի ունեմ 3D տպիչների եւ CNC մեքենաների նման սարքեր, ես գիտեմ, թե ինչի մասին եմ խոսում, քանի որ շատ ժամանակ եմ նվիրել սովորելու: Բնության միջոցով նրանք պահանջում են բարձր ճշգրտություն աշխատանքի մեջ, ինչը մի փոքր պակաս է, քան լիովին կախված է հրամանների պատասխանին:

Օրինակ, եթե ունեք մի շրջանաձեւ սղոց, որը այս պահին կտրում է մի կտոր փայտ կամ մետաղ, ապա չեք կարող դադարեցնել գործընթացը, այն պատճառով, որ այն վերահսկում է դրանից սկավառակ կամ նույն երակում այլ բան: Յուրաքանչյուր ոք, ով համակարգիչ էր օգտագործում, ծանոթ է սովորական աշխատանքի ընթացքում պարբերաբար բխող պատահական շարժակազմին: Եվ հիմա պատկերացրեք, որ դուք ունեք մեծ հորատման մեքենա, համակարգիչով աշխատելով, որը հանկարծ սկսում է ստուգել գործողության ընթացքում Windows- ի թարմացումները, եւ փորել, որ այն արժե այն սեղանի շուրջ, որովհետեւ արժե այն Համակարգիչը կորցրեց վերահսկողությունը դրա վրա:

ԱՀ-ները եւ չիպային համակարգերը նպատակ չունեն իրական ժամանակում աշխատել, գոնե Windows- ի հետ, նույնիսկ Linux- ի հետ, բայց ինքնուրույն նրանք փորձում են ավելի մոտենալ դրան: Որպես օրինակ, Linux միջուկի համար իրական ժամանակի կարկատ կա, եւ այս տեսակի համար ստեղծված հատուկ CNC ծրագիր: Ես բավարար չեմ այս patch linux- ի հետ, եւ չգիտեմ, թե որքան ճկուն է դա, իրական ժամանակի իրադարձությունները ավարտելու համար: Բայց ես կարծում եմ, որ սա միայն հնարավոր այլընտրանք է, քանի որ Linux- ը, ինչի վրա ընկել են կտորներ, երբեք չեն ծեծի այս ոլորտում միկրոկոնտրոլներ, նրանց ընդհատման համակարգերի պատճառով:
Եզրափակելով, ես ուզում եմ ասել, որ ես շատ ժամանակ եմ ծախսել, փորձելով գտնել այնպիսի ոլորտներ, որտեղ իմ նախագծերում մանրադիտակատերերի օգտագործումը առավելություն ունի: Եվ ամեն ինչ կարծես համաշխարհային տիրապետության դարաշրջան է Ազնվամորու PI եւ Beaglebones: Սա DIY համայնքում առկա իրավիճակն է: Շատ դեպքերում, ավելի արագ եւ ավելի հեշտ է զարգանալ այս համակարգերի վրա, ուստի այն հաճախ լավագույն ընտրությունն է նախագծերի մեծամասնության համար:

Միկրոկոնտոլտների համար մնում են միայն ցածր լարման սարքեր, իրական ժամանակում գործողություններ եւ ցածր ծախսերի սարքեր:

Դա կախված չէ այն փաստից, որ միկրոկոնտոլիստները կարող են ավելի զվարճալի թվալ, քան համակարգիչը: Սա այն է, ինչ պետք է գա մրցելու:

Թարգմանություն, անգլերեն բնօրինակ գրառումից