AVR LIBC Reference Manual Vrae Hoe om 'n rou beeld binêre voeg by uitset Die GNU linkerkant AVR-ld kan nie binêre data direk te hanteer Linker. Maar Theres 'n metgesel hulpmiddel genaamd AVR-objcopy. Dit is reeds bekend uit die uitset kant: sy gebruik om die inhoud van die gekoppelde ELF lêer te onttrek in 'n Intel Hex vrag lêer. AVR-objcopy kan 'n skuif aanvaarde voorwerp lêer van arbitrêre binêre insette te skep, soos hierdie 'n lêer met die naam foo. o. sal skep met die inhoud van foo. bin. Die inhoud sal die standaard artikel. data, en twee simbole sal geskep word met die naam binaryfoobinstart en binaryfoobinend. Hierdie simbole kan verwys word na in 'n C bron om toegang tot hierdie data. As die doel is om die data na ROM (soortgelyk aan die PROGMEM kenmerk in C bron-kode gebruik het) flits, die afdelings moet herdoop word terwyl die kopiëring, en sy het ook nuttig om die artikel vlae ingestel: Let daarop dat al hierdie kon word gerieflik bedraad in 'n makefile, sodat wanneer foo. bin veranderinge, sal dit die ontspanning van foo. o. aktiveer en 'n daaropvolgende Herskakel van die finale ELF lêer. Hier is 'n twee Make File fragmente wat verskaf reëls om 'n txt lêer te skakel na 'n voorwerp lêer, en om 'n Bin lêer om te skakel na 'n voorwerp lêer: AVR LIBC Reference Manual n eenvoudige projek ontwikkelingsliggaam Intel Hex lêers Ons het 'n tweeledige van die aansoek, maar hoe kry ons dit in die verwerker die meeste (indien nie almal nie) programmeerders sal nie aanvaar 'n GNU uitvoerbare as 'n inset lêer, sodat ons nodig het om 'n bietjie meer verwerking te doen. Die volgende stap is om gedeeltes van die binêre onttrek en stoor die inligting in. hex lêers. Die GNU nut wat dit doen is AVR-objcopy genoem. Die inhoud ROM kan getrek word uit ons projekte binêre en in die lêer demo. hex met behulp van die volgende opdrag: AVR-objcopy - J. text - J. data - O ihex demo. elf demo. hex Die gevolglike demo. hex lêer bevat : 1000000020E0A0E6B0E001C01D92A336B207E1F700: 100010001F920F920FB60F9211242F938F939F93DD: 1000200080916200882301F1813081F48091600029: 100030009091610001979093610080936000009718: 1000400049F41092620080E090E004C0809160006A: 10005000909161009BBD8ABD9F918F912F910F90D0: 100060000FBE0F901F9018958091600090916100D5: 10007000019690936100809360008F3F23E0920788: 1000800049F781E0809362008FEF93E0E3CF83E84C: 100090008FBD8EB581608EBD1BBC1ABC82E087BB54: 1000A00084E089BF7894089583E88FBD8EB5816020: 1000B0008EBD1BBC1ABC82E087BB84E089BF7894EC: 1000C00085B7806885BF889585B78F7785BFF8CF5E: 0800D000F89400C0F894FFCF82: 00000001FF die - J opsie dui daarop dat ons wil hê dat die inligting van die. text en. data segment onttrek. As ons die EEPROM segment spesifiseer, kan ons 'n. hex lêer wat gebruik kan word om die EEPROM program genereer: AVR-objcopy - J. eeprom change parameters-afdeling-LMA. eeprom0 - O ihex demo. elf demoeeprom. hex Daar is geen demoeeprom. hex lêer geskryf, as die lêer leë sou wees. Begin met weergawe 2.17 van die GNU binutils, die AVR-objcopy opdrag wat gebruik word om die leë EEPROM lêers te genereer aborteer nou as gevolg van die leë insette artikel. eeprom, sodat hierdie leë lêers is nie gegenereer. Dit dui ook 'n fout om die Make File wat daar sal gevang word, en maak dit 'n boodskap oor die leë lêer nie generated. Unusual Opsie geleentheid Atmel Volgens Options en wisselvalligheid te druk. aandele van Atmel Corporation (NASDAQ: ATML) het buitengewoon hoë opsies aktiwiteit op Woensdag. Opmerklik dat die September 8 oproepe verhandel 14238 kontrakte teenoor slegs 494 oop rente, met 9 Augustus call opsies ook sien bogemiddelde volume sowel. Benewens die verhoogde volume, die geïmpliseerde wisselvalligheid op die September 8 oproepe opgestaan, die beweging van 52,97 persent op Tuesday39s naby 59,07 persent op die noue Woensdag 'n styging van byna 11,5 persent. Dit stel 'n bedekte oproep geleentheid, die koop van aandele van Atmel en verkoop van 'n September 8 oproep vir elke 100 aandele gekoop. Opsies en wisselvalligheid opgemerk hierdie vang 'n 1,63 persent rand en posisies bullishly saam met die groot oproep koper. Die September 8 oproepe het 'n delta van 57, terwyl die bedekte oproep posisie het 'n effens minder lomp delta van 43. Atmel reeds verdienste berig op 28 Julie, met die volgende verdienste nie as gevolg tot middel Oktober. Aandele gesluit Woensdag om 8.13 tot 0.22, met die September 8 oproepe sluiting van 0,18 by 0,68. Openbaarmaking: Die skrywer het geen plek in Atmel ten tye van die publikasie. kopieer 2016 Benzinga. Benzinga verskaf nie belegging advies. Alle regte voorbehou. Verwante artikels (ATML) Sluit aan by e-pos kennisgewings op ATML CRM, TWTR. Exclusive: Salesforce039s Grootste Holder wil nie maatskappy Bu. GRUB, NVFY. 15 Aandeel beweeg in Tuesday039s Pre-mark Sessie GDXJ, JNUG. Gold039s selloff versnel, maar nog steeds een van 2. TWLO, NTNX. Is Nutanix Die Nuwe Twilio Jone, ASBO. 15 Aandeel beweeg in Woensdag. CRBP. Corbus Pharmaceuticals Coul. FB, eBay. Die regering of Facebook Kan lees jou gesprekke in FB boodskapper. XLF, PF. Fast Geld Half Time Report Final Trades Vir 5 Oktober YUM. Yum039s Q3 Results op die dek: Wat beteken die Street Dink DFJ. Tyd vir die Topix en relevante ETF CS. Laaste bank bedrog: Credit Suisse moet betaal 90 miljoen. ACC, EDR. Onlangse Onderprestasie Leaves Onderwys Realty T. Benzinga is 'n vinnig groeiende, dinamiese en innoverende finansiële media outlet dat beleggers bemagtig met 'n hoë-gehalte, unieke inhoud. Gewilde kanale gereedskap amp funksies oor Benzinga Benzinga Vennote 1 (877) 440-9464 (ZING) kopieer kopiereg Benzinga Roundy039s Beats Q2 Views, aandele oplewing A Jobs Economist reageer op William Dudley039s kommer oor die Labor ForceFoster en Kinship Care Onderwys Webwerf Welkom Ons is hoogs toegewy aan die vergadering van die opvoedkundige behoeftes van Foster / verwantskap jeug, pleegouers, aanneemouers, relatiewe sorg, nie-relatiewe uitgebreide familie sorg en wettige voogde. Ons doelwit is om sorg motiverende en vindingryke gebeure, seminare en werkswinkels wat hulle beter toe te rus om 'n positiewe verskil in die lewens van ons jeug te maak bied. Ons primêre doel is om te produseer die 4 Es: vreugde, doeltreffende CareProviders as positiewe voorbeelde opreg dien, Dr. Dione Washington, FKCE Direkteur Programme Workshop Bylaes kopieer 2016 Los Angeles Handel-Tegniese Kollege Alle regte voorbehou. 400 West WASHINGTON BLVD, Los Angeles, CA 90015 Tel (213) 763-7000 8226 Faks (213) 763-5393Imran Nazar. Binêre Gekodeerde Desimaal Optel op Atmel AVR Die Atmel AVR reeks mikrobeheerders kan gebruik word in 'n wye verskeidenheid van programme, vanaf radio regdeur tot inkjetprinters, maar 'n gewilde aansoek in entoesias projekte is vir digitale horlosies en tellers. Daar is twee hoof dele aan enige klok of toonbank program: 'n stuk kode vir die interne toonbank te inkrementeer, en nog 'n stukkie van die kode te formateer en uitset die toonbank op 'n vertoning. 'N Probleem ontstaan waar hierdie twee gedeeltes van kode nodig om te gebruik. As een van hierdie take minder belasting word gemaak vir die mikrobeheerder, is die ander meer ingewikkeld as gevolg gemaak, is daar twee heersende denkrigtings oor hoe om hierdie interaksie te bereik. Makliker om te bereken: 'n Eenvoudige binêre getal gehou kan word deur die kontroles, wat baie maklik om te inkrementeer. Dit dwing die vertoning-kode vir iteratief verdeel die getal wat deur tien, ten einde die syfers te pak vir mekaar. Makliker om te vertoon: 'n volgepakte binêre-gekodeerde desimale (BCD) getal kan plaas gebruik word om die toonbank hierdie vergemaklik die vertoning logika hou, maar die verhoog die aantal vereis 'n aanpassing proses uit te voer ten einde die BCD segmente korrek belyn. die gebruik van 'n BCD getal na die toonbank hou: Hierdie artikel sal die implikasies van die keuse van die tweede metode ondersoek. Verpak BCD syfers Die konsep agter BCD is 'n eenvoudige een: in plaas van die gebruik van 'n greep op enige waarde tussen 0 en 255 verteenwoordig, is 'n greep wat gebruik word om die desimale syfers verteenwoordig slegs: 0 tot 9. Dit maak voorsiening vir elke segment van 'n meervoudige syfer vertoning direk word gekoppel aan 'n greep in die getal te wys, wat grootliks vereenvoudig die logika agter wat die getal. Die nadeel van die gebruik van 'n volledige greep aan elke syfer verteenwoordig die afval wat geproduseer word: meer as 95 van die bruikbare reeks getalle in 'n greep verloor, en 'n groot aantal grepe moet gestoor word vir 'n aantal beduidende grootte. In 'n mikrobeheerder omgewing, waar geheue spasie is dikwels op so 'n premie wat 'n ekstra byte is betekenisvol, hierdie vermorsing is eenvoudig onhoudbaar. 'N Alternatiewe skema is om elke nybble gebruik van 'n greep op 'n BCD syfer stoor: op hierdie wyse, kan twee syfers gestoor word in 'n greep, die verhoging van die omvang van waardes vir die stoor tienvoudige. Die kode wat nodig is om syfers te trek vir die vertoning is steeds baie eenvoudig, aangesien eenvoudige Boole bedrywighede die vereiste resultaat sal oplewer. 'N volgepakte BCD getal gehou kan word in die helfte van die ruimte van die ekwivalent full-BCD waarde, en is 'n lewensvatbare kompromie tussen die volle omvang van die binêre getalle en die gemak van die vertoning van full-BCD. Benewens hierdie, kan verpak BCD (hierna bloot BCD) trivially word gekonseptualiseer deur omskakeling na heksadesimale: as 'n voorbeeld, die BCD waarde 0x93 verteenwoordig desimale 93. BCD Daarbenewens: die probleem Gebruik BCD om 'n desimale getal te vertoon vereenvoudig die vertoning logika baie in vergelyking met die alternatiewe, maar 'n probleem ontstaan wanneer berekeninge gedoen moet word oor die getalle. A mikrobeheerder, baie soos enige ander rekenaar van die moderne era, is 'n binêre masjien met 'n binêre rekenkundige eenheid: dit het geen begrip van BCD, en sal pligsgetrou te behandel elke nommer in dit kom as 'n gewone binêre getal. Voorbeeld toevoegings van BCD getalle 0x15 0x03 0x18 0x72 0x07 0x79 0x38 0x02 0x3A Dit is in toevoegings wat 'n dra tussen syfers wat die probleem blyk te veroorsaak. In die voorbeeld hierbo, moet die BCD getalle 0x38 en 0x02 voeg tot 0x40. maar die byvoeging het in plaas bedryf op die vlakte getalle en vervaardig die verkeerde antwoord. Wat nodig is, is 'n metode van die aanpassing van die waarde nadat Daarbenewens om rekenskap te gee van die feit dat die waardes bedryf word oor die volgende bewys BCD. Die Intel IA-32-reeks van mikroverwerkers bevat so 'n metode as deel van die basis stel instruksies: Desimale Eers nadat byvoeging (DAA). As hierdie opdrag is uitgevoer nadat 'n toevoeging, sal die gestoor in die akkumulator gevolg word aangepas. DAA gebruik op Intel x86 mov al, 38H voeg al, 03u Op hierdie punt, al 0x3B DAA al 0x41 Die Atmel AVR nie die geval bevat so 'n gerieflike opdrag as DAA, maar die algoritme agter die DAA instruksie gedokumenteer word as deel van die Intel IA - 32 Verwysing handleiding, en is eenvoudig beide om te verstaan en om weer te implementeer. Die desimale aanpassing algoritme DAA sal 'n BCD waarde wat 'n dra moes voorkom tussen syfers aan te pas. Daar is twee gevalle waar dit geld: BCD dra: Dit kom voor in 'n situasie soortgelyk aan die een hierbo uiteengesit, waar 'n resultaat is te groot om te pas in 'n BCD syfer maar is nog steeds groot genoeg vir 'n binêre nybble. Nagaan hiervoor is eenvoudig: As die nybble het 'n waarde van meer as 9, het BCD dra plaasgevind. Binêre dra: Dit sal gebeur as 'n BCD syfer Daarbenewens gevolg is nie net groter as 'n BCD syfer, maar groter as 15: die nybble met die BCD syfer sal self dra, en eindig met 'n waarde laer as 9. Uitslae van hierdie tipe sou nie gevang word deur die tjek vir waardes asseblief 9. die meeste verwerker argitekture te handhaaf 'n status vlag wat na wanneer 'n greep verby sy maksimum waarde gedra het baie platforms ook in stand te hou 'n half-oordrag vlag, wat bo toe die laer nybble van 'n byte dra in die boonste nybble. Die half-oordrag vlag sal deur 'n BCD Daarbenewens dat 'n binêre dra in die laer syfer veroorsaak word gestel, sodat die nagaan vir hierdie sal die ander helfte van die DAA tjek te bevredig. As die DAA tjek 'n syfer wat moet pas bevind, die oplossing is eenvoudig: 'n verdere toevoeging op die nybble betrokke. Aanpassing van 'n nybble 0x08 0x03 0x0B Moet 0x11 0x09 0x05 0x0E Moet 0x14 0x09 0x08 0x11 Moet 0x17 In elke geval, die waarde is ses weg van waar dit moet wees, sodat die aanpassing voeg ses ter waarde terug in BCD bring. Die toepassing van hierdie proses om beide nybbles lewer die finale DAA algoritme. 2-syfer BCD desimale aanpassing ná Daarbenewens OLDvalue Waarde OLDcarry Carry van byvoeging Check laer nybble AS (Half-voer deur Daarbenewens stel) OR (Laer nybble van Waarde GT 9) ADD 6 tot Waarde FI Check boonste nybble Bo nybble sal wees oor 9 As oorspronklike waarde was oor 0x99 aS (OLDcarry) OR (OLDvalue GT 0x99) ADD 0x60 tot waarde Carry 1 BCD waarde dra plaasgevind NÓG Carry 0 FI die DAA algoithm stel die oordrag vlag gebaseer op die vraag of die boonste nybble oorstroom dit laat DAA om gebruik te word op BCD waardes oor verskeie grepe, deur die gebruik van toevoeging-met-voer op enige hoër denominasies. Implementering DAA op AVR vertaling DAA van die algoritme hierbo resultate in die volgende AVR-kode uiteengesit. AVR implementering van DAA Parameters: R16 waarde om opbrengste te pas: R16 aangepaste waarde Carry vlag stel as aanpassing BCD veroorsaak voer DAA: stoot R16 stoot R17 stoot R18 stoot R19 stoot R16 mov R17, R16 mov R18, R16 in R19, SREG Andi R19, (1 ltlt SREGC) GLS brhs DAAadjlo Andi R17, 0x0F VPI R17, 10 brlo DAAhi DAAadjlo: ldi R17, 6 byvoeging R16, R17 DAAhi: TST R19 brne DAAadjhi pop R17 VPI R17, 0x9A brlo DAAnadjhi DAAadjhi: ldi R17, 0x60 R16 voeg , R17 sek rjmp DAAend DAAnadjhi: GLS DAAend: Pop R19 pop R18 pop R17 pop R16 ret Gebruik van die DAA roetine vir 'n twee-byte BCD waarde gestoor in SRAM, sal werk soos volg: Oproep DAA oor twee BCD grepe BCD 57 Voeg by die waarde gestoor op SRAM: 0x100 ldi XL, 0x00 ldi xh, 0x01 Lees in 'n lae byte, voeg 57 BCD, en winkel ld R16, x ldi R17, 0x57 R16 voeg, R17 noem DAA ST x, R16 Lees in 'n hoë byte voeg voer van lae byte, en winkel ld R16, x CLR R17 ADC R16, R17 noem DAA ST x, R16 Ander desimale aanpassing roetines Die Intel IA-32 opdrag ook 'bevat 'n roetine vir desimale aanpassing ná aftrekking, wat gebruik word in 'n effens ander wyse wat hierbo uiteengesit. Ontwikkeling van so 'n roetine vir AVR is buite die bestek van hierdie artikel nie, maar kan gedoen word in 'n soortgelyke trant na DAA deur te trek die algoritme van die IA-32 Verwysing handleiding. As hierdie roetine nuttig bewys, of as jy hulle raakloop enige foute met die werking daarvan, voel asseblief vry om my te laat weet. Imran Nazar lttfimrannazar GT, Desember 2009. Kode vrygestel in die publieke domein. Artikel gedateer: 19 Desember 2009 Bestuur deur Imran Nazar Ltd, in die Verenigde Koninkryk (07698370) geregistreer is. Inhoud kopiereg Imran Nazar, 2005-2014. Ontwerp en beelde kopiereg Imran Nazar, 2008-2011 Perkament gebruik lisensie van sxc.
No comments:
Post a Comment