Jump to content
Jacob

Assemblers

Recommended Posts

M_J
1 stundu atpakaļ, Liam Ethernety teica:

Dažkārt dzirdot, ja kādi kolēģi apspriež tehnoloģiju, par kuru pats neesi īsti lietas kursā, gribot negribot ieslēdzas kaut kāds fear of missing out. Un tad ir jautājums vai tev vajag investēt pašam laiku tās tehnoloģijas izpētē, vai nevajag. Atmaksāsies/neatmaksāsies, utt.

 

Nepatīk domāt kategorijās atmaksāsies/neatmaksāsies. Bet pie CAN apguves nonācu vajadzības spiests, lai gan plati ar CAN kontrolieri biju uzzīmējis un izmantoju jau sen, tikai neizmantoju to CAN daļu. Tagad vajadzība spieda to apgūt un ir arī interesanti. Ja rēķina kategorijās atmaksāsies/neatmaksāsies, protams, ka par konkrēto izpēti atsevišķi neviens nemaksās, maksā par projektu kopumā, kur ir gana daudz bezgala garlaicīgas, toties labi apmaksātas pozīcijas.

 

1 stundu atpakaļ, Liam Ethernety teica:

Pie reizes domājot par elektrību un milisekundēm vajadzētu arī padomāt kādas būtu bijušas produktu ("websūdu") radīšanas izmaksas, laiks, prototipēšana, jaunu versiju palaišana, iterations... Biznesa prasības galu galā.

Citiem vārdiem sakot - tirgus ir visu nolicis pa plauktiņiem tā, kā tam ir jābūt. Filozofēt par to, ka visu vajag darīt ar assambleri, jo tad mēs tērēsim 20x mazāk elektrības, ir kaut kā jocīgi.

It kā tirgus ir nolicis visu pa plauktiņiem, bet no otras puses, ja paskaties uz kādu lietu un redzi acīmredzamas lietas, kas ir jātaisa savādāk, kāpēc atražot kaut ko, ko uzskati par aplamu, tikai tāpēc, ka tā dara visi, un tirgus ir visu nolicis pa plauktiņiem. Turklāt ļoti regulēts tirgus. Salīdzinot ar to, kā ir attīstījusies auto elektronika un motoru vadības sistēmas automobiļos, es biju šokā, ieraugot, kādā līmenī ir vadības sistēmas elektrostaciju gāzes motoriem. Tur valda senvēsture! 21. gadsimta motoriem aizdedze ir no kāda 75. gada, bet puse no vadības automātikas loģikas ir būvēta uz relajiem, atkārtojot vēsturē pirmos mēģinājumus radīt skaitāmās mašīnas. Tam visam kaut kā tiek piekabināts tačskrīns un internets. Nesaprotu, kāpēc lampu etaps ir izlaists. Es nezinu, ko Woodward, Heinzmann un citi šīs jomas "līderi" ir samaksājuši vai kādā citā veidā sarunājuši, piemēram ar Bosch, ka tas nenāk viņu lauciņā un ar vienu vēzienu neaizslauka viņus vēstures mēslainē?

Share this post


Link to post
Share on other sites
AndrisBB
Pirms 57 minūtēm , Inspektors Caps teica:

Skype nomira.

Kur teikts ka Skype nomira? Varbūt tas r taspats Teams.


Pirms 45 minūtēm , M_J teica:

Tur valda senvēsture! 21. gadsimta motoriem aizdedze ir no kāda 75. gada, bet puse no vadības automātikas loģikas ir būvēta uz relajiem

Tapēc ka to visu nomainīt vai izgudrot nojauna ar jaunākām tehnalogijām ir dārgi. Viskautko var uzlabot un atjaunināt, bet tas viss maksās astronomiskas summas. Tu kā inženieris tur redzi relejus, bosi tur redz strādājošu sistēmu, kuru upgreidojot nebūs nekāda praktiska ieguvuma.

Karo4e, ja strādā, tad nav ko aiztikt.

Share this post


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

Tapēc ka to visu nomainīt vai izgudrot nojauna ar jaunākām tehnalogijām ir dārgi. Viskautko var uzlabot un atjaunināt, bet tas viss maksās astronomiskas summas. Tu kā inženieris tur redzi relejus, bosi tur redz strādājošu sistēmu, kuru upgreidojot nebūs nekāda praktiska ieguvuma.

 

Karo4e, ja strādā, tad nav ko aiztikt.

 Tur jau tā lieta, ka no tā rodas virkne problēmu. Loģika, kas uzbūvēta uz simtiem releju ir tieši tik droša, cik jābūt loģikai, kas būvēta uz simtiem releju. Pēkšņi kaut kas neiet. Elektrostacija stāv divas dienas, kamēr atbrauc apkalpojošais inženieris, kurš arī neko neatrod, bet kārtīgi uzsit pa skapja vienu stūri, sistēma aiziet un klientam tiek izrakstīts četrciparu rēķins. Nākošo reizi vietējais operators jau zina, pa kurieni ir jāuzsit. Kad uzsišana vairs nepalīdz, atkal tiek saukts apkopes inženieris. Šajā reizē viņš neuzsit, bet uzvelk vienu vadiņu no viena kastes stūra uz citu, apejot kādu ķēdi. Klientam viņš paskaidro, ka šī ķēde tāpat nav svarīga un viss strādā gandrīz kā iepriekš, tikai uz ekrāna visu laiku deg kāds dzeltens brīdinājums. Dzeltens, nevis sarkans, tātad strādāt var. Tā tiek paskaidrots klientam. Atklātā sarunā uzzinu, ka patiesībā servisa inženieris pats nezina, kā šī ķēde strādā, viņš nepazīst nevienu, kas to zinātu, bet kaut kādos kursos viņš ir uzzinājis, kā to ķēdi var apiet, un nekas slikts nenotiekot.

  • Haha 2

Share this post


Link to post
Share on other sites
Liam Ethernety
Pirms 9 minūtēm , M_J teica:

 Tur jau tā lieta, ka no tā rodas virkne problēmu. Loģika, kas uzbūvēta uz simtiem releju ir tieši tik droša, cik jābūt loģikai, kas būvēta uz simtiem releju. Pēkšņi kaut kas neiet. Elektrostacija stāv divas dienas, kamēr atbrauc apkalpojošais inženieris, kurš arī neko neatrod, bet kārtīgi uzsit pa skapja vienu stūri, sistēma aiziet un klientam tiek izrakstīts četrciparu rēķins.

 

Jā, protams, nav ideāli, bet pieņemu, ka modernizēšanai būtu labākajā gadījumā septiņu ciparu rēķins

Share this post


Link to post
Share on other sites
M_J
Pirms 13 minūtēm , Liam Ethernety teica:

Jā, protams, nav ideāli, bet pieņemu, ka modernizēšanai būtu labākajā gadījumā septiņu ciparu rēķins

Ja uzticēt modernizēšanu tiem pašiem, kas projektēja jau esošās šausmas, tad noteikti.

  • Patīk 1

Share this post


Link to post
Share on other sites
Inspektors Caps
Posted (edited)

@M_J, grūti tā uz sitiena iebraukt cita CPU un asamblera niansēs. Cik saprotu, CPU ir 8-bit AVR, nezinu kāds asamblers. Drīzāk tīri interesanti būtu, ja Tu pats pakomentētu šo. Bet uzreiz ir skaidrs, ka arī tad salīdzinājums nesanāk gluži 1:1, jo Tu veselu čupu reģistru sistēmas mērogā rezervē tikai šim vienam mērķim. Lielākā firmware tā būtu diezgan liela izšķērdība attiecībā pret citām funkcijām.

 

