Jump to content
AndrisBB

Rakstīt kodu priekš STM32 izmantojot VS Code

Recommended Posts

AndrisBB

Tākā vienā citā tēmā @Jurkins izmanto MS Visual Studio, lai rakstītu kodu priekš Arduino, tad es izdomāju ka varētu uztaisīt pāris mini video kā var ātri un ērti rakstīt un debuggot kodu priekš STM32 iekš VS Code. Varbūt kādam interesanti. Kā arī jāpatrenējas kā veidot video. Varbūt vēlāk kautkad jāuztaisa Youtube kanāls.

Forumā arī izskanēja viedoklis ka esot baigais čakars lai visu nokonfigurētu utt., bet īstenībā tas ir pavisam vienkārši.

 

Pirmais video parāda kā uztaisīt Cube MX projektu izmantojot Makefailu. 

Pa lielam tur tikai daži soļi:

* Uztaisam projektu iekš Cube MX. Tākā es izmantoju Nucleo f401re boardu, tad defaultie settingi jau ir salikti un pat pini jau izvēlēti kā outputi priekš LED. Pa lielam var izmantot jebkuru boardu, ieskaitot tos lētos ķīniešu STM klonus, vai pašam savu custom veidojumu.

* Eksportējam visu kā Makefile projektu

* Lejupielādējam gcc kompilatoru priekš ARM. Es lejupielādēju no ARM lapas, bet ir daudz un dažādas citas alternatīvas. Vai arī pats var uzbuildot no source koda.

* Cube MX dažreiz gļuko un ieliek vienus un tos pašus failus iekš Meikfaila, tapēc nodzēšam duplikātus.

* Kompilējam. Rezultāti iekš build mapes.

 

 

Edited by AndrisBB
  • Patīk 4

Share this post


Link to post
Share on other sites
Jurkins

Forši @AndrisBB!

Sestdien pamēģināju sākt darboties ar stm32F103C86T ķīniešu klonu. Iestrēgu (laiks izbeidzās) pie projekta veidošanas cūūbēē. Viss baigi smuki, bet ļoti daudz apgūstamās vielas. Gan jau pēc tam viss aiziet. Pēc tam būs jāizvēlas ide. Ir tam pašam ST - cubeide. Bet tur laikam ir tikai c. Lielākā daļa bibleņu visādiem sensoriem uzrakstītas c++. Būs jāpamēģina Tavs video realizēt dzīvē. Apskatīju mbed studio... kaut kā nepatika, nebija tas "klikšķis". Piemēram ar atmelstudio bija ?.

 

Bet šādas ides nekad neapies, pat nepietuvosies popularitātē plašās masās arduino. Ņemot vērā vēl to, ka šo stm arī var  dabūt iekš arduino.

 

edit:

ņem kuru bibleni gribi (varbūt nedzudz pārspīlēju, bet uz to iet) ...

#ifdef ARDUINO ....blablabla... #ifdef MBED... blablabla ... un viss

 

edit:

pamēģināju vienu vakaru piešķilt UIPEthernet bez arduino uz plika avr. Pietrūkst zināšanu... nomuhļījos...

 

Edited by Jurkins

Share this post


Link to post
Share on other sites
AndrisBB

Velak uztaisisu video ka pieslegt OpenOCD utt. Ka ari saku stradat pie projekta kur izmantoju STM32, varbut vares pielikt kadu reali piemeru, mazliet vairak par Hello World.

 

pirms 3 stundām , Jurkins teica:

Pēc tam būs jāizvēlas ide. Ir tam pašam ST - cubeide

ST ir pasiem sava Eclipse versija - ST Workbench https://www.st.com/en/development-tools/sw4stm32.html

Share this post


Link to post
Share on other sites
Jurkins
Pirms 4 minūtēm , AndrisBB teica:

sava Eclipse versija

Šo biju palaidis garām. Paldies. Jāievērtē, jo izvēle būs jāizdara?.

Share this post


Link to post
Share on other sites
AndrisBB

Es gan to Eclipsi reti izmantoju, un ja izmantoju, tad kodu rakstu ieksh VS Code un tad Eclips'e tikai debuggoju vai flshoju. Bet tas ir reti, kad vajag izlabot kadu sikumu un slinkums salikt iestaijumus prieks Code.

Share this post


Link to post
Share on other sites
Usins

Tagad pa laikam ko spēlējos ar arduino kodu rakstot arduino idē.  

 

vēlētos pārvākties uz stm32, kas laikam būtu price/performance daudz pareizāk

 

