Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

C++ mikroprotsessoril?

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    C++ mikroprotsessoril?

    Kes programmeerib mikrokontrollereid keeles C++, käsi püsti

    P.S. pealkiri läks valesti; silmas oli peetud ikka mikrokontrollerit.
    If you think education is expensive, try ignorance.

    #2
    Vs: C++ mikroprotsessoril?

    CC=C++? kui siis mina, mis vahe on yldse C ja C++
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    Comment


      #3
      Vs: C++ mikroprotsessoril?

      Esmalt postitatud murphy poolt
      CC=C++? kui siis mina, mis vahe on yldse C ja C++
      nagu mu auväärt progemisõps tavatseb pikalt välja öelda: C++ on objektorienteeritud.
      Erilahendused.
      PS või mail.

      Comment


        #4
        Vs: C++ mikroprotsessoril?

        C++ on edasiarendus C-st, mis peegeldub ka käsiraamatu mahu 10-kordses suurenemises.

        Küsimus oli ajendatud järgmistest tähelepanekutest:
        1. Mikrokontrollerite programmeerijad kasutavad valdavalt C-d.
        2. Olen kirjutanud C++'i tülgastumiseni ja suudan selles teha töökindlaid programme mõistliku ajaga. Prooviks lahendades täpselt samu asju C-s läks 2x rohkem aega ja programmid olid 2x bugisemad. (ei maksa sellest järeldada, et C++ on võluvahend -- vahe tuleb sisse alates mittetriviaalsetest programmidest).
        3. Suures osas tänu GNU CC-le on enam-vähem mõistlik C++ kompilaator saadaval ka enamusele mikrokontrolleritest.
        If you think education is expensive, try ignorance.

        Comment


          #5
          Vs: C++ mikroprotsessoril?

          _Tehniliselt_ on C++ ja C vahe väike. Piltlikult saad sa struct-i sisse toppida pointerid funktsioonidele ja ongi kõik. Noh, natuke kellasid vilesid ka. Ka C keeles saab C++ kirjutada, kui tahtmist on. Mikrokontrolleri probla on pigem selles, et kood asub teises aadressiruumis (klassikalisel mikrokontral) ja seetõttu on unifitseerimine kergelt kunstlik ja kindlasti on C++ kompilaator kergelt nuditum kui PC peal.

          Põhimõtteliselt - ei näe probleemi, eriti kui jutt ARM platvormist. Ja teisest küljest - kui oled harjunud C++ tegema ja ohvriks on ainult C kompilaatoriga kontra - siis saab veidi mitte-ordotoksete meetodidega ka C - s objektorienteeritud koodi teha.

          Comment


            #6
            Vs: C++ mikroprotsessoril?

            Mina olen mikrokontrollereid programmeerinud AINULT C++-is! Lugu nimelt selline, et kui hakkasin mikrokontroleritega tegelema, siis tutvustati mulle http://sourceforge.net/projects/avr-cpp-lib/ aadressil asuvat Atmeli 8-bitiste AVR mikrokontrollerite programmeerimiseks mõeldud C++ teeki.

            Teisi mikrokontrollereid pole ma jõudnud veel programmeerida, aga olen näinud, et nii mõnelgi mikrokontrolleril on see võimalus olemas.

            Comment


              #7
              Vs: C++ mikroprotsessoril?

              Täpsustan: objektorienteeritusele lisaks on:
              * nimeruumid,
              * mallid,
              * konstruktorite automaatne väljakutsumine skoobist väljumisel,
              * ülelaetavad operaatorid (indekseerimine, funktsiooniväljakutse, jne.),
              * erindid.

              C++'i kirjutamisega keeles C on aga lugu järgmine: Esimeste C++ kompilaatorite, AT&T-s kirjutatute, väljundiks oligi C kood (Cfront). Arendamine lõpetati 1990-te alguses, kuna erindid osutusid üle jõu käivaks pähkliks.

              Teemasse tagasi, endiselt tahan näha ülestõstetud käsi Lihtsalt on huvi ja ei midagi muud.
              If you think education is expensive, try ignorance.

              Comment


                #8
                Vs: C++ mikroprotsessoril?

                Üks juba olemas, tubli
                If you think education is expensive, try ignorance.

                Comment


                  #9
                  Vs: C++ mikroprotsessoril?

                  Njh see on sama mis assembler ja LabView. Esimesega kirjutatud kood on sigakiire ja võtab vähe reusrssi aga kirjutamine võtab palju aega. Viimasega kirjutatud kood muneb nii et vähe pole ja resurssi sööb ka looma moodi plussiks aga võimalus kood valmis teha kiirelt. See on kasutaja ülesanne leida balans raua hinna ja töö hulga vahel.
                  Libraryd kirjutan ise kui sisse ehitatud asjad ei tööta. Viimane katse kasutada gcc studio.c faili lõppes prose kylmamisega. Üldiselt tekkis mõte et võiks siia foormuisse teha koha kuhu saaks riputada erinevaid C librareid, kuna C on portable siis pole prose oluline. Ainuke et iga kasutaja peab vastavalt oma prosele defined ringi kirjutama(kui on rauaga suhtlev asi). Listiks siia vähe libe mida endal pakkuda.
                  Conv_Lib.c:
                  char *WordToStr (unsigned short int number); Teeb 16 bitti sõna ascii stringiks dec väärtusena
                  char *LongToStr (unsigned long number); Teeb 32 bitti sõna ascii stringiks dec väärtusena
                  char *ByteToHStr (unsigned char number); Teeb 8 bitti sõna ascii stringiks hex väärtusena
                  char *WordToHStr (unsigned short int number);Teeb 16 bitti sõna ascii stringiks hex väärtusena
                  char *LongToHStr (unsigned long number);Teeb 32 bitti sõna ascii stringiks hex väärtusena
                  unsigned char HStringToByte (unsigned char mark); Teeb hex stringi 8 bitti väärtuseks
                  unsigned long StringToByte (char *data); teeb dec stringi 32 bitti väärtuseks

                  Texst_Lib.c
                  unsigned char *Extract_Data_From_String(unsigned char *Inpu, unsigned char String_Nr,unsigned char Separator); Eraldab yhe jupi stringist, separaator on eraldaja selles, sring nr ytleb mitmes string separaatoriga eraldades. Kasutusel kettalt conf failide lugemisel.

                  void Remove_Spaces(unsigned char *strin); Eemaldab stringist kõik tühkiud.
                  unsigned char Mach_String(unsigned char *string1, unsigned char *string2); võrdelb 2 stringi kui võrdne tagastab 255 kui ei ole siis 0. Vajalik sest teatavasti niisama võrreldes võrreldakse ainult pointereid.

                  Need siis portable asjad, veel terve posu asju mida tuleks natuke muuta.
                  Kes mingi asja kohta kogu koodi tahab siis PS ja meil, saadan. Siia panna oleks liiga suur.
                  Modelleerimises ja tootmises kehtivad:
                  1. Avariikindel vooluring lühistab kõik teised.
                  2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

                  Comment


                    #10
                    Vs: C++ mikroprotsessoril?

                    Teekide jaoks ehk on parem SourceForge (http://sourceforge.net/)? Neil on kogu vajalik infrastruktuur tööks välja pakkuda...

                    Muide, C on alamhulk C++'ist ja seega on pigem programmeerijast kinni. Kui huvi on, võin pikemalt seletada.
                    If you think education is expensive, try ignorance.

                    Comment


                      #11
                      Vs: C++ mikroprotsessoril?

                      Peaks lisama, et C ja C++ vastandamine kiiruse põhjal ei ole alati õige. Kuna GCC keskendub AVR-i puhul (nagu ka paljudel muudel juhtudel) peamiselt -O2-le, siis oleme ka meie teinud nii, et suurem jagu koodi lihtsustuks -O2 või Os parameetriga märgatavalt. Näiteks võib C++ objekt, kus on sees tsükkel, lihtsustuda ÜHEKS assembleri käsuks, kui tema sisu on ainult ühe käsu täitmine. C++ teeki kirjutades vaatame alati koodi suurust. STL-i sarnased mugandused ei tule mikrokontrolleri jaoks progedes arvesse, seega oleme teinud nii, et mida rohkem c++ koodi sa kirjtad, seda rohkem koodi välja optimeeritakse. Seega lõppkokkuvõttes ei saa kirjutada, et C++ on C-ga võrreldes sigaaeglane, sest ka C++ on võimalik kirjutada nii, et see taandub tavajuhtudel C lihtsusele.

                      Meie põhieesmärk AVR Lib C++ kirjutamisel ongi, et selle abil saaks kirjutada VÄHEMALT sama efektiivset koodi kui puhtas C-s, kusjuures GCC teeb väga suuri optimiseerimisi. Me üritame teha teeki, mis oleks kasutatav kõigi Atmeli 8-bitiste AVR mikrokontrollerite programmeerimisel. Selle abil näiteks ise suutsin atmega128 pealt atmega8 peale portida koodi vähem kui tunniga.

                      Nüüd oleksingi väga huvitatud projektidest teiste mikrokontrollerite jaoks. Konkreetselt selles teemas kaasa rääkimiseks tegin ka kasutajakonto, seega rääkige ausalt, kes on kus C++ progenud.

                      Razz

                      Comment


                        #12
                        Vs: C++ mikroprotsessoril?

                        ATmega16 peal polariseeritud valgusallika kontroller, mis ei loe, sest enamuse ajast oli see projekt keeles "C".

                        AVR32 peal (EVK1100, kiip AT32UC3A0512) piiratud funktsionaalsusega FAT16 teek, SPI kaamera liides loodetavasti tulekul.
                        If you think education is expensive, try ignorance.

                        Comment


                          #13
                          Vs: C++ mikroprotsessoril?

                          kiiruse ja mälu probleeme ei teki kuni püsitakse POD ( sisuliselt C kompatiibluse) raames. kui läheb konstruktori/destruktori väljakutsumiseks ja VMT loomiseks, siis mikrokontroller jääb kiiresti kitsaks , sest VMT istub RAMis ja aeglaseks. välise SDRAMiga protsessori puhul pole ehk eriti vahet.
                          see et kasutan struct'e ja array'd ei tee must C++ progejat.

                          Comment


                            #14
                            Vs: C++ mikroprotsessoril?

                            Kas tohin märkida, et ei pea VMT-d kasutama, peale päritavuse (mida reaalses elus on vaja märksa vähem, kui õpiku vastava peatüki mahu järgi aimata võib) on veel hulka võimalusi, millele C-s analoog puudub.
                            If you think education is expensive, try ignorance.

                            Comment

                            Working...
                            X