Kādēļ tās dēļ kvarciem atšķirīgās CAN frekvences nenoteici ar osciloskopu vai loģisko analizatoru? Cik saprotu, tā mistiskā iemesla dēļ Tu taisīji bit-bang...

 

Saproti mani pareizi - es arī esmu par lietu izpratni un optimālām sistēmām. Bet nav izdevīgi tērēt laiku uz lietām, ko citi jau ir izdarījuši labā līmenī. Un CAN bit-bang ir tieši tāda... Laiku vajag tērēt uz tām jomām, kas šobrīd ir sliktā līmenī vai vēl labāk vēl vispār neeksistē! Es arī zinu Ethernet freimus līdz baitam/bitam, bet tādēļ es netaisīšu savu MAC perifēriju. Kur nu vēl bit-bang, kas gandrīz nav iespējams, jo MII/RMII interfeisi ir ar 25/50 MHz attiecīgi. Savu MAC ir jēga taisīt uz FPGA tikai tad, ja ir nepieciešamas funkcijas, kādu nav gatavajiem, vai tas ir izdevīgi lielākā projektā integrācijas dēļ. Nu, vai tad, ja esi pusvadītāju ražotājs. Tā vietā paņem kādu 32-bit MCU ar Cortex-M, MIPS vai drīz arī RISC-V, kam CAN, Ethernet vai ko nu vajag ir dzelžos, un izstrādā jaunas paaudzes vadības sistēmas tiem elektrostaciju gāzes motoriem vai jebko citu, kur šobrīd industrija ir sliktā stāvoklī.

 

Netriviāliem projektiem software/hardware ieguldāmā darba apjoma (un pēc tam pievienotās vērtības) attiecība ir tāda, ka vismaz 80% un bieži daudz vairāk ir software pusē. Pat nerunājot par desktop un telefonu programmatūras traģisko stāvokli, MCU līmeņa embedded programmatūra industrijā ir labākā, bet tāpat ļoti sliktā stāvoklī. Piemēram, kad vajag multi-thread kerneli, tad ir daudz jēdzīgu gan komerciālu, gan bezmaksas piedāvājumu, no kuriem populārākais ir FreeRTOS, kas ir tiešām jēdzīgs. Bet ko ņemt tad, kad nav real-time prasību, bet ir svarīgs izmērs un robustums? Tipiski to sauc par bare metal, kas to arī nozīmē - nav nekā. Un tad nu katrs mudī flagus, taskus, kritiskās sekcijas un taimerus katru reizi no nulles un katrā vietā savādāk. Un to visu, protams, darbina stulbs super-loop, kas cikliski pollo visu. Neskatoties uz to, ka CPU ir 100% aizņemts pilnīgi vienmēr, sistēmas response laiks un citi veiktspējas aspekti ir daudz sliktāki kā būtu ar adekvātu kooperatīvo šeduleri plus kods ir nevajadzīgi sarežģīts un nepārskatāms, kas palielina kļūdu iespējamību. Un kāda ir situācija ar software taimeriem sistēmām bez RTOS? Tādu gandrīz nav! Tie daži piemēri, kas ir atrodami, ir mēsli. Bet software taimeri ir nepieciešamība vismaz 80% netriviālos projektos. Tad vēl labs piemērs ir lietotāja konfigurācijas propertiju menedžēšana. Nodrošināt defaultās vērtības, "reset to defaults", ievadīto datu pārbaudi, drošu saglabāšanu dažādās atmiņās (flash, EEPROM, FRAM gan lokāli, gan caur I2C, SPI u.c.), flash atmiņas rakstīšanas reižu skaita un ilgas dzēšanas nianšu ņemšana vērā, unificēt datu tipus un defaultās darbības ar propertijiem, bet būt iespējai katram implementēt custom darbības - cik šādu bibliotēku zināt? Es meklēju... Apaļa nulle! Tā ir idiokrātija!

Edited by Inspektors Caps

Share this post


Link to post
Share on other sites
Inspektors Caps
1 stundu atpakaļ, AndrisBB teica:

Varbūt tas r taspats Teams.

Tas ir cits produkts citai mērķauditorijai. Izej uz ielas un uzprasi cik cilvēkiem telefonos ir "Microsoft Team". Atbilde būs: "Ko?" Pēc tam uzprasi cik telefonos ir Skype. Atbilde būs: "Vai tad to kāds vēl lieto?" Ja Skype būtu normāli attīstīts, tad ne WhatsApp, ne Zoom nebūtu vispār. Tagad ir gan tie, gan vēl 101 cits līdzinieks, no kuriem globāli un kvalitatīvi lietojams nav vairs pilnīgi neviens. Un ne tikai programmas ir drausmīgas, bet izskatās, ka pat vienoties par vienotu komunikācijas protokolu 21. gadsimtā vairs nav iespējams, jo tagad katrs hipsteris ir pats sev ģēnijs. Gluži kā Raimis...

 

1 stundu atpakaļ, AndrisBB teica:

bosi tur redz strādājošu sistēmu, kuru upgreidojot nebūs nekāda praktiska ieguvuma

Tādēļ, ka akli un neredz iespēju ilgtermiņā samazināt ražošanas izmaksas un palielināt ienākumus, piedāvājot būtiski labāku un funkcionālāku produktu par konkurentiem. Vēsture jau neskaitāmas reizes ir parādījusi, ka labākais modelis gan stabilitātei, gan inovācijām ir:

  1. Izstrādā un ievies stabilu versiju (nevis hlamu).
  2. Lieto stabilo versiju un izstrādā jaunu stabilu versiju ar būtiskām inovācijām (nevis kā tagad pārlūku un Windows 10 versijas).

Labu piemēru ir daudz - tas pats Ethernet, Wi-Fi, IP protokols un pat Windows līdz 7 (ieskaitot).

  • Patīk 1

Share this post


Link to post
Share on other sites
Liam Ethernety
Pirms 22 minūtēm , Inspektors Caps teica:

Tas ir cits produkts citai mērķauditorijai. Izej uz ielas un uzprasi cik cilvēkiem telefonos ir "Microsoft Team". Atbilde būs: "Ko?" Pēc tam uzprasi cik telefonos ir Skype. Atbilde būs: "Vai tad to kāds vēl lieto?" Ja Skype būtu normāli attīstīts, tad ne WhatsApp, ne Zoom nebūtu vispār.

 

Tam, ka Skype popularitāte nokritās nav nekāda sakara ar to, kādu underlying tehnoloģiju Microsoft izmantoja. Tam pašam cilvēkam uz ielas būs dziļi vienalga, vai tur ir Electron vai kas cits. Par to uztraucas tikai maza cilvēku grupiņa boot forumā.

 

Pirms 26 minūtēm , Inspektors Caps teica:

Tādēļ, ka akli un neredz iespēju ilgtermiņā samazināt ražošanas izmaksas un palielināt ienākumus, piedāvājot būtiski labāku un funkcionālāku produktu par konkurentiem. Vēsture jau neskaitāmas reizes ir parādījusi, ka labākais modelis gan stabilitātei, gan inovācijām ir:

  1. Izstrādā un ievies stabilu versiju (nevis hlamu).
  2. Lieto stabilo versiju un izstrādā jaunu stabilu versiju ar būtiskām inovācijām (nevis kā tagad pārlūku un Windows 10 versijas).

 

Biznesa inkubatoros gan runā ko citu. Sākumstadijā ir svarīga ātra prototipēšana, MVP izlaišana, tālāk biežas izmaiņas un pielāgošana. Par stabilām versijām var domāt tad, kad ir stabils cashflows.

 

Share this post


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

Ar visa taisīšanu no jauna biju domājis - tiešām visa.