Jautājums: vai šāda plate ir sevis mānīšana jo tik un tā displeju un sensoru bibliotēkas nestrādās pamatā?

 

vai uzreiz cīnīties ar STM32 F103C8T6 kā @Jurkins pieminēto?

Share this post


Link to post
Share on other sites
AndrisBB

Tam bibliotekam vajadzetu stradat, bet nekad nevar zinat.

 

Problema ar visam tam F103C8T6 Blue vai Black ir ka tev vajadzes piepirkt debuggeri tikunta, jo rakstit un testet kodu pa "aklo" uz mikrokontroliera, ka to parasti dara Arduino cilveki ir pamatiga sape pakala.

Ka turpinajumu esoshajam video, pieliksu piemera ka dabut, lai darbojas tas F103C8T6 + debuggers.

Edited by AndrisBB
  • Patīk 1

Share this post


Link to post
Share on other sites
Jurkins

Bet šitā plate jau ir tā, ko pieminēju. Atšķirībā no ķīnas kloniem, šai jau ir arduino būtloaderis iekšā. Visas arduino bibliotēkas gan jau pa lielam strādās. Ar to bibleņu nestrādāšanu es domāju IDEs sakarā, jo pa lielam visas arduino biblenes ir uz c++ rakstītas, bet manis minētā piemēram, šķiet, tikai ar c draudzējas.

 
Es šitādu pasūtīju. Cena nekāda, var displeju normāli piejūgt u.t.t. Redzēs, kā man veiksies ar stm.

 

Pirms 5 minūtēm , AndrisBB teica:

piepirkt debuggeri tikunta

Vai ar debugeri domā ST-Link V2?

Edited by Jurkins

Share this post


Link to post
Share on other sites
AndrisBB

Jaa. Es gan vinju nepirktu atseviski.

Es parasti nolauzu nost debuggeri no Nucleo boarda, jo to man ir chupam gan majas, gan darba.

Ja baigi vajag, tad officiali var parflashot uz Segger J-linku. Protams, tad nav vairs visas krutas J-Link fiichas, var teikt sanak J-Link Light :)

 

maxresdefault (1).jpg

Share this post


Link to post
Share on other sites
Jurkins

Man jau krietni sen tumbočkā mētājās tie F103... un šitas STlink, tikai nesanāca pieķerties klāt. Katrā gadījumā tas stlinks čipu atpazina un nolasīt varēja, līdz rakstīšanai vēl netiku. Toreiz, pirms iemešanas tumbočkā, biju pieslēdzis vienu ar uartu un iešuvis arduino būtloaderi un iešuvis standarta led midžināšanu. Tagad konkrētā platīte neatpazīstas ar stlinku. HVZ, ko esmu tur sastrādājis.

edit: vakar bišķi tīri intereses pēc paņēmos ar arduino+stmklons. Tipa ar to, kuru st-links neatrada. Pieslēdzos ar usb2serial. Izrādās ejošs. Un izrādās, viss ir baigi elementāri, ja izvēlas šādu ceļu. Tā kā ja @Usins dara to? paretam, tad var sākt tajā pašā arduino vidē un pamazām ietrīties uz kaut ko advansētāku.

Edited by Jurkins

Share this post


Link to post
Share on other sites
Amazons

Tīri intereses pēc padalāties ar pielietojumu STM'iem, ESP8266, ESP32 utt.. 

Ir kāds reāls pielietojums/izdevīgums? Salīdzinājumam - tas ko esmu redzējis, parasti ir mēģinājumi izveidot to kas jau ir (kontrolieri, moduļi, izpildmehānismi). Principā gatavi risinājumi bez kādas vajadzības (laika izdiršanas :sorry) kaut ko lipināt, kodēt utt.. Nu vismaz industriālā līmenī.

Share this post


Link to post
Share on other sites
AndrisBB

Isti nav skaidrs kads ir jautajums, bet stm32 ir vieni no popularakajiem mikrokontrolieriem. Vini ir visur, atver kautkadu industrialu/majas iekartu un ja tur ir microkontrolieris, tad liela varbutiba ka tur bus kads no STM32 variantiem. Familija ir diezgan liela, sakot no ARM Cortex M0 (mazi, ekonomiski paretinja, leti), lidz pat M7, kas iet virs 200MHz.

 

ESP jau vairak tads "uzhakots" chips. Nekados nopietnos aparatos neatradisi. Ja nu vienigi lieliem razhotajiem, kam ir ligums ar chipmeikeru un pieeja dokumentacijai. Kautkur jau vinjus pirmsakumos izmantoja.

