Jump to content

Assemblers


Recommended Posts

  • Replies 193
  • Created
  • Last Reply

Top Posters In This Topic

  • AndrisBB

    44

  • Raimonds1

    34

  • M_J

    20

  • Inspektors Caps

    14

Top Posters In This Topic

Popular Posts

Vēl labāk pašam uztaisīt savu CPU, tad viss būs skaidrs Man universitātē vajadzēja taisīt CPU uz FPGA. Uztaisiju kautko līdzīgu MIPS arhitektūrai tikai ar 16 22 instrukcijām. Reāli arī varēja ra

Es  esmu vecs un neaktuāls, bet es teikšu tā - ja grib saprast kā apmēram darbojas programmēšanas valodas , ļoti vēlams ir apgūt assembleru pat ja viņā nekad nekas netiks rakstīts. Manā laikā to vēl u

Nevaru stāstīt kam tas vajadzīgs un ko tieši tas dara, bet apmēram jau 2 gadus, ar nelielu pārtaukumu pa vidam, es un daži citi kolēģi strādājām pie viena projekta. Pagaidām gan izskatās ka tuvākājā l

Posted Images

AndrisBB

Intereses pēc viskautko ir lietderīgi aptaustīt.

Reali rakstīt kodu iekš assamblera - ne visai, maz ticams jebkad dzīvē izmantosi.

 

Lietderīgi varētu būt apskatīt kāda ir atšķirība starp x86 (CISC) un piemēram ARM, MIPS (RISK) instrukcijām, un kapēc vienas ir efektīvāks par otrām. 

Edited by AndrisBB
Link to post
Share on other sites
Anonīms Alkoholiķis

Aptaustit assambleri vareja, kad drunk_lizard vel curaja bikses. Kad betons vel bija normals_cilveks, to jau sauca par apgrabstisanu. Bet ja to sauc musdienigos terminos - ta ir panemsana ta, ka pec tam aiz assamblera paliek bruna stripa.

Link to post
Share on other sites
zeds

Es  esmu vecs un neaktuāls, bet es teikšu tā - ja grib saprast kā apmēram darbojas programmēšanas valodas , ļoti vēlams ir apgūt assembleru pat ja viņā nekad nekas netiks rakstīts. Manā laikā to vēl universitātē mācīja un es ļoti priecājos, ka es to zinu jo rakstot C kodu daudz maz sapratu kas tur apakšā darās.

Tagad kad populārākās valodas Java , Python u.c. ģenerē baitkodus - varbūt pēc tā vairs nav vajadzības.

Skatoties no malas programmētāji kas mācījās asembleru arī citās valodās piedomā kas notiek apakšā piemēram saliekot divus stringus  (Java string vs String Buffer piem.) un netaisa gigabaitīga masīva palielināšanu caur kopēšanu ( piemēram ) vai visa faila ielasīšanu atmiņā lai atrastu vienu rindiņu.

 

Btw - nekad dzīvē man nav bijusi tāda ekstāze kā programmējot dzelžus asemblerā , tikai kam to tagad vairs vajag... Bet tas bija reāls prieks.

  • Patīk 1
  • Atbalstu 3
Link to post
Share on other sites
AndrisBB
Pirms 21 minūtēm , zeds teica:

citās valodās piedomā kas notiek apakšā piemēram saliekot divus stringus

Pietiek ar C vai Rust, vai jebkuru citu valodu kas strādā tādā līmenī, lai to saprastu. Assablers tur nav vajadzīgs.

Link to post
Share on other sites
ieleja

@AndrisBB

zinot Rust, tu zini ko un kā Java

kas notiek apakšā piemēram saliekot divus stringus  (Java string vs String Buffer piem.)”?

Link to post
Share on other sites
AndrisBB

Doma jau laikam tur nebij par specifiski Javu kā tādu, bet aukstāka līmeņa stringiem vispārīgi.

Piemēram stings_a + string_b būtībā izraisīs abu stringu pārkopēšanu uz jaunu vietu atmiņā. 