Elementu bāze ir nomainījusies un kaut kādā mikrokontrolierī var dabūt iekšā tādas funkcijas, kādas pirms gadiem 5-10-20 bija tikai datoros.

Tāpat ir 2-4 un vairākkodolu procesori.

Programmēšanas valodas sintaksei var visus tos klaviatūras simbolus > ) )* aizstāt ar pilniem vārdiem vai smukiem krāsainiem kvadrātiem un bultiņām un labs  kompilators pārvērtīs to visu mašīnkodā, taču pati programma būs viegli lasāma.

Tāpat var uzreiz noteikt, ka visas programmas tiek rakstītas .32 un 64 bitu sistēmām ar vismaz 2 kodoliem un pārējie ir speciālgadījumi, kam ir speciālas pārneses sistēmas.

 

Tad vēl vajadzētu skaidri atšķirt, kuras ir tās cilvēka specifiskās zināšanas un prasmes, kas ļauj tam saprast un projektēt pašu būtību un jau SĀKUMA PROCESĀ  ieplānot labu sistēmu un kuras tomēr ir tādas tehniķa pseidozināšanas, kas palīdz tikai saprast, kā īpašī līkā veidā salabot kaut kādu ne pārāk labi uzprojektētu sistēmu. Kaut kā samazināt to NEVAJADZĪGO informācijas daudzveidību.

 

Nu, un sākumā, protams, vajadzētu īpaši sponsorētu programmu, kas vienkārši ar visādiem materiāliem stimuliem ieinteresē par tiem bitu, baitu un elektronikas, materiālmācības un sistēmu organizācijas pamatiem.

Edited by Raimonds1

Share this post


Link to post
Share on other sites
Raimonds1

Tad vēl vajadzētu kaut kā pārstrādāt to algoritmu pamatu mācīšanu. Pa nopietno, pa dažādām sistēmām un nozarēm un to algoritmu prasmi kaut kā kārtīgi pārbaudīt un ierakstīt kaut kādos profesijas reģistros. Ja kāds pārnesis noliktavas darbinieka programmu, kas sēž noliktavā visu dienu un komplektē preces uz pasūtījumu uz ģimenes ārsta programmu, kas pieiet pie datora, kaut ko izraksta, tad izdara vēl kādus 3 darbiņus citur, tad atkal pāris pie datora un tad atgriežas sākotnējā programmā un tas viss ir paņemts no noliktavas, tad šādam darbam jābūt kaut kādām sekām.

Teiksim, jāņem akadēmiskais pārtraukums uz gadu.

Share this post


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

Cik saprotu, CPU ir 8-bit AVR, nezinu kāds asamblers. Drīzāk tīri interesanti būtu, ja Tu pats pakomentētu šo.

Jā CPU ir 8-bit AVR, assemblers ir no Atmel Studio. Par komentējamo piemēru. Kaut ko tādu varēja gaidīt. Vismaz kompilierim pietika prāta netaisīt garu ciklu, lai pabīdītu reģistrus par 14 pozīcijām. Bet, tā, būtībā viena bita vērtības noskaidrošana, un EOR ar jauno bitu vienalga uztaisīta baigi gari un sarežģīti. Tiek izmantots daudz reģistru. Izšķērdīgi. Bet, ja darbojas pārtraukumā, tad sākumā visi tie reģistri būs jāsabāž stekā, atgriežoties jāizvelk no turienes, bet katrs PUSH un POP aizņem 2 taktis. Kopā ļoti daudz taktis tikai kontrolsummas noskaidrošanai. Bet jādara vēl citas lietas. Konkrētajā gadījumā viens bits aizņem 64 taktis. Šādi darbojoties, neizdosies iekļauties un bit-bang nesanāks. Par reģistriem - bija jāizvēlas, vai nu apstrādāju pārtraukumu maksimāli ātri, upurējot daļu reģistru, un izdomājot, kā vietās, kur ātrums galīgi nav kritisks, iztikt bez tiem, vai arī riskēju neiekļauties tajās 64 taktīs.

 

1 stundu atpakaļ, Inspektors Caps teica:

Kādēļ tās dēļ kvarciem atšķirīgās CAN frekvences nenoteici ar osciloskopu vai loģisko analizatoru? Cik saprotu, tā mistiskā iemesla dēļ Tu taisīji bit-bang...

Ne gluži. Osciloskops ar ieraksta funkciju un CAN līnijas analizators man ir, tiesa nav apvienots vienā ierīcē, un es jau sākotnēji zināju, ka CAN līniju ātrumi ir atšķirīgi. Bet CAN kontrolierī ir mehānisms, kā to kompensēt. Bet lai tas darbotos, tas ir pareizi jānokonfigurē. Kā vienmēr, apgūstot, iepriekš nezināmu lietu, ne vienmēr viss datašītā izlasītais "pielec" ar pirmo reizi. Un ne jau tikai par CAN līniju ātrumiem. Lai pārbaudītu, kā kas darbojas, vajag paeksperimentēt. Viena lieta ir samērīt osciloskopā laika intervālu starp divām frontēm, pavisam kas cits - noskaidrot, kā to pašu intervālu ir samērījis pats procesors. Un bit-bang jau nebija jātaisa no nulles. Tas bija vēl no tiem laikiem, kad uz AT90S1200 vajadzēja realizēt seriālo portu, kura tam vienkārši tur fiziski nebija. Tāpat bija jau realizēts CRC16 priekš Modbus, un tāpēc CRC15 priekš CAN vairs nebija kaut kas pilnīgi no nulles apgūstams. Tādejādi, izmantoju iepriekšējo bagāžu, lai apgūtu ko jaunu. Man tas likās īsākais ceļš. Kam iepriekšējā bagāža ir cita, īsākais ceļš būs cits.

 

1 stundu atpakaļ, Inspektors Caps teica:

Tā vietā paņem kādu 32-bit MCU ar Cortex-M, MIPS vai drīz arī RISC-V, kam CAN ir dzelžos,

Pilnīgi piekrītu, BET - tie man vēl jāapgūst. Tas prasīs zināmu laiku, bet CAN problēma uzradās negaidīti un vajadzēja atrisināt ātri. Nevarēju pateikt, atvainojiet, man vajadzīgi 2 mēneši lai mācītos. Kāpēc neapguvu to jau sen? Attaisnojuma, īsti nav.

Share this post


Link to post
Share on other sites
AndrisBB

Ko tur apgūt, ņem kautkādu STM32, vai ko tamlīdzīgu un raksti kodu. Materiālu no kā mācīties vairāk nekā saprašanas.

Mūsdienās čakarēties ar 8-bit AVR ir bezsakars, viņi ir dārgāki, lēnāki, ēd vairāk enerģijas, mazāk peripheriāļu un iespēju nekā kautkāds Cortex vai kas tamlīdzīgs.

Kautkādi oldscool PIC tanī pašā kategorijā bāžami, bet nez kapēc ļoti patīk elektroniķiem. Tas laikam arī būs tas iemesls, kapēc viņi populāri, iemācījušies vienu ASM paveidu, arhitektūru un tad veģitē uz tās mūžīgi. 

 

Reku laba grāmata https://leanpub.com/mastering-stm32

Kad iebrauksi viņu HAL bibliotēkā un sapratīs cik tur brīziem daudz nejēdzības, tad var mēģināt ko optimizēt.

Share this post


Link to post
Share on other sites
Inspektors Caps
Pirms 31 minūtēm , Liam Ethernety teica:

Tam, ka Skype popularitāte nokritās nav nekāda sakara ar to, kādu underlying tehnoloģiju Microsoft izmantoja.