Share this post


Link to post
Share on other sites
Usins
pirms 3 stundām , Amazons teica:

reāls pielietojums

piemēram, kad gatavais industriālais risinājums pakaras, attālināti to restartēt un tam iebarot pāris komandas (te gan pietiku ar atmelu)

 

aizvien vairāk gatavu lietu komunicē caur ražotāja serveri, tas vai nu maksā, vai ir (subjektīvi) nedroši ilgtermiņā paļaujoties uz šādiem risinājumiem. 

 

@Jurkins mēģināšu gan/gan paralēli. Jācenšas apgūt pēc iespējas modernāki un pareizāki risinājumi uzreiz, savādāk dzīvē beigsies kamēr mēģināšu iziet visu mikrokontrolieru u.c. evolūciju. No otras puses, pašmācības/hobija ceļā, pārāk stāva mācīšanas līkne noved pie projekta pamešanas nesasniedzot nekādu rezultātu. Taustos. 

Edited by Usins
  • Patīk 1
  • Atbalstu 2

Share this post


Link to post
Share on other sites
Jurkins
pirms 2 stundām , Usins teica:

pareizāki risinājumi uzreiz

nu jā, arduino vide ir indigo bērniem ?

Share this post


Link to post
Share on other sites
Amazons
pirms 6 stundām , AndrisBB teica:

Vini ir visur, atver kautkadu industrialu/majas iekartu un ja tur ir microkontrolieris

Jā to es zinu! Tagad pat lodāmurus kurbulē uz stm32. Es vairāk par to kam/ko jūs kaut ko būvējat? Jo diez vai tas ir vecs ZIL ledusskapis kuru gribat upgreidot līdz Elektrolux "side by side" ledusskapja līmenim mājas vajadzībām :D

Share this post


Link to post
Share on other sites
Amazons
pirms 4 stundām , Usins teica:

kad gatavais industriālais risinājums pakaras

 

pirms 4 stundām , Usins teica:

aizvien vairāk gatavu lietu komunicē caur ražotāja serveri, tas vai nu maksā

 

Tas fakts, bet, ja pakaras tavs darinājums, tad lai nodrošinātos jātaisa vēl vienu kurš restartē tavējo? Es tik filozofēju ;)

 

  • Haha 1

Share this post


Link to post
Share on other sites
AndrisBB

Es pārsvarā izmantoju darbā visādām iekārtām, sākot no vienkāršiem scenārijiem, kur jānomaina jāieslēdz LED lai par kautko informētu useri, lidz jau daudzmaz nopietnai signālu apstrādei.

 

Priekš sevis tagad ir 2 aktīvi projekti.

* Lego motoru/sensoru draivers, lai bračkas sīkie var programmēt robotus.  

* Robota galva, kas grozās, kunstina muti utt. Iespējams vēlāk iepostēšu te par šo temu, kad jau daudzman kautko būšu izdarijis. Pagaidām īsti nav laika.

Share this post


Link to post
Share on other sites
M_J
pirms 4 stundām , Usins teica:

piemēram, kad gatavais industriālais risinājums pakaras, attālināti to restartēt

Vai aizstāt to gatavo industriālo risinājumu, kad ir apzināti visi tā trūkumi ar savējo. Uzreiz iegūstam virkni priekšrocību:

- ir pilna informācija par šo ierīci

- visaugstākais softiskais piekļuves līmenis ierīcei, kāds vien var būt, nevajag lūgties zemoties un draudēt un maksāt lielu naudu, lai dabūtu donglu ar nožēlojamām iespējām.

- ja kaut kas darāms tajā ierīcē ar lodāmuru, pat stipri cenšoties nav iespējams nosvilināt kaut ko vairāk kā pāris eiro vērtībā. Ko nevarētu teikt par gatavajām industriālajām ierīcēm.

Pirms 28 minūtēm , Amazons teica:

Tas fakts, bet, ja pakaras tavs darinājums, tad lai nodrošinātos jātaisa vēl vienu kurš restartē tavējo?

Ļoti vienkārši - jātaisa darinājumi, kas nekaras

  • Patīk 2

Share this post


Link to post
Share on other sites
AndrisBB

Uztaisiju nākamo mikro video - Kā "pāršūt" firmwāri vainu izmantojot Mass Storage Device vai arī STM32 Cube Programmer.

 