Iekš Rust tu vari dabūt visu buķeti.

Edited by AndrisBB
Link to post
Share on other sites
Anonīms Alkoholiķis

Bet ar c, tā liekot stringus kopā (stringa+stringb), visdrīzākais tiksi pie crash.

  

Link to post
Share on other sites
binary
pirms 2 stundām , zeds teica:

Tagad kad populārākās valodas Java , Python u.c. ģenerē baitkodus - varbūt pēc tā vairs nav vajadzības.

Nu kā to ņem. Tam pašam Python reizēm ir vērts palasīt to baitkodu. Ja ASM ir kaut nedaudz aptaustīts, tad tas varētu būt vienkāršāk.

 

pirms 2 stundām , zeds teica:

Btw - nekad dzīvē man nav bijusi tāda ekstāze kā programmējot dzelžus asemblerā , tikai kam to tagad vairs vajag... Bet tas bija reāls prieks.

Tagad to varbūt arī nevajag. Jebšu vajag, bet ļoti, ļoti reti. Mazliet biežāk vajag nevis rakstīt, bet lasīt ASM, bet arī - ļoti reti.

Link to post
Share on other sites
MIGs

Ne vienmēr, bet visbiežāk par ASM krutumu runā tie kas paši tā daudz nemaz neprogrammē, kur nu vēl lielus projektus.

ASM ir sava vieta, bet ļoti, ļoti šaura un tā vairāk ir saistīta ar hackošanu, crackošanu, reverse enegenring un tādām lietām. Daudz mazāk tur kaut kas tiek rakstīts.

Kopējā izpratne jā, laba štelle, bet nevajag arī pie tā iestrēgt.

Bet nu divu mainīgo apvienošana izklausās pēc sagooglēta piemēra. Realitātē parasti ir daudz,daudz lielāki WTF ielaisti un jebkurā valodā.

  • Atbalstu 1
Link to post
Share on other sites
AndrisBB
Pirms 4 minūtēm , MIGs teica:

Realitātē parasti ir daudz,daudz lielāki WTF ielaisti un jebkurā valodā.

EeKK07dVoAIi21U.png

 

 

N.B. : the "usage" section does not guarantee that isEven('2')  actually returns true.

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

Btw - nekad dzīvē man nav bijusi tāda ekstāze kā programmējot dzelžus asemblerā , tikai kam to tagad vairs vajag... Bet tas bija reāls prieks.

Pievienojos. Tas ir reāls kaifs, kad ir uzprojektēta plate, salodēta, pamazām iepūst tajā dzīvību. Negribu sevi saukt par programmētāju, drīzāk par elektroniķi kurš arī programmē. Un kā tādam, kas daudz ir lodējis tranzistorus, loģiskos elementus, trigerus, skaitītājus, nobīdes reģistrus, arī domāšana notiek šādās kategorijās un assembleris liekas vistuvākais šadam domāšanas veidam.

Link to post
Share on other sites
AndrisBB

Problēma jau tāda ka, lai kautko jēgpilnu uzrakstītu uz tā mikrokontrolliera assamblerī būtu jāraksta kods pāris mēnešus.

Ja tur kautkadu taimeri izmantot, pārslēgt pāris pinus, pwm, varbūt primitīvu i2c, utt, tad jau var čakarēties, bet ja vajag Ethernetu, USB vai kauko interesantāku, tad apkakāsies tur assamblerī kautko rakstīt, pat ja tas TCP/IP staks jau ir uzrakstīts un javag viņu tikai lietot.

Link to post
Share on other sites
M_J