Tam ir sakars ar to, ka gan pie vadības, gan izstrādes ir debīleņi. Debīli ir debīli it visā - tehnoloģijas, protokolu, formātu, interfeisa, funkciju un visa cita izvēlē un realizācijā.

 

Pirms 34 minūtēm , Liam Ethernety teica:

Biznesa inkubatoros gan runā ko citu.

Cik biznesa inkubatoros ir radītas tāda mēroga tehnoloģijas kā Ethernet? Cik no tur mākslīgi radītajiem startupiem izdzīvo ilgtermiņā? Nožēlojams procents... Kur radās MikroTik? Vai no mākslīgi radīta startupa, kur 80% darbinieku ir Twitter un Facebook "PR menedžeri" un citi "speciālisti", vai no tā, ka daži cilvēki ilgi un rūpīgi izstrādāja RouterOS platformu, kas ir šī uzņēmuma panākumu pamatā? Par startupisma sociālistiski subsidētajiem "dižajiem sasniegumiem" vari iet stāstīt hipstertirliņiem un meitenītēm iestādēs pie ESRS un citu fondu dalīšanas. Man vari pat necensties, es tad labāk noskatos kādu Silicon Valley sēriju, kur viss tas absurds ir parādīts visā krāšņumā...

 

Pirms 18 minūtēm , Raimonds1 teica:

Tad vēl vajadzētu skaidri atšķirt, kuras ir tās cilvēka specifiskās zināšanas un prasmes

Evolūcija un vēsture sen ir parādījusi - intelekts un prakse. Šībrīža sistēma nestimulē ne vienu, ne otru. Un vispār iesaku paskatīties spogulī...

Share this post


Link to post
Share on other sites
Mezavecis
Pirms 12 minūtēm , Inspektors Caps teica:

Un vispār iesaku paskatīties spogulī...

Sāc ar ar sevi. Jau vismaz 10 gadus maļ vienu un to pašu plati. Bet tā jau vienmēr - vislielākie eksperti atrodas dīvānā. Tu esi tam spilgts piemērs - gudri muld par programmēšanu. lai gan programmētājs nekad nav bijis (un nebūs).

Share this post


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

Ko tur apgūt, ņem kautkādu STM32, vai ko tamlīdzīgu un raksti kodu.

Tak ir jau paņemts. Turu rokā, pirms kādiem 3 gadiem pirktu STM32 DISCOVERY dev boardu. Būs jau paspējusi morāli novecot. Pirms mēnešiem 3 pirktais 3D printeris tā arī stāv neizpakots. Tak vienmēr gadās visādi, steidzami dzēšami, ugunsgrēki. Tā nu sanāk, ka tā vietā, lai paņemtu pareizu āmuru, kārtīgi notēmētu, un iedzītu naglu ar vienu sitienu, ņemos ar nepareizu instrumentu, apdauzīdams pirkstus, lamādamies un locīdams naglas. Laika nav! Laika nav? Toties muldēt forumā laiks atrodas. Laikam jau tomēr slinkums.

  • Haha 1

Share this post


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

Vispār topika autoru var apskaust. Te ir tādas ceļamaizes pieejamas, ka nezin tik ko izvēlēties.

 

Par to manu zināšanu

 

 

sinusfv.png

 

 

Te tāda kantaina nepareiza sinusoīda ir uzzīmēta. Algoritmu limenī es tai varu sarakstīt visus parametrus un visas darbības, kas jāveic un reāla iekārta, kuru taisītu tie, kas ar to nodarbojas, tādu "sinusoīdu" arī uzražotu. Elektronikas pamatus zinu, ciparu elektronikas arī. Loģisko shēmu līmenī.

 

Taču tas man tikai tāds teorētisks projekts.

 

Edited by Raimonds1
  • Haha 1

Share this post


Link to post
Share on other sites
Inspektors Caps
Posted (edited)
pirms 3 stundām , Mezavecis teica:

lai gan proglamerētājs nekad nav bijis (un nebūs)

Izlaboju. :) Bet, ak vai, kāds ir atcerējies mūsu seno diskusiju par JavaScript kompilēšanu uz bināru formātu un nevar samierināties ar to kā pielika bikses, kad izrādījās, ka industrijas gigantu izstrādātais WebAssembly ir tieši tas, ko es stāstīju, kamēr īstenais "eksperts" mani "apgaismoja" cik stulba ideja tā ir...

 

pirms 4 stundām , AndrisBB teica:

Kad iebrauksi viņu HAL bibliotēkā un sapratīs cik tur brīziem daudz nejēdzības, tad var mēģināt ko optimizēt.

Es ieteiktu tālāk par vieglu paspēlēšanos tajā bibliotēkā nemaz neiedziļināties - lieks laika tēriņš. To izstrādā bezsmadzeņu pērtiķi un studentes Tunisijā, kur vidējais IQ ir 83 (tas pats līmenis, kas slavenajiem indiešiem). Pat turienes vietējie "ģēniji" priekš Eiropas ir tikai viduvēja meža veča līmenī. Attiecīgi tā bibliotēka ir pilnīgi nekam nederīgs superlīks un neērti lietojams mēsls. Labāk tad sākt ar šo rakstu sēriju un pie reizes arī nomigrēt uz C ikdienai. Tur kā reizi piemēri ir paralēli priekš AVR un STM32. Assambler tāpat nekur nepazudīs, vienkārši izmantosi to pie reālām vajadzībām, nevis pilnīgi visu rakstīsi tajā.

 

pirms 4 stundām , M_J teica:

Pilnīgi piekrītu, BET - tie man vēl jāapgūst.

Nu, ar Tavām zināšanām tas ir kā divus pirkstus... Kopējie programmatūras izstrādes principi taču tie paši, perifērijas programmē tāpat, tikai to ir vairāk un funkcionālākas, faktiski atšķiras tikai CPU kodols. Un programmēšana gan C, gan pat ARM assamblerī ir vieglāka kaut tādēļ vien, ka 8/16/32-bit operācijas notiek ar vienu instrukciju. Pie tam tās gandrīz visas notiek vienā taktī, izņemot dalīšanu, kas AVR nemaz nav, un vēl dažas. Par DSP un FPU esamību nemaz nerunāšu...

 

pirms 4 stundām , M_J teica:

Jā CPU ir 8-bit AVR, assemblers ir no Atmel Studio.

Starpcitu, vēl tīri ziņkāre.. Tavā kodā "movw    ZH:ZL,XH:XL" ir fiziski viena instrukcija vai tikai tā assamblera pieraksts, ko pārvērš vairākās instrukcijās?

Edited by Inspektors Caps

Share this post


Link to post
Share on other sites
M_J
Pirms 18 minūtēm , Inspektors Caps teica:

Starpcitu, vēl tīri ziņkāre.. Tavā kodā "movw    ZH:ZL,XH:XL" ir fiziski viena instrukcija vai tikai tā assamblera pieraksts, ko pārvērš vairākās instrukcijās?

Viena no dažām 16 bitu instrukcijām, kas ir AVR kontrolieros, izpildās vienas takts laikā.

Share this post


Link to post
Share on other sites
AndrisBB
Pirms 31 minūtēm , Inspektors Caps teica:

Labāk tad sākt ar šo rakstu sēriju un pie reizes arī nomigrēt uz C ikdienai.

Tak viņiem ir vairāks versijas bibliotēkām, HAL un LL. LL īpasi neatšķiras no tā ko tu tai linkā ieliki, tik mazliet ērtāk lietot.

HAL ar nav ne vainas, kad palieto viņu ilgāk, saprot tās plusus un mīnusus.

Share this post


Link to post
Share on other sites
Inspektors Caps
Posted (edited)