* Linuxa gadījumā parbaudam ka ir izveidots udev .rules fails, lai piespraužot devboardu, tas tiek automātiski piemontēts kā flashka.

* Izveidojam elementāru Blinku kodu. LD2 ports (PORT_A) un pins (PIN_5) tika izveidots iekš Cube MX, vienkārši pieliekot labelu LD pie pina.

* Vienkāršākais variants kā pārkopēt firmwāri ir copy/paste uz flashu ko ST-Link emulē.

* Ja gribas ko vairāk, tad var izmantot STM32 Cube Programmer. Kad pērk tos ķīniešu lētos F103C8T6 bāzētos boardus aka BluePill/BlackPill, tad parasti viņi ir write protected, tad bez programmera neiztikt, lai atslēgu rakstīšanas aizsardzību.

 

 

  • Patīk 2

Share this post


Link to post
Share on other sites
Amazons
Pirms 10 minūtēm , M_J teica:

maksāt lielu naudu, lai dabūtu donglu

 nu nez, PLC projektiem var lietot Tosibox (premium klase). Viens dongls uz n-tiem aparātiem (draugu cena ap 250Eur). Zinu cilvēkus kuriem ir 10-iem (baidos teikt 100-iem) objektu pa visu pasauli un normāli dzīvo ar vienu donglu kabatā. Man ir tikai daži objekti :)) Sasaiste ar ražotāja serveriem?! Tāpēc ka tā ir vienkāršāk realizēt pieslēgšanos da kaut vai āfrikā, kur hvz cik rūteriem un banānmizu ugunsmūriem tev jātiek cauri.

Protams saprotu ka situācijas ir dažādas

Share this post


Link to post
Share on other sites
Usins
Pirms 3 minūtēm , M_J teica:

aizstāt to gatavo industriālo risinājumu

Arī variants, bet man tādi ir 200 gabali un ja neņem vērā, ka pa laikam (3 mēnēši - 5 gadi) pakaras  - funkciju pilda. 

 

Savu pagaidām nav pieticis neatlaidības pabeigt. 

Kopumā varu parakstīties zem  @M_J aprakstitā.

 

Vaina varbūt ir pārdošanas prasmēs, izvēlētā produktā/ražotājā, trūcīgā mazā tirgū. Savā ziņā nabadzība veicina tehnisku radošumu. 

 

Bernībā rotaļājos ar lodumuru, vēl zx spectrum bet sākās pusaudža trakumi un tas  viss pazuda. Pēc 20 gadiem birojā ar  caurspīdīgo līmlenti pietinu 3xAAA baterijām štekeri  iekārtas barošanai (D izmēra 3.6V Saft LV maksā kosmosu). Skatijos uz to līmlenti skumji un nolēmu izvilkt lodāmuru. Tad nejauši tika atklāts ka %10 sprieguma pieaugums ievērojami uzlabo uztveršanu, tad jau sākās. 

 

Ap to pašu gadu pēc vairāku nedēļu lūgšanās IT uzturetājām rietumvalstī ka nedarbojas datu imports noteikta veida failiem lai nodrošinātu klientu apkalpošanu pāris dienās uzcepu izmantojumu savu risinājumu. Tas bija otrs lūzuma punkts,  kad sapratu - ka varu pats ātrāk, labāk, sev drošāk. 

 

Mani skripti datorā ir diezgan nestabili, regulari karās, bet parasti viegli pašam pielabojumi. 

 

Arduino pagaidām viss ir darbojies gludi (kas vispār sanācis)

Share this post


Link to post
Share on other sites
M_J
Pirms 24 minūtēm , Amazons teica:

Protams saprotu ka situācijas ir dažādas