Katram savs. Man nevajag nekā no Tevis nosauktā, datu apmaiņai izmantoju Modbus RTU, tagad arī CAN, un tas nudien nebija iemesls lai apkakātos. Starp citu, runājot par to pašu Modbus RTU saziņai ar PC. Gan Delphi 7, gan Javā to izveidot datora pusi bija lielāks čakars kā mikrokontrojiera pusi. Ja mikrokontroliera pusē ieturēt 3.5 simbolu pauzi starp paketēm nebija nekādu problēmu, tad no datora puses precīzas pauzes nesanāk. Nu labi, ne Windows, ne Linux (izņemot speciālgadījumus) nav reāla laika sistēmas, bet kas traucē ievērot precīzus intervālus visādiem frekvenčniekiem, PLC kontrolieriem? Tās pauzes starp pieprasījumu un atbildi peld visai plašās robežās un ir krietni garākas par standartā minimāli noteiktajiem 3.5 simboliem. Katra lieka milisekunde samazina datu apmaiņas ātrumu, bilde vizualizācijā sāk bremzēties un raustīties. Nav smuki. Bet datu apmaiņa, kaut arī svarīga, maniem dzelzīšiem nav pats galvenais. Lietas kas maniem dzelzīšiem jādara nav saistītas ar sarežģītiem matemātiskiem aprēķiniem, bet ar noteiktu kēžu ieslēgšanu un izslēgšanu precīzos laika momentos. Tev šādas lietas ir ērtāk rakstīt iekš C, man iekš assemblera. Nu labi, paņemšu kādu gatavu bibliotēku, pielietošu, bet kaut kas man nestrādās tā, kā es gribu. Varbūt sīkums, varbūt priekš lietošanas nebūtisks, bet kaitinošs, kā tās peldošās pauzes starp paketēm, bet man nebūs miera, kamēr nebūšu sataisījis tā, kā man gribas. Ķidāšu ārā, kāds ir saģenerētais assemblera kods, kamēr atradīšu vainu. Ir jau bijis. Tad jau labāk taisu uzreiz tā, kā man patīk.

p.s, Pašreiz kaifoju, spēlējoties ar CAN maģistrāli. Jānodrošina sakari starp diviem kontrolieriem, kas viens otru nesaprot. Izpētīju abējo CAN paketes, varu "sarunāties" ar abiem. Tagad lieku abas šīs daļas kopā. Protams, abi kontrolieri, no mana viedokļa ir baigie "bremzes", atkal tas pats stāsts par garajām un peldošajām pauzēm starp paketēm, gan jau tur viss ir rakstīts C. Atkal uz ekrāna būs drebelīga bilde.

Link to post
Share on other sites
138
pirms 2 stundām , AndrisBB teica:
Spoiler

EeKK07dVoAIi21U.png

 

 

N.B. : the "usage" section does not guarantee that isEven('2')  actually returns true.

No kāda avota nāk šī pērle?

Link to post
Share on other sites
AndrisBB

Kāds sakars pauzēm ar C vai Assambleri. Izklausās ka tu tur kautkādus busy loopus izmanto, izkalkulē cik CPU frekvence un to izmanto, tam tak domāti timeri un interrupti. Tad nav nozīmes kādu valodu tu tur izmanto (C, Rust, Assambleri, vai kas nu kuram patīk).

 

Kad diendienā jāraksta firmware, tad assamblerī tas vienkārši būs neefektīvi un lēni. Protams ja kautkur vajag garantētu izpildījumu vai ko "optimizēt", tad var čakarēties, bet reāli jau kompilātors parasti uzraksta lābāku kodu kā cilvēki.

Nav jau nozīmes vai tas CAN vai kas. Ja man klients prasa ko uzrakstīt priekš mikrokontroliera un es teikšu ka rakstīšu assamblerī un tas man aizņems 3 mēnešus un izmaksās X summu, tad tak mani pasūtīs 3 mājas tālāk, ja to pašu var C uzrakstīt 2 nedēļās. Pietam tas kods nebūs izmantojams uz cita devaisa.

Tapēc saku ka ja raksta primitīvu kodu, tad jau aiz garlaicības var ņemties, bet maz ticams ka tādā veidā izdosies ilgtermiņā pelnīt naudu.

 

Jebkurā gadījumā es nesaprotu ko tu vari uzrakstīt labāku assamblerī, ko nevar C.

 

Pirms 13 minūtēm , 138 teica:

No kāda avota nāk šī pērle?

No reāla koda. Paskaties kas notiek iekš JavaScripta NPM pakotnēm un tad ne tādu vien redzēsi.

Edited by AndrisBB
Link to post
Share on other sites
M_J
Just now, AndrisBB teica:

Kāds sakars pauzēm ar C vai Assambleri

  Varbūt neprecīzi izteicos. Programmējot kontrolierus assemblerī, man precīzu laika intervālu ievērošana nesagādā grūtības (paldies, ka atgādināji par taimeriem un interruptiem, pastāsti vēl zvejniekam par zivīm). Mani kaitina, ka bremzē citi, ne manējie, kontrolieri nevaru vien sagaidīt atbildi, nesaprotu, ko viņi tur čammājas. Zinot, ka assemblerī programmē vairs tikai retais, un redzot šīs problēmas, kas saistītas ar acīmredzami ne-assemblerī programmētiem kontrolieriem, negribot uzprasās jautājums par minēto problēmu un programmēšanas vides korelāciju. Neliels piemērs - Modbus RTU ir nepieciešams rēķināt CRC16, CAN - CRC15. Daudzi kontrolieri, to dara dzelžu līmeni. Bet tādā gadījumā - ja CAN paketē kaut kas nav kārtībā, kontrolieris to paketi "neredz". Jā, protams, ir visādi kļūdu karogi reģistros un tādā garā, bet, lai atrastu problēmu, man vislabāk tad patīk izķidāt to paketi pa bitiem, izmantojot jau minētos taimerus un interruptus. Un arī CRC tad nākas rēķināt pašam. Internetā ir neskaitāmi piemēri, kā to izdarīt, praktiski visi C valodā, bet, kā izskatās visi copy/paste no viena avota. Skatos uz C kodu - maksimāli vienkāršs, neredzu, kur ko varētu izdarīt optimālāk. Pārliku assemblerī no C valodas 1:1 visas tās darbības ar reģistru bīdīšanām xor-iem un citām darbībām, kas nu tur ir. Un redzu, ka tur ir liekas darbības, ka assemblerī to pašu, izmantojot kontroliera arhitektūras īpatnības, to, kā tiek izpildīta katra komanda, kādi karogi pie katras komandas tiek uzmesti un citas nianses, var izdarīt racionālāk. Paliek vairāk laika katra bita izķidāšanai, varu precīzi izsekot, kā atšķirīgu kvarca frekvenču dēļ "aizpeld" bitu "frontes" un, piefiksēt kurā momentā nojūk sinhronizācija. CAN kontrolieros starp citu šī problēma tiek kompensēta dzelžu līmenī, bet nebija īsti skaidrs, kā tā strādā, pie salīdzinoši lielas raidītāja un uztvērēja kvarca frekvenču atšķirības, kad kaut kādu iemeslu dēļ jālieto kvarcs, ar kuru nevar iegūt precīzi CAN standartam atbilstošu ātrumu. Bet - katram savs. Tev patīk ātri taisīt daudz un efektīvu kodu, man patīk čakarēties un meklēt problēmu risinājumus gadījumos, kur citi jau ir pasūtījuši divas mājas tālāk.

Link to post
Share on other sites
marrtins
pirms 2 stundām , AndrisBB teica:

rakstīšu assamblerī un tas man aizņems 3 mēnešus un izmaksās X summu, tad tak mani pasūtīs 3 mājas tālāk, ja to pašu var C uzrakstīt 2 nedēļās

Klau, nu ko tu te ņemies. TCP stacku kodēs asmā, vēl sazin ko. Varbūt grāmatvedību asmā kodēt? Es arī varu PHP ātrāk :D Nu un? Tak augstāk jau pateica - ir pielietojums, bet tāpēc jau nevajag tagad visu asmā rakstīt un salīdzināt nezin ko tur var ātrāk un lētāk saprogrammēt.

 

Personīgi uzskatu, ka asm un, to, ka tam komplektā nāk saprašana kā darbojas hw, zināt par skādi jau nenāks. Vai visiem to vajag - nē. Vai bez asm zināšanām var darboties programmēšanas nozarē - jā.