@AndrisBB, nekas tur nav OK. Es visas tās viņu bibliotēkas esmu izmēģinājis un izķidājis līdz saknēm un saku pilnā nopietnībā - HAL ir pilnīgi un galīgi līks. Tam "nav ne vainas" tikai tad, ja ir pieņemams, ka izstrādātā firmware raustīsies, kārsies un citādi gļukos. Kopš 2007. gada, kad sākās STM32, viņi nav spējuši uzrakstīt pareizi pat pin toggle funkcijas. USART viņu realizācijā vispār nav spējīgs asinhroni saņemt nepārtrauktu datu plūsmu - visu laiku tiek veikts receive daļas enable-disable un, lai transakcija beigtos, tiek gaidīts konkrēts baitu skaits. Pat vienkārša kritiskā sekcija, kas vispār eksistē tikai priekš tam, lai pasargātu koda fragmentus no interruptiem, nav interruptu droša. :D Bet tā tiek izmantota gandrīz visos HAL draiveros... Attiecīgi gandrīz viss kods nav interruptu drošs un ir līks vēl neskaitāmos citos veidos. Pie tam tas viss ir arī vienkārši bloatware, jo to raksta Tunisijas praktikanti un vienkārši debīliķi. Tur ir nenormālas bezjēdzīgu mainīgo jūras un pārsarežģītas konstrukcijas dēļ C nezināšanas un vienkārši nedomāšanas ar galvu. Līdz pat tādam līmenim kā šeit rādīji piemēru ar if-else jūru viena x & 1 vietā.

 

Kompleksākas lietas, kas saistītas ar RTOS, Ethernet, lwIP, USB, SDIO, FatFS u.c., ar HAL "draiveriem" un viņu integrācijas kodu vienkārši nestrādā vispār.

 

LL (un lielā mērā arī vecā SPL) bibliotēka nav tik līka, toties ir pilnīgi bezjēdzīga, jo tur vienkārši nekā nav. Lai ar LL vienā reģistrā uzstādītu divus atsevišķus bitus, ir jāuzraksta divas C rindas, kas pārvēršas 6 instrukcijās. Ar reģistriem savukārt ir jāuzraksta viena C rinda, kas pārvēršas 3 instrukcijās. Plus, rakstot ar LL, ir jālasa gan reģistru dokumentācija un jāmācās nosaukumi, gan vēl arī jāpēta LL kods, jāmācās tā nosaukumi un visu laiku galvā jātulko no LL uz reģistriem un atpakaļ. Ļoti "efektīvs" instruments...

 

Pie tam HAL ir ne tikai līki implementēts, bet arī tā arhitektūra ir trula. Tā ne tikai nepalīdz veidot sakarīgu visas firmware arhitektūru, bet vēl visu laiku ir jācīnās ar HAL arhitektūras stulbumiem. HAL tēlo high-level bibliotēku, bet tāda nav. Nepārtraukta USART datu plūsma ar interruptu drošu lock-free (bez interruptu bloķēšanas!) FIFO buferi? Nav un nekad nebūs, jo Tunisijas pērtiķu smadzenēm tas nav sagremojams. Ja salīdzina ar saprātīgu kodu, tad HAL reāli nav neviena plusa! Vienīgie veidi kā tikt pie kvalitatīviem un strādājošiem draiveriem ir:

  1. Ar reģistriem uzrakstīt savus pa īstam high-level draiverus un OS abstrakcijas slāni.
  2. Ņemt ChibiOS vai ko līdzīgu.
  3. Pirkt komerciālas bibliotēkas no SEGGER, Express Logic un līdzīgiem.

Tā nu sanāk, ka STM32 ir vieni no labākajiem mikrokontrolieriem, bet viņu koda bibliotēkas ir absolūti lielākie mēsli, kādus visā embedded industrijā esmu redzējis. Un, protams, ka tikai sakritība - ST mikrokontrolierus izstrādā Francijā un Itālijā, bet draiverus Tunisijā... Diez kur varētu būt problēma? Varbūt Raimis spēj rast atbildi?

Edited by Inspektors Caps
  • Patīk 1

Share this post


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

Nja, "programmētājs" esmu tikai epizodiski (pilnmēness😁) un brīvajā laikā, darbus man nodot neprasa un par to nemaksā. Tāpēc šajā tēmā nespamoju. Bet nu jā, izlasot pēdējo @Inspektors Caps komentāru... tieši tādiem (un vēl krievu) vārdiem varētu raksturot manu iepazīšanos ar HAL 😁

Edited by Jurkins
  • Haha 1

Share this post


Link to post
Share on other sites
ieleja

ar interesi paskatījos 2015. gada diskusiju, bet kam gan negadās kļūdīties

 

2015.09.5. , 13:58, Inspektors Caps teica:

Par custom protokolu, kas neesot TCP/IP.. Tu vispār OSI modeli zini? Par kādu savienojumu Tu vispār runā? Parastajos datortīklos, ja noņem TCP un IP slāņus, tad paliek Ethernet

 

nepagāja pāris gadi un kāds piedāvā "New IP", jeb pārtaisīt to TCP/IP

 

https://www.zdnet.com/article/ripe-opposes-chinas-internet-protocols-upgrade-plan/

Share this post


Link to post
Share on other sites
AndrisBB
Posted (edited)
Pirms 56 minūtēm , Inspektors Caps teica:

Kompleksākas lietas, kas saistītas ar RTOS, Ethernet, lwIP, USB, SDIO, FatFS u.c., ar HAL "draiveriem" un viņu integrācijas kodu vienkārši nestrādā vispār.

Kas tieši tev tur nestrādā, es visaiku lietoju viņu ģenerēto kodu gan ar FreeRTOS, gan USB, gan Ethernet un FAT_FS un viss darbojas. Protams ka ik pa laikam kautkas jāpielabo, bet tas ir sīkums salīdzinot ar to ka ja tas viss jāraksta no nulles.

 

Skaidrs ka bibliotēka, kura domāta, lai darbotos uz visiem iespējamajiem STM32 kontrolieriem būs pilna ar kodu, kas iespējams nav vajadzīgs, ja skaidri zin kuru tieši MCU tu lietosi. Kautkādiem tur sīkumiem kā GPIO, SPI, I2C utt pats var uzrakstīt funkcijas, bet nejau Ethernetam vai USB, tas vienkārši aizņems pārāk daudz laika. Protams ja visa misija ir raksīt kautkādu perfekto USB kodu, tad skaidrs ka var čakarēties, bet ja ir doma ir izveidot iekārtu, kas kautko reāli arī dara, tad tam visam nav laika. Kāda jēga no perfektās iekārtas, ja viņa vienkārši ir pārāk dārga lai kāds viņu pirktu un nekad netiek izlaista. Vēlāk kad iekārta reāli darbojas un kādam viņa arī ir vajadzīga, tad var čakarēties un kautko optimizēt.

 

Pietam tās bibliotēkas ir bezmaksas. Kāda jēga gaudot par to ka bezmaksas bibliotēka un visi ar viņu saistītie tūļi nav perfekti :D uztaisi labāks, tad par velti, nevis tikai runā. Nopelnīsi miljonus. Varbūt pat ST tev samaksās.

Edited by AndrisBB

Share this post


Link to post
Share on other sites
Raimonds1

Katrā nozarē ir daudz apnicīga, salīdzinoši vienkārša, ilgi darāma, un, kas pats būtiskākais, visiem vajadzīga darba, ko veic ne pārāk labi apmaksāti un ne pārāk talantīgi darbinieki, kas domātu kodā un sapņos redzētu, kā tās datu paketes tur staigā, kā kontrolē, vai visi dati ir tur kur jābūt un tā tālāk. Tie ir "tehniķi", kas domā if else ja tā, tad šitā kategorijās, faktiski tādi kā elektronikas labotāji, kas pārsprauž gatavus, citu izstrādātus jau darbojošos blokus, nevis paši tos projektē un saprot, kas tur iekšā darās.

 

