Kompjuterë dhe pajisje moderne



Në projektin tim po përdor mikrokontrolluesin STM32F103C8 dhe kornizën stm32duino. Ky klon Arduino ofron një ngarkues të veçantë që ju lejon të ngarkoni firmware përmes USB, pa përdorimin e komponentëve të jashtëm si ST-Link ose një përshtatës USB-UART.

Sot më duhej të punoja me një kontrollues të zhveshur nga CooCox dhe pa stm32duino. Por këtu qëndron problemi. Edhe një pulsues i thjeshtë me një llambë të derdhur përmes këtij ngarkuesi nuk funksionon.

Le ta kuptojmë. Ndoshta llogaritjet e mia do të duken banale për dikë. Por unë sapo kam filluar të studioj kontrollorët STM32 dhe vrava të paktën gjysmë dite për të gjetur një problem. Papritmas ky artikull do të zvogëlojë kohën e zhvillimit të dikujt.

Nuk kam asgjë kundër ST-Link dhe korrigjuesve të tjerë. Por në pajisjen time të përfunduar nuk do të jetë, por patjetër do të jetë USB. Pse të mos vendosni menjëherë aftësinë për të përditësuar firmuerin përmes USB? Personalisht, më duket e përshtatshme kjo metodë. veçanërisht pasi unë kam ende një kabllo të lidhur përmes së cilës furnizohen me energji dhe USB Serial.

Le të shohim se si funksionon ngarkuesi. Për të filluar, në shembullin e kontrollorëve AVR. Pse e kujtova? Unë po lëvizja nga Arduino dhe në mënyrë të pandërgjegjshme prisja të njëjtën sjellje. Por në STM32 gjithçka doli ndryshe. Prandaj, dua të flas për ndryshimin midis këtyre dy mikrokontrolluesve.

Kështu që. Në mikrokontrolluesit AVR ATMega, një sasi e caktuar memorie mund të rezervohet për ngarkuesin më afër fundit të blicit. Duke përdorur bitat e siguresave, mund të kontrolloni se nga cila adresë do të fillojë programi. Nëse nuk ka bootloader, programi fillon nga adresa 0x0000. Nëse ka një ngarkues, ai fillon nga ndonjë adresë tjetër (të themi, në ATMega32 me 0x3C00, nëse madhësia e ngarkuesit është vendosur në 2k).


Kur ngarkuesi ka kryer punën e tij, ai transferon kontrollin në programin kryesor nga adresa 0x0000. Ato. programi fillon gjithmonë në adresën 0x0000. Përpiluesi dhe lidhësi punojnë me supozimin se kodi do të vendoset në fillim të hapësirës së adresave.

Në mikrokontrolluesit STM32, gjithçka është ndryshe. Të gjitha programet fillojnë në adresën 0x0800000. Bootloader nuk është asgjë e veçantë. Ky është i njëjti program që fillon nga e njëjta adresë fillestare. Gjatë funksionimit, ngarkuesi mund të marrë firmware (nëpërmjet USB ose UART, të lexojë nga një USB flash drive, të marrë nga një satelit, ta marrë atë nga nënhapësira, çfarëdo ...) dhe ta shkruajë atë në adresa më të larta se sa ndodhet vetë ngarkuesi. Dhe, sigurisht, në fund të punës tuaj, transferoni kontrollin në programin kryesor.


Pra, kur përpiloni firmuerin, duhet të dini se ku do të shkruajë ngarkuesi i firmuerit dhe do të rregullojë adresat në përputhje me rrethanat.

Kjo është e gjitha me teorinë. Le të kalojmë në praktikë. Më poshtë është një udhëzim hap pas hapi se si të vidhosni një ngarkues USB në mikrokontrolluesit e serisë STM32F1xx, dhe ndoshta edhe në disa të tjerë.