Manā gadījumā (lietās, kas saistītas ar elektrostacijām) ar dongliem ir problēmas. Ir tāds ražotājs Heinzmann, kas taisa visādus ķiņķeriņus šādām vajadzībām. Gandrīz visām gāzes elektrostacijām ir Heinzmann apgriezienu regulatori. Ja tādam regulatoram ir nekorekti uzstādīti PID parametri, viņš "iešūpo" to motoru un sasinhronizēties un pieslēgties tīklam ir tīrās mocības. Tas Heinzmanns, pēc ilgas sarakstes, bija gatavs man tādu donglu pārdot par nieka 2000 eiro, un ne jau "inženiera" versiju. Vispār, paldies šim kantorim. Rezultātā man tagad ir savs apgriezienu regulators, kas darbojas jau vairākās elektrostacijās. Pēdējā gada laikā ir nācies piedalīties problēmu risināšanā virknē elektrostaciju, kur strādā DEUTZ/MWM motori ar TEM-EVO vadību. Tajā vadībā ir virkne vājo vietu, kas turklāt maksā neadekvāti dārgi. Piemēram, "tačskrīns". Būtībā vadības panelis. Ekrāns kopā ar datoru. Būtībā tāds "Raspbery PI" tikai ar lielāku ekrānu. Tikai atšķirībā no "avenes" tas sūds maksā četrpadsmit tūkstošus. Viņam iekšā ir sava programma no sērijas: "Anglija bij aizslēgta, atslēga bij nolauzta". Bet tas ekrāns pats neko nevada. Motoru vada atsevišķa kaste, un ekrāns ar to sazinās, izmantojot kaut kādu idiotisku savu, nekur neaprakstītu, protokolu, mazliet līdzīgu 3964R (laikam stulbāku protokolu, ko izmantot par paraugu nebija varējuši sameklēt). Vasarā bija iespēja ilgāku laiku ar tādu verķi padarboties un izpētīt to protokolu, un vispār visu datu apmaiņu starp ekrānu un vadības kasti.  Tagad gribu to ekrānu vienkārši aizstāt ar "aveni" + kaut kādu datora monitoru. Potenciālie klienti jau ir. Vairākos objektos, kur esmu risinājis citas problēmas, tas TEM ekrāns ir pussprādzis.

  • Patīk 2

Share this post


Link to post
Share on other sites
AndrisBB

Gribēju šodien uztaisīt mikro video kā dabūt OpenOCD un debuggot STM32 iekš VS Code, bet nesanāca laiks. Jātliek uz nākamo nedēļu.

 

Tikmēr varu padalīties ar projectu pie kura šodien sāku strādāt. Būtībā ideja vienkārša:

  • STM32 F429ZI mikrokontrolieris (vai ja vajadzēs vēlāk, tad upgreidošu uz ko jaudīgāku)
  • OS: FreeRTOS
  • TCP/IP - LWIP staks.
  • Uz mikkrokntroliera būs HTTP servers, lai var kontrolēt servo motorus un nolasīt dažus sensorus
  • Būs video strīms no kameras OV7670 - vai kaitkas tml. Video būs jāpārkodē uz Motion JPEG.
  • Būs jābūt iespējai nosautīt audio, kura atskaņot.
  • Protams kautkāda web lapa, la var debuggot sistēmu un visu kontrolēt
  • Tākā tmiņas nav daudz, tad ganjau vajadzēs SD karti vai kādu citu ārējo atmiņu.

 

Šodien sāku strādāt pie web servera daļas. Ideja tāda ka viens Tasks (pavediens?), apstrādā ienākošos vaicājumus un padod tālāk iekš FIFO Queue. Tad 1 vai vairāki citi pavedieni gaida uz to FIFO un apstrādā pašu requestu, aizsūta atbildi. Cik pavedieni, pagaidām nezinu, bet to var viegli modificēt uztaisot tik cik vajag.

Lai parsētu pašus HTTP headerus atradu tādu bibliotēku iekš github https://github.com/h2o/picohttpparser

Tālāk vajadzēs kautkā mappot pašu requestu ar attiecīgo funkciju. Te domāju izmantot regex un funkciju pointeru tabulu. Atradu arī kautkādu mikro bibliotēku kas atbalsta primitīvus regexus, jāpaskātās būs kā strādā. https://github.com/kokke/tiny-regex-c

 

Ja kādam interesē kods, tad uztaisiju arī repo https://github.com/AndrisBB/STM32_Robot_Controller

Pagaidām gan tur īpaši skatīties nav ko un kautkāda darbība notiek tikai šinī pavedienā https://github.com/AndrisBB/STM32_Robot_Controller/blob/master/Src/tasks/http_task.c

Primitīva diagramma un board foto zemāk:

 

 

Untitled Diagram.jpg

IMG_20200223_181506.jpg

  • Patīk 4

Share this post


Link to post
Share on other sites
AndrisBB

Kontrolēta tiks robota galva.

Kopā apmēram 6 servo motori (grozīt, kustinat muti, plecus, acis), vienas acs vieta būs kamera, otra iespejams mini displays, kautkads mini skaļrunis utt.

Pagaidām viss tikai sākuma stadija, daudz ko 3d printēt un daudz koda ko rakstīt.

 

 

 

IMG_20200223_190758.jpg

  • Patīk 1
  • Haha 1

