Ovi TI-ovi procesori inace imaju ECC RAM memoriju u sebi, to je posebna memorija sa "samo-kontrolom-korekcijom" greska, to je ozbiljna memorija, takva se koristi na serverima, tacno se zna zasto ona postoji jer se desava da RAM ne zapamti uvek bas svaki bit, desi se po nekad vrlo retko ali to je poznat problem i tako se resava!
03-06-2019, 12:24 PM (This post was last modified: 03-06-2019, 12:59 PM by vedran.)
@Macola
ne znam 16-bit asm, a nešto malo sam bacio pogled. Morao bi dosta vremena izgubiti da skužim što se dešava pod haubom, a ionako prelazim na STM32. Onako letimično, naredba na adresi 316a bi valjda značila da na ++W14 sprema sadržaj W0. Ne znam koliko instrukcijskih ciklusa mu za to treba.
@mikikg
zgodno je što su memorijski prostor podijelili + upis sa jednom instrukcijom. Kako se pokazalo u praksi, jeli ima potrebe za ECC RAM u MCU?
Započeo sam čitati dokumentaciju, oko STM. Ono što sam vidio datasheet je teže "čitljiv" nego Microchip, malo je to sve razbacano. Pročitao sam ovdje temu o STM32.
Inače ne znam da li da ovdje pišem/pitam o generalnim mogućnostima STM ili da pišem u onoj generalnoj temi o tome?
Naletio sam na yt video gdje netko upisuje bootloader za usb (link ispod). Znači li to da ja mogu hex od Mecrisp upisati bez ST-link V2, koristeći samo UART?
>>> Kako se pokazalo u praksi, jeli ima potrebe za ECC RAM u MCU?
Odgovor na to pitanje ne mogu da ti dam, nikad nisam uhvatio taj problem na MCU, to je extremno kompleksno da se uhvati, to se desi na primer na jednom bitu na jednoj lokaciji tad i ko zna kad sledeci put ... ne mozes to da usnimis/ispratis tako lako, bas je komplikovano i zato su sa ECC RAM to predupredili, postoji algoritam koji dok radi memorija prati checksum/parity i po potrebi moze da popuni jedan ili vise bitova ako zafale slucajno jer cuva checksum + ima logika ako je sam checksum problematican ... postoji i feadback informacija da kaze programu da je pocela RAM memorija da blesavi i broji koliko je puta morao algoritam da reaguje!
03-06-2019, 01:50 PM (This post was last modified: 03-06-2019, 01:52 PM by mikikg.)
Jedno malo off-topic pitanje ali je i vezano manje-vise.
Koliko bajtova memorije recimo zauzimaju tri variable tipa uInt8_t (unsigned char = 8bit) na 64bit procesoru?
Koliko bi mi recimo trebalo memorije da smestim hiljadu variabli tog tipa na 64bit procesoru?
Hmm, problem je sto mi treba 8KB da bi smestio 1KB : (
Treba mi milion variabli da smestim ...
03-06-2019, 02:04 PM (This post was last modified: 03-06-2019, 02:16 PM by mikikg.)
Za neki recnik (dictionary) mi treba da radi na serveru, ovi predhodni programeri su skarabudzili to nesto silnu memoriju na serveru su potrosili, cena opsluzivanja servisa katastrofa ...
20'000 konkuretnih konekcija kosta ~50k$ mesecno ... kinezi kad navale : ) ... mora da im to sve razbucam i napravim nov sistem, nema druge ...
PS: Nije samo recnik, od ovoga sintetisu posle Speak/Voice, pretvara u Audio stream ...
Code:
龙竹坪 3 nr
龙筹股 3 nr
龙精虎猛 2 nr
龙纪元 3 nr
龙纹 11 n
龙纹剑 3 nr
...
03-08-2019, 02:20 AM (This post was last modified: 03-08-2019, 03:04 AM by mikikg.)
@Macola
Hehe, pogresne plocice smo uzeli, ova sto imamo je ustvari integrisana u ovoj drugoj i na ovoj drugoj MOZE da se vozi FORTH
https://hackaday.com/2016/12/23/interact...punyforth/
A mozda moze i mecrisp-forth ...
Pogledao sam dokumentaciju, iskreno protokol hmm nije sladak, nema potrebe za tim da se bakcemo, isto sve za 1$ vise ima ceo ARM u sebi i hardwerski TCP/IP/WiFi stack.
Ovo sa slike je osnovni ESP8266 model, ima jos desetak modela, sve bolji od boljeg ...
PS: Ovaj ESP8266 utvari nije ARM jezgro, napravljeno je tako da ima sve osobine ARM-a ali je nesto mnogo unapredjeno, to je ceo SoC sa dva Xtensa LX6 Customizable DPU
Quote:Xtensa LX6 Customizable DPU
High performance with exible I/Os and wide data fetches
Cadence provides system-on-chip (SoC) designers with the world’s rst and only con gurable and extensible processor cores fully supported by automatic hardware and software generation. Cadence® Tensilica® Xtensa® processors, such as the Xtensa LX6 dataplane processing units (DPUs), enable SoC designers to add exibility and longevity to their designs through software programmability as well as differentiation through processor implementations tailored for the speci c application.
PS2: Hmmm, ovaj LX6 je "customizable" CPU jezgro!!! Tu su pokrenuli ovaj "punyforth" Forth! To obecava!
@Mladja ako ne koristi svoje jezgro, ovo jezgro bi verovatno probao ...
03-08-2019, 03:19 AM (This post was last modified: 03-08-2019, 04:02 AM by mikikg.)
Hmmm, pa tek sad povezeujm neke stvari, oduvek sam se pitao kako voze Python na ovom EPS32?
Pa mnogo prosto, prilagodili su CPU jezgro tacno tako da staje microPython unutra!
Isto kao sa Forth, Python je Interpreter i kompajler!
Quote:interactive REPL (Read-Evaluate-Print Loop). The REPL allows you to connect to a board and execute code quickly without the need to compile or upload code.
Konkretne perfomanse jezika Forth vs Python su verovatno na strani Forth-a ali ni ovo nije za bacanje, posebno za neke brzinske probe, pooooseeebno za TCP/IP ...
Hehe, mora da pocnemo da pravimo svoja CPU jezgra, ta jezgra moraju da imaju bar 100MMAC, tj 100 Miliona MACOLA Operacija u sekundi
Tu se bukvalno postavlja ovakvo pitanje "Gospodine Macola, kakvo vama CPU jezgro odgovara kao iskusnom izenjeru da vase sprave koje kontrolise mozete da upravljate instrukcijama koje se izvrsavaju u jednom CPU taktu?"
Nema problema, to se sedne i izmozga i zapakuje u ove DPU jedinice ...
---
Koliko vidim sa ovim microPython ovako bez specialnih trikova postizu na primer 2.4MHz toogle na GPIO, to je odlican rezultat uzimajuci u obizr da u Python moze da se pise Inline Assembler i da se neke kriticne funkcije tako rese.
ESP32 vrti interni clock do 240MHz na dva jezgra ...
03-08-2019, 04:34 AM (This post was last modified: 03-08-2019, 05:06 AM by mikikg.)
Pravim malo pregled tih arhitekura jer ima mnogo dobrih koje nismo ni "pogledali 36 godina", evo zadnji slucaj:
TM320, he he znate sta je to?
Quote:Texas Instruments TMS320 is a blanket name for a series of digital signal processors (DSPs) from Texas Instruments. It was introduced on April 8, 1983 through the TMS32010 processor, which was then the fastest DSP on the market.
Eno ga u prednjem pogonu invertera za Teslu!
---
Drugi procesor je Motorola 68000, kako je to dobar i snazan procesor bio za svoje vreme, to je tad bio 32/16bit procesor u odnosu na Intel 8086 (1979 GODINA, TATA SVIH INTELA SVE DO DANASJIH i7 i BUDUCIH i8) koji je izasao u isto vreme.
Cuveni Sincalair-QL je imao 68008 procesor sa "skracenim" adresnim bus-om, imao je čika Sinkler-ove Mikro-ketridze, to je bilo pre pojave PC-a
Commodore Amiga je imala "full" 68000 sa custom grafickim i zvucnim chipom i tad su stigli floppy diskovi, to je radilo bolje nego bilo koji IBM PC u to vreme sa zeleno-belim MS-DOS !
Postojao je Workbech graficki operativni sistem u boji i sa misem, to nije bilo tad na IBM PC-XT u DOS, imalo je ono "kockasto" crtano text-grafikom
Jedna "ekipa" je to skontala i otisla u drugu stranu i tako je nastao Apple, druga ekipa otisla na svoju stranu i tako nastao Microsoft
Na kraju i jedni i drugi koriste Intelove procesore ...
---
Situacija postaje dotano veoma zanimljiva jer u celu tu pricu ulazi ni manje ni vise nego NVIDIA koju svim znamo po grafickim kartimaca, bas o tome se radi, graficki procesori, ne sto su graficki nego sto mogu da rade CUDA (stvarno se tako zove engine), koji ima ogroman broj "pipe-lines" i "proces-treads" koji se koriste konkretno kod Tesle za AI engine!!!
Dakle pod istom kapom:
- 2 x Denver2 (NVIDIA custom Cortex A) jezgra
- 4 x CortexA57 jezgra
- 256 x CUDA jezgra
03-08-2019, 05:31 AM (This post was last modified: 03-08-2019, 05:50 AM by mikikg.)
Nas je Microchip malo-vise "zaludjivao" svojom tehnologijom, ja sam odavno postavio dva pitanja, zasto im se prvo kontroleri ne prave manjim procesom proizvodnje i zasto (tada) nisu imali multy-core jezgra, Samsung stigao na 8nm tehnologiju, pakuju u Exynos 9820 2xCortexM4 + 2xCortexA75 + 4x Cortex A55 i sve se vrti na GHz clock.
Malo "vise" me to bode, jer PIC16F84 izradjen u 8nm tehnologji bi mogao bez problema da se vrti na 1GHz, da trosi manje struje nego ovaj na 4MHz i celo PIC jegro bi zauzelo mesta na silikonu kao trenutno sto im zauzima jedan na primer interni tajmer.
Dakle samo unapredjenjem procesa izrade mogli bi na isto parce silikona da spakuju oko 50 komada PIC16F84 jezgra koja se vrte na 1GHz+.
Nemoj samo da kazete da oni neznaju za to, znaju znaju, sve te firme su u "komsiluku", sve se zna ko-sta radi ...
03-08-2019, 06:30 AM (This post was last modified: 03-08-2019, 08:04 AM by mikikg.)
@Macola @Vojce
Mnogo me "bode" sto godina kada se naprimer radio onaj foto-spektralni analizator sa 8080 (i PIC je bio umesan), tih godina je Texas Instruments imao ono TMS320 jezgro koje tad bilo 10+ godina na trzistu, tada sa tim DSP je taj spektrlni analizator mogao da radi u realnom vremenu, sa sve FFT analizom i sta je sve trebalo, mi smo to radili softwerski sa 8080 na PLC i softwerski na 8086 na PC i analize su trajale vise desetina sekundi sa sve zaglupima oko integracije pa smo radili Sample+Hold nad nekih silnim Megaohm od foto cevki ... tada se koristile Burr Brown INA101, za njih smo "znali" ... Texas Instruments nam je bio u fazonu "Daj SN7400" ...
Na kraju TI kupio BB i mi umesto da smo makar pogledali ta DSP jezgra mi se mucili sa PIC-om ... Da smo pratili TI samo zbog tih DSP jegra 10 godina pre bi se uhvatili ARM-a jer su ih oni medju prvima poceli prave, sad bi bili na Cortex-A57 "opusteno" sa sve Forth-om !!!
03-08-2019, 05:05 PM (This post was last modified: 03-08-2019, 05:16 PM by mikikg.)
Pre 20 godina je TMS320 imao EPROM/ROM u sebi, isntrukcije su bile 16/32bit i izvrsavale se za 80ns, tada je PIC bio 8/14bit i instrukcije mu bile 400ns.
TMS320 je sad ustvari Piccolo i Delfino serija mikrokontrolera!
Po meni su to najbolji mikrokontroleri trenutno na trzistu (oni ih zovu DSC, digital signal procesori), nije ARM, to je to njihovo jezgro koje radi neke stvari posebno sa motorima mnogo dobro.
TMS320F28076 je Piccolo, onaj malac sa "najboljim" PWM u svetu mikrokontrolera, zato je on u pogonu motora Tesle Model 3 i verovatno Roadster.
Sa tim jedino moze da imas ubrzanje od 0-100km/h za 1.9sec bez menjaca, tolika dinamika treba, o 0Hz do ko zna koliko MHz u 6-faznom motoru
Stigla blue pill STM32F103. Hex ubačen bez ST-LINK V2, preko serijskog porta (kako automehaničari kažu, upalilo na zub ).
Sad možemo nastaviti gdje smo stali
Iako nisam još proučio koji sve registri utječu na postavljanje porta, dobio sam frekvenciju uključivanja i isključivanja od 450 kHz pri duty od 22,5% sa sljedećim kodom:
Code:
$40001018 constant RCC_APB2ENR ok.
$40010800 constant GPIOA_CRL ok.
$4001080c constant GPIOA_ODR ok.
: set $00000100 RCC_APB2ENR bis! $11111111 GPIOA_CRL ! ; ok.
: main begin $ffff GPIOA_ODR ! $0000 GPIOA_ODR ! again ; ok.
set ok.
main
03-17-2019, 11:46 AM (This post was last modified: 03-17-2019, 03:57 PM by mikikg.)
Probaj sledecu stvar, bice ti korisno da znas kako stoji "tajming".
U main fuhnkciji dopisi tako da se ODR setujes/resetujes na primer 10 puta, napisi 10 puta komandu za set i 10 puta komandu za reset (ne for/next petlje), set pa reset, set pa reset i tako 10 puta pa onda na kraju "again".
Tako ces dobiti bolji utisak koliko treba da izvrsi jednu komandu za setovanje, takodje bi trebalo da se popravi duty na 50% bar za tih prvih 10 impulsa.
Asimetrija (<>50% duty) se desava jer programu treba vise/dodatno vremena da skoci sa zadnje linije "again' na "begin" nego sto mu treba da setuje port.
(03-17-2019, 12:02 AM)vedran Wrote: Jeste li pomislili da sam nestao hehe
Stigla blue pill STM32F103. Hex ubačen bez ST-LINK V2, preko serijskog porta (kako automehaničari kažu, upalilo na zub ).
Sad možemo nastaviti gdje smo stali
Iako nisam još proučio koji sve registri utječu na postavljanje porta, dobio sam frekvenciju uključivanja i isključivanja od 450 kHz pri duty od 22,5% sa sljedećim kodom:
Code:
$40001018 constant RCC_APB2ENR ok.
$40010800 constant GPIOA_CRL ok.
$4001080c constant GPIOA_ODR ok.
: set $00000100 RCC_APB2ENR bis! $11111111 GPIOA_CRL ! ; ok.
: main begin $ffff GPIOA_ODR ! $0000 GPIOA_ODR ! again ; ok.
set ok.
main
Vedran,
Jesi li postavio brzinu tog output pina (2MHz, 10MHz, 50MHz) u registru GPIOx_CRL_MODEy?
Nisam se zavlačio u tvoje setovanje tog registra, samo pitam.
@Macola još se mučim s tumačenjem datasheet-a, za razliku od Microchip ovdje se treba malo više pomučiti. Malo se mučim s adresama registara. Gledam registar GPIOx_CRL_MODEy, ali nemam blage još kako doći do adrese i s čime ju postaviti i koji bit što određuje.
03-17-2019, 05:49 PM (This post was last modified: 03-17-2019, 05:56 PM by gorankg.)
Pogledaj Reference Manual RM0008. Imaš objašnjeno sve.
Inače, to sa merenjem frekvencije na pinu ti ne znači mnogo jer nikad nećeš koristiti na taj način.
Kreni sa tajmerima pa ćeš imati dovoljno za rad za narednih nedelju dana.
@gorankg već je otvoren tab i pinned. Krećem od osnovnih stvari zasada puževim korakom, ali drugačije i ne ide. Kako je krenulo bit će i ovo nedjelju dana ima tu još dosta učenja
Malo sam pohvatao to sve skupa. Datasheet-ovi su zapravo organiziraniji nego što se činilo na prvu.
Mecrisp sam malo pomnije proučio, source kod je organiziran. Zato je i jednostavno prenosiv na druge mcu. Bit će red zagaziti svakako u assembler za neke vremenske operacije.
Bitno mi je da pohvatam osnovno, da mi postane upotrebljiv jezik i mcu, da dođem u točku gdje se ostalo uči usput kroz rad.
@Macolakg slučajno sam dobro postavio registre za rad na najvišljoj freq.
@mikikg poslušao sam savjet (morati ću prokopati malo teme koje imaju ovdje i na ES) i puno puta sam ponovio unutar loop da uključi i isključi output pin.
Rezultati:
Dobio sam da je frekvencija oko 1 MHz kao na slici ispod. No i dalje postoji ta "praznina" vjerojatno skok na početak petlje. Na jednoj od slika sam postavio kursore gdje se vidi skok od oko 1 us .
E sad, nešto čudno se dešava, i to se može vidjeti na svim slikama, nakon svaka dva impulsa imaju malo kraće pauze. Na zadnjoj slici se vidi ta pauza, jedino što meni pada na pamet je da je to zato šta sam prilikom pisanja naredbe, u svakom sljedećem redu postavljao pin (stanje u registru) u "0" i "1" pa da "enter" odnosno novi red ne oduzima 240 ns
Dosao si do finesa kojih se ticu ajd da kazem main() programa, to ti je glavna petlja gde ces izvrsavati svoj code, zbog cele postavke tu imas i UART koji ima svoje neke interapte i hendlere, to gde ti se signal "produzio" tada je najverovatnije CPU bio u interapt rutini, to je neminovno da se dogadja kada ima interapta, sad recimo da imas samo JEDAN, imaces ih realno u programu 5-10, zato u main() skoro NIKAD ne mozes da realizujes precizan tajming i zbog toga se koriste interni HW tajmeri koji te stvari rade nezavisno a na programu je da se izbori sa sinhronizacijom dogadjaja.