Tur ir jābūt kaut kādai proporcijai starp to zināšanu, kurus blokus kā salikt un tomēr jēgšanu, kā un kāpēc tas vispār darbojas. Vēl man ir tādas nelabas aizdomas, ka, ja tas viss būs pārāk efektīvs un vienkāršs, tad nevarēs tik daudz paprasīt no patērētāja to naudu. Taču tā smirdīgā nauda kādam ir jāpelna un pārāk efektīvas sistēmas nojauks daudzas barības ķēdes un tur visi būs nikni.

Share this post


Link to post
Share on other sites
Inspektors Caps

@ieleja, nu taču lai piedāvā. Uz ātru skatu tur ir iestrādāti "service ID" un "content ID". Gan jau plāns ir tāds, ka tos izsniedz Ķīnas komunistiskā partija. :D Bet, ja nopietni, tad, piemēram, IP taču tieši palēnām pāriet no v4 uz v6, bet abi ir stabili, strādājoši un viss notiek bez stresa. TCP ir 1974. gadā radīts protokols, kas nodefinēja terminu "internet". Šobrīd tam ir 46 gadi un tas pilnīgi noteikti netiks aizstāts tuvākajā nākotnē. Lai arī tas nav perfekts, Tev neliekas, ka tas tomēr ir radīts pietiekoši labs un stabils savam laikam un tā laika nākotnei? Tā pa lielam man vienīgais iebildums pret to ir tas, ka tas ir nedaudz par daudz komplekss. TCP protokols IP stekā aizņem nomācoši lielāko koda blāķi. Salīdzinoši UDP, IP un ARP ir smieklīgi.

 

@AndrisBB, nav runa par dažām kļūdām un optimizāciju, bet par smagi līku traģēdiju. STM32 sērijām katrai ir savi HAL draiveri un nav runa par kaut kādiem koda fragmentiem priekš dažādām hardware modifikācijām sērijā, bet vienkārši bezjēdzīgiem murgiem pat vienkāršās funkcijās. Es taču teicu - USART, pat pin toggle. Un kā var kaut kas strādāt, ja visur ir kritiskā sekcija, kas nestrādā? Tas, ko Tu saki par "šausmīgo" Ethernet draivera izstrādi, ir vienkārši fantāzijas kas saklausītas no interneta diletantiem, kuri nekad to nav darījuši. Realitātē vismaz uz STM32 uzrakstīt Ethernet draiveri ir grūtāk kā USART, bet vieglāk kā I2C draiveri. Saku to no savas pieredzes, jo tieši to sen jau esmu izdarījis... Vienreiz pasēdi kādas dienas vai kaut nedēļas, bet toties viss strādā. Ar ST kodu nestrādās nekad (vismaz pārskatāmā vairāku gadu nākotnē). Konkrēti par lwIP... Link up/down menedžēšana ir līka un neatbilst lwIP API. DHCP tas pats, plus vispār viņiem nekas nebija jādara un būtu viss strādājošs. Tipiski pērtiķiem... Un vispār viņi savā tīkla kodā vienkārši pilnīgi visur ignorē lwIP multi-thread prasības. Ar šo vien jau visa tīkla funkcionalitāte jau ir nolemta. Tāpat viņi vispār nesaprot kas ir compiler barrier, kas vispār attiecas uz visu kodu, ne tikai tīklu. Ļoti daudz kur tās trūkst, bet bez tām, ieslēdzot optimizāciju, viss saiet dēlī. Tālāk, ja CPU ir Cortex-M7 (STM32F7 un STM32H7 sērijas), tad svarīgas kļūst arī memory barrier instrukcijas un/vai atmiņas tipu konfigurēšana ar MPU, kā arī D-cache kešatmiņas menedžēšana. Tur tas pats stāsts - nejēdz un lielāko daļu ignorē. Dēļ abu veidu barjeru neesamības visa tā mēslu kaudze visu laiku trāpa uz dažādiem race condition. Savukārt STM32H7 vispār ir sarežģīta arhitektūra un citādāka Ethernet perifērija ar pilnīgi citu HAL draiveri - tas pilnīgi vienkārši ir disfunkcionāls by design un nespēj strādāt vairāk kā ar kādu ping testu un triviālām "Hello world!" prasību līmeņa aplikācijām.

 

Pirms 27 minūtēm , Raimonds1 teica:

Vēl man ir tādas nelabas aizdomas, ka, ja tas viss būs pārāk efektīvs un vienkāršs, tad nevarēs tik daudz paprasīt no patērētāja to naudu.

Tu taču esi filozofs un fantasts, bet pat Tu neredzi to, ka ar krietni efektīvāku sistēmu rodas jaunas funkcijas un pielietojumi, par ko savukārt no patērētāja var paprasīt vēl daudz vairāk? Pie tam tas būs nevis ar strīdiem no sērijas "bet Jūs taču jau vienreiz to labojāt", bet "wow, kādas jaunas iespējas" un viņš pats atdos vēl lielāku naudu ar smaidu, aizies mājās laimīgs un pēc tam ar savu jauno ideju nāks tieši pie Tevis.

Share this post


Link to post
Share on other sites
Inspektors Caps
Posted (edited)
pirms 1 stundas , AndrisBB teica:

Pietam tās bibliotēkas ir bezmaksas. Kāda jēga gaudot par to ka bezmaksas bibliotēka un visi ar viņu saistītie tūļi nav perfekti :D uztaisi labāks, tad par velti, nevis tikai runā. Nopelnīsi miljonus. Varbūt pat ST tev samaksās.

Vēl viens aplams arguments. Tīri kā pretpiemēri - FreeRTOS, lwIP, FatFS, Mbed TLS, BearSSL, uECC un pat viss ChibiOS arī ir par brīvu un open source, bet nav mēsli. Citiem vārdiem sakot, gan bezmaksas, gan maksas produkti var būt gan labi, gan mēsli, un apkārt netrūkst piemēru visām kombinācijām. ST vadība neapjēdz, ka daudzi neizvēlas viņu mikrokontrolierus tieši un tikai dēļ viņu programmatūras "līmeņa". Viņu vadībai svarīgāks ir politiskais pasūtījums imitēt atbalstu bijušajai Francijas kolonijai un līst pakaļā "vienlīdzībai". Tā kā nemaksās viņi ne kapeiku, jo viņi pat ignorē kļūdu reportus un pat gatavus kvalitatīvus koda fragmentus, ko tauta viņiem piedāvā viņu forumā.

 

Savām vajadzībām jau esmu uzrakstījis draiveru bibliotēku, kooperatīvo OS ar software taimeriem, draiveru OS adaptācijas slāņus FreeRTOS un tam kooperatīvajam, propertiju menedžēšanas sistēmu, web serveri ar dinamisku divpusēju AJAX datu apmaiņu uz lwIP, robustu bootloader un vēl visu ko. Ir doma to kooperatīvo OS uzdāvināt pasaulei ar MIT vai BSD licenzi. Tās ir tikai 300 rindas (bez komentāriem) standarta C koda, bet "bare metal" izstrādi ar saviem taskiem un taimeriem tās sagriež kājām gaisā. Arduino pasaulē tas var novest pat līdz nelielai revolūcijai, kas likvidē setup()/loop() amatierismu. Tikai neesmu pārliecināts vai to vajag darīt... No vienas puses es neko nezaudēju, bet no otras, ja jau visi taisa un lieto sūdus, kādēļ man par velti atdot kaut ko labu? Kā darītu jūs - citi šeit esošie izstrādātāji un citādi tehniskie? :)