Share this post


Link to post
Share on other sites
HIGH-Zen

Terminatora galva.

  • Patīk 1

Share this post


Link to post
Share on other sites
AndrisBB

Redzēs kas tur sanāks. Par pamatu tiek izmantoti elementi no InMoov robota.

Seja būs noteikti mazliet jāpamaina, no sākuma bij doma izmantot manis paša galvu, bet tad pārdomāju. Laikam acu/sejas elements būs mazliet jāpārtaisa, jāuztaisa kautkāds līdzīgs iluminators kā manā avatārā.

 

DSC_0025bis2-682x1024-e1574161689778.jpg

Edited by AndrisBB

Share this post


Link to post
Share on other sites
Jurkins

Jā, man stm32 vēl ir kosmoss. Vakar nomuģījos ar sistēmas taimeri. Beigās jau palaidu "blinku" balstoties nevis uz aizturēm, bet uz 1 ms tikšķiem, bet ... rakos, rakos pa tie HAL failiem... tā arī neatradu, kurā vietā tiek atļauti pārtraukumi no sistēmas taimera ?. Jā, un tas ST ide jau ir uz tās pašas eklipses bāzes laikam, tikai nevaru atrast (nav???) kā dabūt autocomplete. Nu bez tās fīčas ir baigi nogurdinoši. Jāmēģina būs likt lietā @AndrisBB manuālis un jāmēģina VS Code.

Share this post


Link to post
Share on other sites
AndrisBB

Uztaisiju divus jaunis video:

* Kā setupot OpenOCD un debuggot kodu uz devaisa

* Kas jādara, lai varētu izmantot printf un citas stdlib funkcijas

 

 

OpenOCD

 

Tāka te daudziem patīk izmantot to BluePill, tad uztaisiju apmēram 10 min video kā visu setupot un debuggot kodu iekš VS CXode. Soļi apmēram sekojoši.

  • Uztaisam CubeMx projektu priekš STM32F103C8T
  • Iespējojam Serial Wire debug interfeisu
  • Iestatam pulksteņus. Ja nav nepieciešama nekāda super laika precizitāte, tad var iztikt ar iebūvētajiem kristāliem, bet tākā uz Blue Pill jau ir 2 kristāli, tad var izmantot tos. Procesora frekvenci uzliekam uz 72Mhz. Var arī jebkuru citu frekvenci.
  • Iespējojam UART1 priekš debuggošanas 
  • Iespējojam PC13 pinu priekš LED. Tikai viens LED uz tā BluePill.

 

Tālāk ja viss darbojas, tad:

  • Lejupielādējam OpenOCD.
  • Kompilējam, instalējam
  • Uztaisam configu priekš BluePill, vienkārši nokopējot no Nucleo un samainot uz pareizo CPU.
  • Pārbaudam vai strādā no komandrindas - palaižam OpenOCD un pieslēdzam GDB.
  • Iekš VS Code instalējam Cortex Debug pluginu.
  • Uztaisam konfigu prieks debugošanas
  • Viss darbojas

 

 

 

Iespējojam printf

 

Pa lielam ja vajag kautko rakstīt uz serial portu, tad var rakstīt pa taisno, bet man labāk patīk caur printf. ARM GDB nāk ar pre-buiuldotu newlib C bibliotēku. Kad kompilē tad var norādīt, lai neizmanto viņu vispār. Bet ja tomēr vajag, tad pašam ir jāuzraksta zemākais slānis, lai printf, gettime, malloc utt darbotos. Pa lielam man jau tas fails ir sen uzrakstīts un tikai copy/paste inu jaunā projektā. Es viņu saucu par syscalls.c.

Lai printf drbotot vajag pašam uzrakstīt putchar funkciju, kas pa defaulto ir implementēta kā weak, tapēc neko nedara. Putchar funkcijā vienkāršu sūtam to char uz seriālo portu, bet var sūtīt kur vien grib.

 

 

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
AndrisBB
Posted (edited)
pirms 6 stundām , Jurkins teica:

Vakar nomuģījos ar sistēmas taimeri. Beigās jau palaidu "blinku" balstoties nevis uz aizturēm, bet uz 1 ms tikšķiem

 

HAL bibliotēka ir diezgan labi dokumentēta, paskaties header failos vai .c failos. Plus daudz piemēru iekš CubMX. Paskaties Examples mapē.

Jebkurā gadījumā uztaisiju mini video kā izmantot Basic Timeri visvienkāršākajā modē.