Megjithatë, ka disa kufizime në qark. Këtu, për fat të keq, nuk jam i fortë. YTP ka nevojë për një rezistencë tërheqëse 1,5k për portën PA12 (i njohur ndryshe si USB D+). Kjo lejon që ngarkuesi të lidhet dhe shkëputet nga USB në kohën e duhur.

  • Tani mikrokontrolluesi është gati për t'u ndezur përmes ngarkuesit USB. Por ju ende duhet të rregulloni vetë firmware. Dhe ju duhet të bëni 2 gjëra:
    • Specifikoni adresën fillestare të lidhësit. Në CooCox, kjo bëhet në cilësimet e projektit, skeda Link, seksioni Zonat e kujtesës, Adresa e fillimit IROM1. Bootloader zë 8 kilobajt e parë, kështu që adresa fillestare e firmuerit do të jetë 0x0800000 + 0x2000 = 0x08002000. Fusha Size ndoshta duhet gjithashtu të reduktohet me 8k.
    • Diku në fillim të programit, përpara se të inicializoni pajisjet periferike, bëni një telefonatë

      NVIC_SetVectorTable (NVIC_VectTab_FLASH, 0x2000);

  • Ngarkuesi i firmuerit mund të merret nga projekti stm32duino. Në direktorinë e veglave, kërkoni një skript të quajtur maple_upload. Kam përdorur vetëm versionin e Windows - maple_upload.bat.
  • Vraponi kështu:

    "maple_upload.bat" COM20 2 1EAF:0003 "Rruga\To\Firmware.bin"
    Në vend të COM20, duhet të zëvendësoni portin ku është i bashkangjitur mikrokontrolluesi.

    Mbushësi është një gjë shumë delikate, nuk i pëlqen shtigjet relative. kështu që rruga për në firmware duhet të specifikohet plotësisht.

    1EAF:0003 është VID dhe PID

    2 është parametri AltID, i cili tregon se firmware duhet të ngarkohet në 0x08002000 (lexo).

  • Disa nuanca të tjera. Para se të ngarkoni firmuerin, duhet të ekzekutoni ngarkuesin. Mënyra më e lehtë është të shtypni butonin e rivendosjes. Pas kësaj, bootloader do të fillojë dhe do të presë disa sekonda për firmware. Nëse askush nuk po ekzekuton maple_upload në këtë pikë, ngarkuesi do t'ia kalojë kontrollin firmuerit kryesor.

    Kjo mund të shkaktojë bezdi. Nëse mikrokontrolluesi fiket dhe varet, atëherë ai nuk dëgjon më portin. Prandaj, ai nuk mund të dëgjojë sekuencën e çelësit dhe të rindizet në ngarkuesin. Pastaj rivendosni vetëm për të ndihmuar.

    Kjo eshte e gjitha. Shpresoj se artikulli im do të hedhë dritë mbi mënyrën se si funksionon ngarkuesi në STM32 dhe si mund të ngarkoni firmware përmes portit USB. Fatkeqësisht, pragu i hyrjes është ende i lartë, por papritmas artikulli im do të ndihmojë dikë ta kapërcejë atë.

    Përgjigjet për pyetjet e bëra shpesh:

  • 1. Për kë është ky FAQ?

    Shumica e specialistëve që zhvillojnë pajisje të bazuara në mikrokontrollues janë tashmë të njohur me temën e mbrojtjes së programeve të mikrokontrolluesve, kështu që mund të supozojmë se ky seksion nuk do t'u tregojë atyre asgjë të re. Sidoqoftë, ekziston një ushtri e madhe inxhinierësh dhe konsumatorësh të zakonshëm të pajisjeve elektronike që nuk janë të njohur me organizimin e detajuar të një mbrojtjeje të tillë, por që duan ose të kuptojnë detajet e funksionimit të një pajisjeje ekzistuese ose të krijojnë një pajisje të tillë, ky koleksion përgjigjet e pyetjeve janë të destinuara për ta.

  • 2. Pse dhe nga kush bëhet mbrojtja e mikrokontrolluesve?

    Shumë prodhues të pajisjeve elektronike përpiqen të mbrojnë pajisjen e tyre nga kopjimi i lehtë nga një prodhues tjetër. Prodhuesit e mikrokontrolluesve i takuan në gjysmë të rrugës duke futur mbrojtjen e kopjimit të programit (mikroprogramit) të përfshirë në kujtesën e mikrokontrolluesit në funksionalitetin e produkteve të tyre. Duke përdorur këtë mbrojtje për leximin e firmuerit, prodhuesit e pajisjeve elektronike mund të mbrojnë produktin e tyre nga kopjimi i thjeshtë nga një prodhues tjetër.

  • 3. Çfarë është mbrojtja nga kopjimi në mikrokontrollues dhe pse nuk mund ta lexoj vetë mikroprogramin (firmware) të mbrojtur?

    Zakonisht, mbrojtja nga kopjimi vendoset gjatë programimit të mikrokontrolluesit duke vendosur një speciale bit mbrojtës ose disa bit në fjalën e konfigurimit të mikrokontrolluesit. Fizikisht, këto pjesë janë të vendosura në qeliza të veçanta memorie në çipin e mikrokontrolluesit. Ndonjëherë përdoren metoda të tjera sigurie, si mbrojtja me fjalëkalim, por parimi është i njëjtë. Për të hequr mbrojtjen, zakonisht është e nevojshme të ndryshohet vlera e këtij biti ose disa biteve, megjithëse shpesh mund të përdoren metoda të tjera të leximit të përmbajtjes së kujtesës së programit të mikrokontrolluesit. Metodat konvencionale, të tilla si një programues, nuk do të jenë në gjendje ta bëjnë këtë; kërkohen pajisje komplekse të shtrenjta, të cilat një zhvillues i zakonshëm i pajisjeve elektronike nuk i ka. Prandaj, duke pasur pajisjet, njohuritë dhe përvojën e nevojshme, ne jemi të specializuar në ofrimin e këtij lloj shërbimi.

  • 4. Çfarë më bën heqja e mbrojtjes nga leximi i firmuerit (firmware)?

    Le të themi se keni një pajisje që e keni blerë nga një prej prodhuesve të pajisjeve elektronike dhe dëshironi të prodhoni të njëjtën pajisje, por të modifikuar. Por sigurisht, nuk keni kodet burimore të firmuerit ose firmuerit të përfunduar dhe do t'ju duhet të zhvilloni dhe korrigjoni firmuerin plotësisht nga e para. Kjo, në krahasim me kopjimin e komponentit elektronik të pajisjes (qarkut), do të duhet të shpenzojë shumë para dhe kohë. Duke përdorur shërbimet tona profesionale, ju do të kurseni para dhe kohë për zhvillimin e pajisjes. Në prani të një pajisjeje ose qarkut elektrik të saj, ne mund të rivendosim plotësisht algoritmin e funksionimit të saj dhe tekstin e mikroprogramit në gjuhën e programimit C ose Assembler.

  • 5. Cili është ligjshmëria e veprimeve të tilla në aspektin legjislacion?

    Ne lexojmë të gjitha mikroprogramet (firmware) me kërkesë të klientit për të riparuar pajisjen e tij, ose për t'u njohur me algoritmin e mikroprogramit. E gjithë përgjegjësia e mëtejshme për shpërndarjen e paligjshme të firmuerit ose veprime të tjera me të ose me ndihmën e tij bie tërësisht tek klienti.

    Kompania jonë operon në territorin e Federatës Ruse, kështu që më poshtë është një citat nga ligji. Legjislacioni i vendeve të tjera deklaron një qëndrim të ngjashëm.

    Neni 1280 i Kodit Civil të Federatës Ruse. "Riprodhimi falas i programeve kompjuterike dhe bazave të të dhënave. Dekompilimi i programeve kompjuterike".

    2. Personi që zotëron ligjërisht një kopje të një programi kompjuterik ka të drejtë, pa pëlqimin e titullarit të së drejtës dhe pa paguar shpërblim shtesë, të studiojë, hetojë ose testojë funksionimin e një programi të tillë për të përcaktuar idetë dhe parimet. në bazë të çdo elementi të programit kompjuterik, duke kryer veprimet e parashikuara në nënparagrafin 1 paragrafi 1 të këtij neni.

    3. Personi që posedon ligjërisht një kopje të një programi kompjuterik ka të drejtë, pa pëlqimin e titullarit të së drejtës dhe pa paguar shpërblim shtesë, të riprodhojë dhe shndërrojë kodin e objektit në tekst burimor (të dekompilojë programin kompjuterik) ose të udhëzojë të tjerë. personat për të kryer këto veprime nëse janë të nevojshme për të arritur ndërveprueshmërinë e një programi kompjuterik të zhvilluar në mënyrë të pavarur nga ky person me programe të tjera që mund të ndërveprojnë me programin që dekompilohet ...

  • 6. Çfarë është mbrojtja shtesë e leximit dhe pse është më e mirë se e zakonshme?

    Mbrojtja shtesë me tre nivele është krijuar për të krijuar kushte për pamundësinë e leximit të mikroprogramit (firmware) duke përdorur metoda të njohura. Mund të përfshijë nga një deri në tre nivele mbrojtjeje: mbrojtje kundër hapjes së kasës, thyerje të fshehur në kasë të këmbës së përdorur nga programuesi për lexim, heqje e fshehur në çip të logjikës së kontrollit të këmbës që përdoret për lexim.

    Niveli i parë është një polimer zjarrdurues rezistent ndaj acideve dhe tretësve, i cili nuk lejon hyrjen në kristal.

    Niveli i dytë e bën të pamundur që programuesi të lexojë pa mjete speciale të shtrenjta.

    Niveli i tretë kryen një funksion të ngjashëm me të dytin, por në të njëjtën kohë, restaurimi në çip i logjikës së kontrollit në shtresat e brendshme është praktikisht i pamundur, ose kërkon pajisje shumë të shtrenjta.

    Duke qenë se në shumicën dërrmuese të rasteve, mbrojtja konvencionale e fabrikës anashkalohet lehtësisht, mbrojtja shtesë për shumë pajisje të shtrenjta dhe komplekse është një masë jashtëzakonisht e nevojshme për të parandaluar humbjet materiale që lidhen me rënien e fryteve të veprimtarisë intelektuale në duart e palëve të treta.

  • 7. Unë dua të instaloj mbrojtje shtesë, por kam frikë se ju e konsideroni programin tim top-sekret përpara se të instaloni mbrojtjen. A ka ndonjë mënyrë për të vendosur mbrojtje shtesë në çip përpara se ta programoj përfundimisht?

    Në këtë rast, përpara se të instaloni mbrojtjen tonë shtesë, mund të ndezni vetëm ngarkuesin pa programin kryesor. Pasi të kemi instaluar mbrojtje shtesë, tashmë mund të programoni memorien kryesore. Për më tepër, ngarkuesi i ngarkimit për ngarkimin e programit kryesor duhet të përdorë çdo ndërfaqe tjetër përveç asaj kryesore të përdorur për programimin standard, pasi ndërfaqja kryesore do të çaktivizohet pas instalimit të mbrojtjes sonë shtesë. Zakonisht vetë ngarkuesi nuk është me interes për kopjim. Si një ngarkues, mund të përdorni tuajin ose të modifikuar nga shembujt nga prodhuesi i mikrokontrolluesit.

  • Ky klon Arduino ofron një ngarkues të veçantë që ju lejon të ngarkoni firmware përmes USB, pa përdorimin e komponentëve të jashtëm si ST-Link ose një përshtatës USB-UART.

    Sot më duhej të punoja me një kontrollues të zhveshur nga CooCox dhe pa stm32duino. Por këtu qëndron problemi. Edhe një pulsues i thjeshtë me një llambë të derdhur përmes këtij ngarkuesi nuk funksionon.

    Le ta kuptojmë. Ndoshta llogaritjet e mia do të duken banale për dikë. Por unë sapo kam filluar të studioj kontrollorët STM32 dhe vrava të paktën gjysmë dite për të gjetur një problem. Papritmas ky artikull do të zvogëlojë kohën e zhvillimit të dikujt.

    Nuk kam asgjë kundër ST-Link dhe korrigjuesve të tjerë. Por në pajisjen time të përfunduar nuk do të jetë, por patjetër do të jetë USB. Pse të mos vendosni menjëherë aftësinë për të përditësuar firmuerin përmes USB? Personalisht, më duket e përshtatshme kjo metodë. veçanërisht pasi unë kam ende një kabllo të lidhur përmes së cilës furnizohen me energji dhe USB Serial.

    Le të shohim se si funksionon ngarkuesi. Për të filluar, në shembullin e kontrollorëve AVR. Pse e kujtova? Unë po lëvizja nga Arduino dhe në mënyrë të pandërgjegjshme prisja të njëjtën sjellje. Por në STM32 gjithçka doli ndryshe. Prandaj, dua të flas për ndryshimin midis këtyre dy mikrokontrolluesve.

    Kështu që. Në mikrokontrolluesit AVR ATMega, një sasi e caktuar memorie mund të rezervohet për ngarkuesin më afër fundit të blicit. Duke përdorur bitat e siguresave, mund të kontrolloni se nga cila adresë do të fillojë programi. Nëse nuk ka bootloader, programi fillon nga adresa 0x0000. Nëse ka një ngarkues, ai fillon nga ndonjë adresë tjetër (të themi, në ATMega32 me 0x3C00, nëse madhësia e ngarkuesit është vendosur në 2k).

    Kur ngarkuesi ka kryer punën e tij, ai transferon kontrollin në programin kryesor nga adresa 0x0000. Ato. programi fillon gjithmonë në adresën 0x0000. Përpiluesi dhe lidhësi punojnë me supozimin se kodi do të vendoset në fillim të hapësirës së adresave.

    Në mikrokontrolluesit STM32, gjithçka është ndryshe. Të gjitha programet fillojnë në adresën 0x0800000. Bootloader nuk është asgjë e veçantë. Ky është i njëjti program që fillon nga e njëjta adresë fillestare. Gjatë funksionimit, ngarkuesi mund të marrë firmware (nëpërmjet USB ose UART, të lexojë nga një USB flash drive, të marrë nga një satelit, ta marrë atë nga nënhapësira, çfarëdo ...) dhe ta shkruajë atë në adresa më të larta se sa ndodhet vetë ngarkuesi. Dhe, sigurisht, në fund të punës tuaj, transferoni kontrollin në programin kryesor.


    Pra, kur përpiloni firmuerin, duhet të dini se ku do të shkruajë ngarkuesi i firmuerit dhe do të rregullojë adresat në përputhje me rrethanat.

    Kjo është e gjitha me teorinë. Le të kalojmë në praktikë. Më poshtë është një udhëzim hap pas hapi se si të vidhosni një ngarkues USB në mikrokontrolluesit e serisë STM32F1xx, dhe ndoshta edhe në disa të tjerë.

    Megjithatë, ka disa kufizime në qark. Këtu, për fat të keq, nuk jam i fortë. YTP ka nevojë për një rezistencë tërheqëse 1,5k për portën PA12 (i njohur ndryshe si USB D+). Kjo lejon që ngarkuesi të lidhet dhe shkëputet nga USB në kohën e duhur.

  • Tani mikrokontrolluesi është gati për t'u ndezur përmes ngarkuesit USB. Por ju ende duhet të rregulloni vetë firmware. Dhe ju duhet të bëni 2 gjëra:
    • Specifikoni adresën fillestare të lidhësit. Në CooCox, kjo bëhet në cilësimet e projektit, skeda Link, seksioni Zonat e kujtesës, Adresa e fillimit IROM1. Bootloader zë 8 kilobajt e parë, kështu që adresa fillestare e firmuerit do të jetë 0x0800000 + 0x2000 = 0x08002000. Fusha Size ndoshta duhet gjithashtu të reduktohet me 8k.
    • Diku në fillim të programit, përpara se të inicializoni pajisjet periferike, bëni një telefonatë

      NVIC_SetVectorTable (NVIC_VectTab_FLASH, 0x2000);

      PËRDITËSIM 17.05.2018: Nuk ka asnjë funksion NVIC_SetVectorTable() në versionin modern të STM32Cube. Në vend të kësaj, mund të rregulloni përkufizimin VECT_TAB_OFFSET në skedarin system_stm32f1xx.c (ose të ngjashme për një mikrokontrollues tjetër)

  • Ngarkuesi i firmuerit mund të merret nga projekti stm32duino. Në direktorinë e veglave, kërkoni një skript të quajtur maple_upload. Kam përdorur vetëm versionin e Windows - maple_upload.bat.
  • Vraponi kështu:

    "maple_upload.bat" COM20 2 1EAF:0003 "Rruga\To\Firmware.bin"
    Në vend të COM20, duhet të zëvendësoni portin ku është i bashkangjitur mikrokontrolluesi.

    Mbushësi është një gjë shumë delikate, nuk i pëlqen shtigjet relative. kështu që rruga për në firmware duhet të specifikohet plotësisht.

    1EAF:0003 është VID dhe PID

    2 është parametri AltID, i cili tregon se firmware duhet të ngarkohet në 0x08002000 (lexo).

  • Disa nuanca të tjera. Para se të ngarkoni firmuerin, duhet të ekzekutoni ngarkuesin. Mënyra më e lehtë është të shtypni butonin e rivendosjes. Pas kësaj, bootloader do të fillojë dhe do të presë disa sekonda për firmware. Nëse askush nuk po ekzekuton maple_upload në këtë pikë, ngarkuesi do t'ia kalojë kontrollin firmuerit kryesor.

    Kjo mund të shkaktojë bezdi. Nëse mikrokontrolluesi fiket dhe varet, atëherë ai nuk dëgjon më portin. Prandaj, ai nuk mund të dëgjojë sekuencën e çelësit dhe të rindizet në ngarkuesin. Pastaj rivendosni vetëm për të ndihmuar.

    Kjo eshte e gjitha. Shpresoj se artikulli im do të hedhë dritë mbi mënyrën se si funksionon ngarkuesi në STM32 dhe si mund të ngarkoni firmware përmes portit USB. Fatkeqësisht, pragu i hyrjes është ende i lartë, por papritmas artikulli im do të ndihmojë dikë ta kapërcejë atë.

    Sot ne do të mbrojmë firmware-in në stm32 nga leximi nga hakerat e lezetshëm. Për të mos tërhequr gomën, këtu është një pjesë e kodit:

    #ifdef NDEBUG if (FLASH_GetReadOutProtectionStatus() == RESET) ( FLASH_Unlock(); FLASH_ReadOutProtection(ENABLE); FLASH_Lock(); ) #endif

    Siç mund ta merrni me mend, pjesa përdor bibliotekën nga stm. Është shumë i përshtatshëm për të përdorur një pjesë të tillë të kodit - kontrolluesi vendos mbrojtjen e tij në fillimin e parë, dhe fillimi i parë është i lehtë për t'u organizuar pas firmuerit. Ja ku është liria nga tirania e siguresave!

    Po, e di, për holivorin rreth "bibliotekës kundrejt aksesit të drejtpërdrejtë në regjistra". Pozicioni im këtu është ky - nëse keni nevojë për shpejtësi të lartë, ose keni mbetur shumë pak memorie, por keni nevojë për një qasje të drejtpërdrejtë në regjistra. Nëse shpejtësia nuk është e rëndësishme dhe ka shumë memorie, është më mirë të përdorni një bibliotekë - në këtë mënyrë programi shkruhet më shpejt dhe më i lexueshëm.

    Hiq mbrojtjen
    Ne kemi mbrojtur kontrolluesin. Por këtu është problemi - ne duhet të rregullojmë programin tonë dhe me mbrojtjen e instaluar, asgjë nuk mund të bëhet me kontrolluesin - as të lexojmë as të shkruajmë. Si të hiqni mbrojtjen? Unë ju paralajmëroj menjëherë - djemtë nga ST bënë gjithçka siç duhet dhe i gjithë firmware është shkatërruar së bashku me mbrojtjen.

    Për të hequr mbrojtjen, na duhet programi i shërbimeve st-link. Mund ta shkarkoni.

    Ekzekutoni programin dhe zgjidhni këtë artikull, ose thjesht shtypni ctrl-b:

    Në fushën "Lexo gjendjen e mbrojtjes, zgjidh jashtë". Dhe shtypni butonin Apliko:

    Së bashku me bitin e mbrojtjes, e gjithë memoria fshihet gjithashtu:

    Mbroni veten, ne jemi për një vendosje të sigurt.

    Mënyra më e lehtë dhe më e përballueshme për të ndezur STM32- duke përdorur bootloader, në këtë artikull do të shikojmë se si ta bëjmë këtë duke përdorur shembullin e një bordi miniSTM32F103V.

    Së pari, le të kuptojmë se çfarë është bootloader ose sido që të quhet ngarkues. Ngarkues- është thjesht një program që ruhet në një seksion të caktuar të memories dhe mund të mbishkruajë mikrokontrolluesin flash. Ajo është e qepur gjatë prodhimit të çipit dhe nuk mund të ndryshohet në asnjë mënyrë. Në mënyrë që mikrokontrolluesi të hyjë në këtë seksion të memories, ju duhet të dilni BOOT0 tërhiqeni në fuqi dhe nxirrni BOOT1 në tokë. Në tabelë, këto dy kunja janë të vendosura pranë lidhësit USB, dhe tërheqja kryhet duke përdorur kërcyes.
    Më poshtë është një tabelë që përcakton se nga cila zonë memorie do të fillojë mikrokontrolluesi pas një rivendosjeje, në varësi të BOOT0 Dhe BOOT1.


    Supozoni se kemi instaluar kërcyesit, tani duhet të transferojmë skedarin hex me firmware në ngarkuesin e ngarkimit, do ta transferojmë atë me uart, për këtë na duhet një konvertues usb uart.


    Unë kam një konvertues të tillë të bërë në bazë të një mikroqarku FT232RL duke përdorur një majë të hollë për një stacion saldimi, bashkimi i tij është shumë i thjeshtë. Metoda e vulosjes është si më poshtë, së pari ju duhet të kapni një këmbë nga dy kënde të kundërta, pastaj kur mikroqarku të fiksohet, lidhni pjesën tjetër të këmbëve me një hekur saldimi ose një tharëse flokësh. Dhe prekja e fundit, edhe një herë bashkojmë këmbët, të cilat u ngjitën fillimisht, për të hequr stresin mekanik prej tyre.

    Ne lidhim përshtatësin usb uart në kompjuter dhe në varësi të cilit çip është bërë CP2120 ose FT232, instaloni drejtuesit e duhur. Pas kësaj, duhet të përcaktohet në sistem si COM_PORT.


    Tani le të lidhim përshtatësin tonë me tabelën, lidhim daljen RX të përshtatësit me daljen MCU_TxD, dhe prodhimi i TX me daljen MCU_RхD. Topologjia e tabelës që dërgoi shitësi është paksa e ndryshme nga ajo në foton e sipërme, kunjat për firmware shfaqen veçmas dhe janë të shënuara me shigjeta të kuqe.


    Më pas, ju duhet të shkarkoni një program me të cilin do të kontaktojmë ngarkuesin, ai quhet FLASH LOADER DEMONSTRATOR.


    Pas instalimit të programit, zgjidhni portën com nën të cilën është përcaktuar përshtatësi ynë usb uart dhe shtypni butonin NEXT, shpejtësia do të përcaktohet automatikisht. Nëse kontrolluesi është i mbrojtur nga leximi, atëherë mbrojtja mund të hiqet duke shtypur butonin "Hiq mbrojtjen", ndërsa memoria flash do të fshihet dhe, në përputhje me rrethanat, të gjitha të dhënat që janë shkruar në të humbasin.


    Nëse kontrolluesi nuk është i mbrojtur, do të shfaqet dritarja e treguar më poshtë, në të shtypim butonin NEXT.


    Në dritaren tjetër, ju duhet të zgjidhni atë që duam të bëjmë: lexoni / shkruani blicin e mikrokontrolluesit, fshini atë, ndaloni leximin / shkrimin, ne jemi të interesuar të shkruajmë, për këtë zgjedhim skedarin që duam të ngarkojmë dhe shtypim TJETËR.

    Nëse vëreni një gabim, zgjidhni një pjesë të tekstit dhe shtypni Ctrl + Enter
    SHPËRNDAJE:
    Kompjuterë dhe pajisje moderne