Link to post
Share on other sites
binary

Savulaik vajadzēja noskaidrot, vai kompilators vienu drazu izoptimizē. Draza tajā gadījumā - atmiņas pārrakstīšana ar nullēm tieši pirms atbrīvošanas. Tīri tehniski tāda darbība ir lieka, priekš kam gan rakstīt kaut ko atmiņā, kura uzreiz tiek atbrīvota. Bet, redz, "biznesam" to vajadzēja. Tad nu noderēja tas, ka nav bail lasīt ASM (lai arī sarakstījis esmu vien ~30 rindas pirms 15-20 gadiem). Noskaidroju, ka kompilators ne vien atstāj to kodu, bet pat nooptimizē dažādos veidos, atkarībā no atmiņas gabala izmēra - kaut kur ciklu aizvieto ar sistēmas f-jas izsaukumu, kaut kur ciklu unrollē, kaut kur charu vietā nonullē integerus utt.

 

Tai darbā kolēģiem arī laiku pa laikam nācās lasīt ASM, jo dažādi kompilatori gana bieži saģenerēja līku ASM.

 

Jāsaka gan, ka tas ir tāds izņēmuma gadījums. Nevienā citā darba vietā vai darba intervijā pagaidām neesmu jutis, ka ASM zināšanas būtu kaut nedaudz noderīgas.

Edited by binary
Link to post
Share on other sites
ieleja

pirms pārdesmit gadiem divos projektos esmu lietojis ASM, abos bija ātri jāsavāc dati no ACP bufera, viens reģistrēja zibens spērienu lidmašīnā, otrs raķetes dzinēja avārijas uzsprāgšanu, tas bija Borland Turbo C ar inline asambleru, kādas ~100 rindiņas, varbūt varēja iztikt arī ar C, bet kaut kāds izstrādes grupas vadītāja un dzelžu veču lēmums bija, ka asamblerā, toreiz likās interesanti

Link to post
Share on other sites
Raimonds1
pirms 9 stundām , 138 teica:

No kāda avota nāk šī pērle?

Manas programmēšanas pamatu zināšanas  liek domāt, ka te jādala skatlis ar 2 un jāskatās, vai atlikums ir 1 vai 0.

Vienkārša odd or even programmiņa

https://www.programiz.com/cpp-programming/examples/even-odd

is odd vietā false, is even vietā - true

AAADCDC.png

 

Taču, no programmas rakstīšanas viedokļa

else if (number ==1) return false;

else if (number ==2) return true;

copy - paste un pārraksta tik 1 ciparu.

Programmētājam ērti, kā tai iekārtai - ta pofig, jaudas pietiek, procesors strādā megahercos vai gigahercos, gan jau tiks galā!

Edited by Raimonds1
Link to post
Share on other sites
138
Pirms 18 minūtēm , Raimonds1 teica:

Programmētājam ērti, kā tai iekārtai - ta pofig, jaudas pietiek, procesors strādā megahercos vai gigahercos, gan jau tiks galā!

Zelta vārdi!

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

Zelta vārdi!

Sevišķi tad, ja šī iekārta lido kaut kur uz Marsu vai Jupīteru.

Nafig arhitektam zināt materiālu īpašības, lai ar to sergeti tiek galā.

Link to post
Share on other sites
binary
Pirms 42 minūtēm , Raimonds1 teica:

Manas programmēšanas pamatu zināšanas  liek domāt, ka te jādala skatlis ar 2 un jāskatās, vai atlikums ir 1 vai 0.

Un ar to tad arī darba intervija var beigties.


Starp citu, dalīšana gadījumā nav "dārga" operācija?

Link to post
Share on other sites
Anonīms Alkoholiķis

Tadi ka Raimis var taisit

%2

, lai parejiem paliek

&1

.

Link to post
Share on other sites
AndrisBB
pirms 1 stundas , binary teica:

Tad nu noderēja tas, ka nav bail lasīt ASM

Nu tur arī viss pielietojums.

Es tak nesaku navar rakstīt ASM, bet nu tas vienkārši nav vajadzīgs un nav efektīvi, pietam kods nav portabls. Var šur tur kautko "pieoptimizēt", bet nejaunu rakstīt pietiekoši lielu koda bāzi.

Ja to dara kā kautkādu one-off lietu, tad varbūt nav tik traki. Bet ilgtermiņā tāds bizness nav ilgtspējīgs, it īpaši ja viss bizness ir rakstīt kodu.

Ja kautkautkāda elektronikas firma taisa kautkādu kontrolieri un lielākais darbastundu patēriņš ir uz citām pozīcijām, tad jau var laiku mazliet arī izniekot.

 

Kautkādas tur kosmosa tehnoloģijas nav jēgas te pieminēt, tas ietilpst tajos 0.01% no gadījumiem. Rakstu kodu priekš aviācijas industrijas visulaiku, tur neviens tādu kodu nemaz nepie;nemtu, ja vien nav kautkāda konkrēta prasība.

 

Kāreiz kolēģi tagad strādā pie pāris "gudro" kafijas automātu un ledusskapju projektiem, gribētu redzēt viņu reākciju ja būtu kods jāraksta ASM :D

 

Tas viss tikai mans viedoklis un novērojumi, tapēc nav ko uztvert personīgi. 

Edited by AndrisBB
Link to post
Share on other sites
Raimonds1
Pirms 15 minūtēm , AndrisBB teica:

Kaut kādas tur kosmosa tehnoloģijas nav jēgas te pieminēt, tas ietilpst tajos 0.01% no gadījumiem. Rakstu kodu priekš aviācijas industrijas visu laiku, tur neviens tādu kodu nemaz nepieņemtu, ja vien nav kaut kāda konkrēta prasība.

Labs teksts.

Link to post
Share on other sites
AndrisBB
pirms 1 stundas , Raimonds1 teica:

Programmētājam ērti, kā tai iekārtai - ta pofig, jaudas pietiek, procesors strādā megahercos vai gigahercos, gan jau tiks galā!

Piemērā gan JavaScript, bet ja būtu kautkāda kompilējama valoda, tad kompilātors visdrīzāk būtu pietiekoši gudrs un aizstātu to tāpatās ar kautkādu modulo instrukciju.

Var jau paskatīties ko dažādi kompilātori ar dažādām optimizācijām dara tādis gadījumos.

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

Rakstu kodu priekš aviācijas industrijas visulaiku

Padalies, iedod kādu piemēru, kā es par CAN datu līniju. Aviācijas industrija ir plašs jēdziens, gribas saprast, vai tas kontrolieris ieslēdz lampiņu pasažierim virs galvas, vai ar mikrosekunžu daļu precizitāti vada procesus dzinējā. Bet laikam jau nedrīksti stāstīt.

Link to post
Share on other sites
Anonīms Alkoholiķis

Nebrinitos, ka tiek kontrolets turbinas rotoru quick-release mehanisms, degvielas sukna darbibas virziens un pilotam piepiipeetaajs..

Link to post
Share on other sites
Raimonds1

else if (number ==1) return false;

else if (number ==2) return true;

else if (number ==3) return false;

else if (number ==4) return true;

else if (number ==5) return false;

else if (number ==6) return true;

else if (number ==7) return false;

else if (number ==8) return true;

else if (number ==9) return false;

else if (number ==10) return true;   ir tāda priekšrocība, ka, taisot copy-paste un liekot klāt desmitus, simtus un tūkstošus, var savākt DAUDZ KODA RINDU!!!!! Par to taču maksā. Grāmatvedis tās rindas saskaita.

 

Hipotēze! Kārtīgai, pelnošai firmai jāatrisina daudzi, savstarpēji pretrunīgi jautājumi.

1.Jāiestāsta patērētājam, ka uzrakstīts daudz koda un tas aizņem laiku.