Edited by Inspektors Caps

Share this post


Link to post
Share on other sites
ImissimI

Pūt vaļā un pieliec 'donate' pogu?

  • Patīk 2

Share this post


Link to post
Share on other sites
AndrisBB
Posted (edited)
Pirms 15 minūtēm , Inspektors Caps teica:

Arduino pasaulē tas var novest pat līdz nelielai revolūcijai, kas likvidē setup()/loop() amatierismu.

Neesi mazliet sasapņojies? :D

Arduino ir populārs nevis tapēc ka labs vai kāds tur, bet tapēc ka vienkāršs un tāds lai tieši amatieri varētu viņu lietot, taisīts viņš tika priekš mākslas studentiem, nevis programmētājiem. Plus bij īstajā laikā, īstajā vietā. Pats īstā Arduino autors (Wiring biblotēka) no tā visa nav saņēmis neko un neviens par viņu nav dzirdējis neko.

 

No sākuma dabon lai kaut 3 citi lietoāji izmanto tavu kodu, tad var runāt par revolūcijām.

Edited by AndrisBB

Share this post


Link to post
Share on other sites
ieleja

@Inspektors Caps

tas tas projekts par kuru stāstīji agrāk?

 

bet izšķiršanās interesanta, kādi ir reāli varianti - ļoti brīva licence var neļaut saglabāt kontroli, kāds ražotājs vai izstrādātājs noforkos un tava ietekme un iespējas nopelnīt nākotnē beigušās. notirgot produktu un tiesības, tirgot licences par pāris € gala lietotājiem, cik tirgus, kas pilns ar “visu par velti” lietotājiem, tam ir gatavs?

Share this post


Link to post
Share on other sites
Inspektors Caps

@AndrisBB, no otras puses lwIP no zviedru institūta viena čaļa projektiņa pārvērtās par globāla mēroga nopietnu un veiksmīgu open-source. FreeRTOS tāpat, plus ar paralēlu komerciālu daļu. Bet vispār man ir pilnīgi vienalga kas tajā Arduino pasaulē notiek vai nenotiek - tikai saku, kas var sanākt. Ņem vērā, ka tas ir kooperatīvs OS un tam nav nekāda multi-threading ar preemptive pārtraukšanu. Attiecīgi nav arī nekādu thread sinhronizācijas mehānismu, tikai triviāli eventi priekš sinhronizācijas ar interruptiem - šajā ziņā tas ir tīrs "bare metal". Aplikācijai sanāk tas pats kods, ko viņi raksta tagad, tikai vēl mazāks un vienkāršāks.

 

@ieleja, atgādini par ko stāstīju agrāk. Taču to mazo OS tiešām, ja publicēšu, tad tikai kā īstu dāvanu pasaulei bez nodoma nopietni ar to pelnīt. Nu, ja nu tikai ar to Donate pogu, ko @ImissimI minēja. Sanāk tāda kā morālā nodeva par to, ka es pats izmantoju citu cilvēku bezmaksas open-source bibliotēkas. :D  No tā visa, kas ir sarakstīts, tā OS tāpat ir tikai maza daļa... Pelnīšanai ir un būs citas daudz lielākas sistēmas. :)

Share this post


Link to post
Share on other sites
ieleja

tas bija nekonkrēti, bet, ka aizņemts ar ko vērā ņemamu un padalīsies ar aprakstu forumā, kad būs kas gatavāks

 

Share this post


Link to post
Share on other sites
camel
Pirms 50 minūtēm , Inspektors Caps teica:

Tikai neesmu pārliecināts vai to vajag darīt... No vienas puses es neko nezaudēju, bet no otras, ja jau visi taisa un lieto sūdus, kādēļ man par velti atdot kaut ko labu? Kā darītu jūs - citi šeit esošie izstrādātāji un citādi tehniskie?

Pirmkārt: te tak neviens nesapratīs par ko tu tur raksti, izņemot @AndrisBB, bet tev pat viņu neizdevās ieinteresēt - jāsazīmē mārketings, jāuztaisa prezentācija ar bildītēm, grafikiem, pros & cons analīzēm.

 

Otrkārt: rodas iespaids, ka tu neesi drošs par to kā ar savu sastrādāto vai savu kompetenci tikt pie piķa - that's not good - piķis ir izšķirošais faktors, ja beigās paliec bešā, tad iegūldītais darbs bezjēdzīgs.

Share this post


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

Par to jau arī runa ka tur ir bezgala daudz šķēršļi, lai kāds lietotu tavu bilbiotēku OS.

 

Pirmāmkārtām vispār ir kautkā jāuzzin par tādas esamību, otrāmkārtām jābūt labam aprakstam par to ko viņa dara, jo tur var būs pasaulē labākāis kods, bet ja uzreiz nevar saprast kas tas ir un nav dokumentācijas, tad skaidrs ka lietotājs izvēlēsies STM HAL vai FreeRTOS.

Lielākajā daļā gadījumu kautkas efektīvs un ātrs, neiet kopā ar viegli lietojams un saprotams.

Bezgala daudz lietas ko pārvarēt, ja par to prasa vēl naudu, tad dokumentācijai ir jābūt ekselentai.

 

Dokumentācija bij viena no lielākajām FreeRTOS problēmam, daļēji ir vēljoprojam, pats Ričards to ir teicis daudzes reizes, esu saticis viņu vairākkārt un esam par to runājuši. 

Edited by AndrisBB

Share this post


Link to post
Share on other sites
Inspektors Caps

@AndrisBB un @camel, es taču teicu, ka tas OS, ja būs, tad tikai ar MIT vai BSD licenzi pilnīgi nekomerciālā nolūkā. Un HAL ir draiveri, bet te ir runa par OS kerneli. Līdzīgi kā FreeRTOS, tikai tas ir RTOS ar multithreading un tādēļ ir citā klasē - sarežģītāks, bet toties real-time. Savukārt kods priekš kooperatīva kerneļa ir tajā pašā sarežģītības līmenī kā priekš bare metal.

 

@ieleja, ā, tādā gadījumā nē - tas OS ir tikai maza daļa no lielā projekta jeb 3 faili no 130+ tā projekta ietvaros uzrakstītiem. Viens .h, viens .c un vēl viens nomaināms .h, kurā ir pāris rindas, kas ir specifiskas konkrētai CPU arhitektūrai. Tas gan visiem Cortex-M der viens un ir doma uzcept arī priekš AVR. Koda stils kā uECC - pāris funkcijas (tam OS ir 10 gab.), kas ir tik pašsaprotamas, ka pietiek ar nelielu skaidrojumu komentāros un kādu Example.c.

 

Pirms 23 minūtēm , AndrisBB teica:

Lielākajā daļā gadījumu kautkas efektīvs un ātrs, neiet kopā ar viegli lietojams un saprotams.

Bet nav arī tā, ka tas nekur nebūtu iespējams. BearSSL un uECC lietošana ir prasta kā zābaks, bet kvalitāte un performance top līmenī. FreeRTOS manuprāt arī ir diezgan viegli lietojams, bet tajā jau laikam daudzi man nepiekritīs...

Share this post


Link to post
Share on other sites
Inspektors Caps
Pirms 43 minūtēm , AndrisBB teica:

Dokumentācija bij viena no lielākajām FreeRTOS problēmam, daļēji ir vēljoprojam

Tai pat laikā pat tā ir daudz labāka kā daudz kam citam un te var lietot to argumentu, ka tas ir par brīvu. Lasām to, kas ir, ja nepietiek, skatāmies kodu un viss notiek. Proporcionāli pret to, cik daudz FreeRTOS izmanto visā industrijā, ar to saistīto problēmu procents ir niecīgs.

 