Soļi apmēram tādi:

  • Iekš CubeMx iespējo taimeri. Var jau protams pats to kodu uzrakstīt. Bet vieglāk no turienes.
  • Ja piemēram vēlies 20 ms tikšķi, tad izvēlies counting mode - up. Tākā MCU frekvence ir 72 Mhz, tad ieliec prescaileri 72 (video ir kļūda, īstenībā vajag 72 -1), lai timera pulkstens būtu 1mhz. Caunteri ieliec 20 000 - 1, tai interupts tiktu izsaukts kad caunters sasniedz to daudzumu. Tad sanāk interrupts katras 20 ms. Ja vajag citus intervālus, tad izvēlies pats ciparus.
  • Iespējojam interruptu
  • Main funkcijā sākam taimeri. (Vai tad kad vajag)
  • Interruptu handlers it xxx_it.c failā.
  • Uzrakstam callback funkciju priekš taimera (pa defaulto viņa ir implementēta kā weak)
  • Viss, taimers strādā.

 

Edited by AndrisBB
  • Patīk 1

Share this post


Link to post
Share on other sites
Jurkins
Posted (edited)

Smuks video. Taimeri būs nākamais solis. Es biju nosprūdis uz sistēmas taimera ?.

Bet nu viss sanāca beigās labi. Izdevās palaist oriģinālo ST debageri. Izrādās ķīnieši ir baigie dibenzellii... nē, nevis dibenzeļļi, bet p'idari. Tiem lētajiem ST-Link V2 (~2 eiro) nav izvadīti ārā 2 signāli, no kuriem reāli gan vajag (pašlaik vismaz) vienu -reset. Vispār jau tāds reset pins šim eksistē, bet ko viņš resetē, tā arī nesapratu. Lai iešūtu ar CubeProgrammer nācās turēt nospiestu "bluepill"reset pogu, palaist "connect" un tad reset palaist vaļā. (Pagāja viens riktīgs vakars, kamēr sapratu, kas notiek). Beidzot atradu vienu gudrinieku, apbruņojos ar lupu, iespringu (sūtīga jau redze paliek, bet vēl kaut kas sanāk) un vuaļā.

Līdz ar to arī aizgāja ides dzimtais debageris. Nu un tagad jau soli pa solim smuki var paskatīties, kas notiek, kā šis palaižās u.t.t. Pagaidām vēl neesmu atradis, vai eksistē kaut kāds logs, kur var skatīt mainīgos. Pagaidām tikai uzbraucot ar peli koda logā.

Jocīgi, ka ģenerētajā kodā iekš main() vispirms ir funkcija HAL_Init(), kura cita starpā nokonfigurē sistēmas taimeri ar savu defaulto takti (16M), saliek pārtraukumu prioritātes u.t.t. un pēc tam vēlreiz tieši tas pats tiek darīts SystemClock_Config(), tikai nu jau ar pareizo takti (manā gadījumā 72M) un par jaunu liek pārtraukumu prioritātes u.t.t.

Edited by Jurkins

Share this post


Link to post
Share on other sites
Jurkins

Jāiespamo šeit kaut kas. Apnicis jau tas vīruss. ?

Vai DMA circular modē notiek "complete" pārtraukums? Man kaut kā šis mauc nonstopā. Ieliekot  pārtraukuma funkcijā breikpointu, debageris neielec funkcijā un neapstājas. It kā infas baigi daudz, bet tur jau laikam tā problēma.

Share this post


Link to post
Share on other sites
Jurkins

Skaidrs, ka tagad visiem prātā kroņvīruss, bet vai tad tāpēc visai dzīvei jāapstājas.

Izvilku no tumbočkas šitādu - https://www.ebay.com/itm/USB-Logic-Analyzer-Device-Set-Compatible-to-Saleae-24MHz-8CH-for-ARM-FPGA-M100/324112154593?hash=item4b7696ffe1:g:3HIAAOSwFG1eeJ0S

Kaut kad biju pasūtījis, bet kā iesīkstējis vecis turpināju ņemties pa vecam. Baigā lieta. Iesaku visiem, kuri kaut ko dara ar arduino vai visādiem citiem verķīšiem.

salease.thumb.png.b4b234c49ffd39da8136acc4816e6083.png

Konkrētajā gadījumā parāda, kā nolasās visi SI4432 reģistri. Protams, lētais gals u.t.t. Vairāk par 8 Ms/sek. negrib, lai gan rakstīts 24.