2. Kodam tomēr jābūt efektīvam, tāpēc vajadzīgs labs kompilators, kas pamana, ka else if atkārtojas, konstatē pirmo un pēdējo skaitli, skaitļu virknes pārrāvumus, ja tādi ir un uzģenerē smuku, īsu mašīnkodu, kas patērētājam nekādi nav pieejams, ka tas tik vienkārši.

3. Jāuztur profesionalitātes imidžs.

Link to post
Share on other sites
AndrisBB
pirms 1 stundas , M_J teica:

Padalies, iedod kādu piemēru, kā es par CAN datu līniju.

 

Nevaru stāstīt kam tas vajadzīgs un ko tieši tas dara, bet apmēram jau 2 gadus, ar nelielu pārtaukumu pa vidam, es un daži citi kolēģi strādājām pie viena projekta. Pagaidām gan izskatās ka tuvākājā laikā netiks pabeigts visādu tehnisku problēmu un atlikušā darba apjoma pēc, kautgan vairāk kā 1kk jau algās vien notērēts. Projekts tehniski diezgan sarežģīts un interesants.

 

Projekts ir vairāk kā sistēma un aprakstot vienu komponentu būs grūti saprast jēgu.

 

Pa lielam ir viena kaste, kurā iespraužas kameras, pagaidām 4. Kameras ļoti garā vadā, bet visas otrā galā vienā vienībā, katra vienkārši filmē savādāka veida info, kautkgan fokus uz to pašu vietu.

Visa sistēma apmēram tāda:

* Katrai kamerai (kad runājam par kameru, tad tas ir apmēram 1.5x1.5cm modulis ar viskautko) ir iebūvēts image sensors (katrai kamerai savādāks), akselometers, termoments un dažādi citi eksotiskāki sensori, ko atkal nevar pieminēt, un protams MCU kas to visu apstrādā. Pa lielam MCU paņem no sensora bildi, bildē iekodē arī ekstra info (no sensoriem, atbildes uz komandām no galvenā kontroliera) utt. No "kastes" kamera saņem komandas pa to pašu vadu, kur video tiek sūtīts video (analogs), tikai pretējā virzienā izmantojot custom DataLink līdzīgu protokolu. Būtībā 1-wire risinājums, kur analogs video iet vienā virzienā un tad pretējā virzienā starp kadriem iet komandas, firmware updeiti utt. To visu apstrādā cameras MCU. Akselometers vairāk vibrāciju un lenķu kompensēšanai, kas daļēji tiek darīts uz kameras moduļa un daļēju uz galvenās kastes.

* Uz galvenās kastes katrai ieejai priekšā ir FPGA/analoga čipa kombinācija (tur ir "soft CPU" uz tā FPGA), lai pārveidotu analogo video uz digitālu un "iebarotu" iekš Freescale IMX8 galvenā prpcesora caur paralēlo video portu. Tas FPGA arī saņem komandas no sistēmas un aizsuta pretējā virzienā. Tam visam atkal jāraksta draivers. Galvelais CPU runā ar FPGA caur i2c.

* Video tiek apstrādāts izmantojot Gstreamer pipelainu. Atkal jāraksta custom plugini, lai izmantotu IMX8 hardware iespējam bildes apstrādei, custom draiveri tam visam, plus viens cits FPGA. Ah jā "jaizvelk" vēl custom info no video stream, bet tas relatīvi sīkums. Neliels AI, lai kombinētu visus 4 video stremus, jo katram sava specifika.

 

Ganjau kautko interesantu aizmirsu pieminēt :)

 

Nav gluži CAN, bet datu apjomi ir relatīvi lieli, tolerances mazas, tik tālu ka vada garums vai locījuma vietas ierobežo to ko var izdarīt, error checki, CRC utt netrūkst.

 

Tagad gan sākām veidot alternatīvu risinājumu izmantojot Xilinx Zynq, kur galvenais ARM procesors un FPGA uz viena čipa. Kas varētu atļaut izspiest mazliet labākus rezultātus.

 