Lūk, ar lwIP gan šajā ziņā ir sliktāk - tā ir diezgan liela un kompleksa bibliotēka, bet dokumentācija ir pašvaka. Tikai īstā problēma nav pat tur, bet tajā faktā, ka tauta jau nelasa pat to, kas ir! Linkus uz Common pittfalls un Multithreading var kaut katru dienu bāzt acīs - nu, taču principā nelasīs! Tikai turpina klikšķināt CubeMX un brīnīties kādēļ nekas neiet ar līko kodu, ko rakstījuši ST Tunisijas pērtiķi, kuri arī neko nelasa...

Share this post


Link to post
Share on other sites
AndrisBB

Tomēr nav īsti korekti salīdzināt LWIP ar FreeRTOS. Pirmais tiešām ir bezmaksas produkts no kura neviens naudu nepelnīja. Kamēr FreeRTOS tomēr vairāk vai mazāk bija un ir komerciāls produkts, vesela ko kompānija nodarbojās ar tā popularizēšanu, lietotāju atbalstu (par naudu) utt. Paskaties OpenRTOS, SafeRTOS versijas, kautgan tagad jau viņi visi vairāk vai mazāk pieder Amazon.

Share this post


Link to post
Share on other sites
M_J

Izlasīju pēdējās diskusijas un tagad prātoju, kā apgūstot STM32, neiekāpt sūdā.

Share this post


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

Nu pirmāmkārtām jau STM32 nav nekāds etalons, lietoju arī Freescale NXP LPCxxx kontrolieriem, tur HAL varētu būt pat tuvāks ICapa piemēriem, Silicon Labs EFM32 visādus Gecko kontrolierus, kuri ir ļoti interesanti un kods ir pilns ar labas kvalitātes dokumentāciju, piemēriem utt.

 

kautkas tamlīdzīgs.

LPC_GPIO0->FIODIR |= (1<<4); // Config P0.4 as Ouput

LPC_GPIO0->FIOSET |= (1<<4); // Make ouput High for P0.4

 

Caps te pa lielam arī dramatizē par to STM32 HAL bibliotēkas kvalitāti. Ok, tur ir tā kā viņš teica ka UART piemēram nav iespējams eneiblot RX interruptu mūžīgi un tik krāmēt ienākošos datus kautkādā bufferī, bet nākas norādīt cik baitus gribi saņemt, vai nākas eneiblot interruptu pēc katra baita. Bet nu tie visi ir sīkumi, ja nepatīk kā tā funkcija darbojas, tad uzraksti savu, par pamatu ņemot jau esošo kodu. Vismaz nav dienām jāurbjas caur datashēetu, lai izpētītu ko katrs bits dara reģistros, kods ir diezgan pašdokumentējošs un uzreiz var saprast kas tur notiek.

 

Tas pats arī ja reāli grib sākt kautko rakstīt, OK liela daļa funkcijas nav perfektas, bet iesākumam der, tīri lai saprastu kā kas darboojas. Pēctam var pētīt sīkāk, kā katrs peripherālis darbojas. Kautvai tas pats CAN tavā gadījumā. Ja jāsāk no nulles, tad aizņems kādu laiku, lai tiktu pie kautkā kas vispār kautko dara. Tas nav AVR un ir nepieciešams diezgan daudz koda, lai vispār pulksteņus eneiblotu, nokonfigurētu viņus utt. Tas pats arī ar visiem pinmuxiem utt.

 

Īsumā, ja ilgs laiks pavadīts ar STM32, vai kautvai ARM Cortex kā tādiem (jo pamati jau tie paši), tad var zīmēties un teikt ka HAL sūds, bet ja nekas nav darīts ar Cortex vispārībā, tad tas HAL ir lielisks iesākums.

 

 

 

 

 

Edited by AndrisBB

Share this post


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

Tas CAN drīzāk bija tāds negribēts gadījums, ar kura tik smalku izpēti nebiju plānojis ņemties. Ja viss būtu aizgājis uzreiz bez ķeršanās, nebūtu dziļāk līdis, bet ja reiz ielīdu, tad vienkārši nevarēju naktī gulēt, kamēr nebiju visu izķidājis pa bitam. Ir viena cita lieta, ar kuru gribētu eksperimentēt, un, kam STM32 varētu būt piemēroti (bet varbūt arī ne). Tas būtu tā saucamais multi portu DC-DC pārveidotājs. Vienkāršots apraksts - ir vairāk kā divi (konkrētajā gadījumā 3), savstarpēji izolēti, līdzsprieguma avoti, bet tādi kas darbojas gan kā avoti, gan kā patērētāji (piemēram, akumulatori). Pa vidu vajag pieslēgt DC-DC pārveidotāju, kas var enerģiju pārpumpēt jebkurā virzienā. Tādas iekārtas ir aprakstītas literatūrā. Pie katra akumulatora ir pieslēgts pilnais tilts no MOSFETiem, starp tilta pleciem ir augstfrekvences transformatora tinums. Visi trīs tinumi ir uz vienas serdes. Tātad kopā 12 MOSFEti. Slēgājot šos 12 tranzistorus noteiktā secībā, enerģiju var pumpēt jebkurā virzienā. Tik tālu realizācija notiek bez īpašām pūlēm. Līdzīgu pārveidotāju esmu realizējis arī pats uz AVR. Bet, lai tuvinātu šāda pārveidotāja lietderības koeficientu 100% , ir svarīgi minimizēt tranzistoru pārslēgšanās zudumus. To dara, realizējot tranzistoru atvēršanos un aizvēršanos momentos, kad vai nu strāva caur tranzistoru ir 0 (ZCS), vai spriegums uz tranzistoru ir 0 (ZVS). To var realizēt vai nu rezonanses shēmās, vai kvazirezonanses shēmās. Pirmajā gadījumā visa shēma strādā rezonanses režīmā, kas rada virkni problēmu, otrajā gadījumā shēmā tiek ieviestas lokālas rezonanses ķēdes, un rezonanse noteiktos momentos tiek organizēta tajās, un tā ir ar krietni augstāku frekvenci, kā pamata pārveidotāja frekvence. Ir virkne rakstu par šo tēmu, ir lērums dažādu interesantu specializētu mikroshēmu, it īpaši Linear Technology (kuru tagad laikam aprijis Analog Devices) izpildījumā. Pētot to visu, ir radušās idejas, kuru realizāciju neesmu atradis, un, kuras gribas pārbaudīt. Un tātad - ir vajadzība realizēt visu šo 12 tranzistoru neatkarīgu atvēršanu/aizvēršanu, manis brīvi izraudzītos laika momentos, intervāli starp kuriem varētu būt mērāmi sākot no dažiem desmitiem nanosekunžu. Neatteiktos, protams, no augstākas precizitātes. Tātad - vai ar STM32 var noorganizēt, ka šos 12 tranzistorus varēšu neatkarīgi vadīt? Ja ņemu analoģiju ar AVR, man būtu vajadzīgi 12 neatkarīgi OUTPUT COMPARE moduļi pietiekami ātram taimerim/taimeriem.

Edited by M_J

Share this post


Link to post
Share on other sites
AndrisBB

Jau esu aizmirsis kas tur ir ar tiem taimeriem, bet apskatot pirmo Nucleo boardu kas man uz galda, redzu ka tur ir 14 timeri, sākot no vienkāršākiem līdz sarežģītākiem, 6 no viņiem ir katram pa 4 output compare kanāliem. Ganjau viņi kautkā šrē interruptus, bet iespējams arī nē. MCU iet ar max frekvenci 180MHz. Droši vien vajadzētu tikt galā ar tavām prasībām :D

 

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...