Tagad esmu uzsūtījis šādu -  https://www.ebay.com/itm/DSLogic-Basic-USB-Logic-Analyzer-16Ch-100MHz-4Ch-400MHz-Xilinx-Spartan-6-FPGA-/261859212050?_trksid=p2349526.m4383.l4275.c10#viTabs_0

  • Patīk 1

Share this post


Link to post
Share on other sites
Raimonds1

Vai ar šo var realizēt reverso inženieriju?

Share this post


Link to post
Share on other sites
Jurkins
Posted (edited)

Kādu reverso inženieriju? Tak beidz tuftu dzīt.?

Tu saproti vispār, kas ir "loģiskais analizators" un ko viņš dara? "Pieraksta" signālus uz loģiskajām izejām/ieejām.

Edited by Jurkins

Share this post


Link to post
Share on other sites
ggg97

Vot analogo signālu logeri uz pāris kanāliem pa piečuku + būtu interesanti. Pat vairāk par 100kHz nevajadzētu. Ir ģjošie osciļu kiti, bet tie nav logeri.

Share this post


Link to post
Share on other sites
AndrisBB
Posted (edited)

Es izmantoju abus divus, plus ir vēl IKA Logic, kas ir diezgan labs. Darbā ir pāris oriģinālie Saleae, gan vecāki gan jaunāki, bet price/performance ziņā iepriekšējie ir labāki.

Tā ķīniešū klona pluss ir ka relatīvi mažiņs, ātri piespraud kautko pārbaudi un iemet atpakaļ kastē kur citi loriņi glabājas. Mīnuss ka viņam Mini USB vads (vismaz manam), kas parasti ir diezgan resns. Plus faktiski nekas cits vairs Mini USB neizmanto, tapēc mūžīgi jāmeklē vads. Kad uz galda pilns jau ar višādiem štrundiem, tad katrs extra restais vads traucē.

IKA Logic tie paši plusi/mīnusi kas ķīnietim, tikai protams sampling rate 200mhz, salīdzinot ar kā teici ķīnieša 8mhz. Software arī interesanta, bet laba. Daudz visādi protokolu decoderi utt.. Abiem protams mīnuss ka tikai 4 kanāli, 8 kanāli es domāju būtu labs kompromiss.

DS Logic man ir viens no pirmajiem modeļiem, vēl no kikstartera. Pa lielam viss taspats kad @Jurkins  linkā, bet USC-C vietā Mini-USB un pats galvenaiss mīnuss salīdzinot ar jaunāko medeli ir ka visi inputi ir uz viena konektora. Ja vajag pieslēgt kādus 8 inputus, tad nākas cīnīties ar to vadu kalnu, plus vēl izpīpēt kurš ir kurš kanāls. Ganjau tapēc viņi sadalija to konektoru vairākos mazākos. Cits mīnuss ka softwāre uz Linuksa pašam jākompilē no source koda :D, nezinu varbūt ka kas mainijies tagad. Bet citreiz vajag kautko fiksi nomērīt, bet skuju, uz konkrētā datora nav softwāres, nākas downloadot, kompilēt, tad atkal kautkas nekompilējas :D vieglāk izvilkt to IKA vai ķinieti (ja nav nekas kritisks)

Edited by AndrisBB

Share this post


Link to post
Share on other sites
Usins
Posted (edited)

arī šat tad rotaļājos ar šādu Salae klonu. To nolasīto pieglabāju. Dažos gadījumos rodas vēlme pēc "play" pogas.  Nav kāds gatavs risinājums? laikam nebūs jo gribēšu lai pēc viena kanalā trigera citu "atskaņotu" noteiktā laikā us, ko vajadzētu izdoties no stm, uz arduino par lēnu bija. 

 

pirms 9 stundām , ggg97 teica:

Vot analogo signālu logeri uz pāris kanāliem pa piečuku + būtu interesanti. Pat vairāk par 100kHz nevajadzētu. Ir ģjošie osciļu kiti, bet tie nav logeri.

piespraud arduino nano ar usb vadu pie datora un logo cik uziet, ar SerialPlot, piemēram tas pat izskatās glīti. nu rakstīt uz sd vēl pāris euro klāt, bez datora.

ak 100kHz, nu vvz

Edited by Usins

Share this post


Link to post
Share on other sites
Jurkins

Nesapratu īsti. Tu gribi ierakstīt kaut kādus, piemēram, SPI vai I2S vai UART vai HVZ signālus un pēc tam izmantot kā emulatoru?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...