MCU iekš katras kameras iet ar mazliet savādāku freqvenci, bet ir viens kurš 72mhz (Cortex M4), un tad vairāki ap 200mhz (Cortex M7). FPGA "soft" CPU apmēram tāpatās. Tas tīri kontekstam. Visos varētu rakstīt firmwāri ASM.

Edited by AndrisBB
  • Patīk 4
Link to post
Share on other sites
AndrisBB

Nu es pārāk bieži pie MCU projektiem nestrādāju, vairāk kautko palabot, vai kautko pielikt. Mūsu ofisa un mana specialitāte ir vairāk kerneļa un zema līmeņa userspeisa jomā.

Mums ir ofiss Frankfurtē, kur viņi vairāk specializējas tanī jomā. Tapēc arī ir tā ka kad viņi netiek galā, tad braucu (vai kāds) uz turieni, tad arī sanāk vairāk tādi MCU tipa projekti.

 

Pēdējais interesantais (ja neskaita jau nosaukto) MCU projekts bij vairāk tāds R&D. Novērtēt cik labi Rust darbojas uz STM32, kādi ir performances ieguvumi/zaudējumi. Portēt Rust standarta bibliotēku uz STM32 - viss darbojas lieliski ar Core bibliotēku, bet ja gribas stringus, vectorus utt, tad vajag Standarta, kas itkā nedaudz virs Core, jeb izmanto Core, un tad vajag atmiņas allokāciju no heapa (vektoriem, stringiem, utt), plus daudz citas lietas.

 

Starpcitu rezultāti bij diezgan labi. Neatpaliek no C.

 

 

Edited by AndrisBB
Link to post
Share on other sites
usver
pirms 17 stundām , AndrisBB teica:

N.B. : the "usage" section does not guarantee that isEven('2')  actually returns true.

ja parametrs ir int, tad pat nekompilēsies // piekasīšanās:)

 

Autor, programmētājam ir veselīgi kaut drusku zināt asembleru, būt kaut ko tajā taisījušam. Mācēt sporta pēc paskatīties, ko aplikācijas dara iekšpusē. Ikdienā asemblers nav vajadzīgs - ja nonāksi vietā, kur darba devējs prasīs asemblerā kaut ko uztaisīt, tad blakus būs 5 senior kolēģi, kas bakstīs ar pirkstu, līdz kaut ko sajēgsi. Par praktisko pielietojumu nevajag iespringt, ja karjerai tas nav kritiski. Daudz svarīgāk ir mācēt uztaisīt lielas, strādājošas lietas - vēlams, vairāk kā 1 valodā.

 

pirms 5 stundām , ieleja teica:

viens reģistrēja zibens spērienu lidmašīnā, otrs raķetes dzinēja avārijas uzsprāgšanu

kā šito testēja?

  • Patīk 1
Link to post
Share on other sites
ieleja
Pirms 2 minūtēm , usver teica:

nekompilēsies

 

tas bija C, nevis JS? (neiedziļinājos)

 

Pirms 3 minūtēm , usver teica:

kā šito testēja?

 

vispār tā bija raķete zeme-zeme, pirmie testi bija institūtā, dzelzs kārbā piepumpējot ar eļļu, līdz dzinēja korpuss eksplodē, pēcāk man nebija pielaides

 

zibens mērīšanai vispār nelaida klāt, nodevām slēgtā a/k, kas nodeva pasūtītājiem; krievi gan saka, ka tagad viņu lidmašīnas ir zibensdrošas, tātad arī mūsu pūliņi varbūt līdzējuši

 

apskatījos “portfolio”, esmu arī komerciāli programējis kaut kādus komerciālus niekus asemblerā kapitālistiem, piemēram serial2parallel adapteru draiverus

 

  • Patīk 2
Link to post
Share on other sites
Jurkins
1 stundu atpakaļ, ieleja teica:

raķete zeme-zeme

Tad jau speciālisti mums ir, varētu militāro rūpniecību attīstīt.😉

  • Bēdīgs 1
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...