Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - mhi

Stran: 1 ... 9 10 [11] 12 13 ... 33
151
Hardware / OLED LCD 1.3" chodí, 0.96" nechodí
« kdy: 04. 12. 2021, 23:10:26 »
V supliku jsem nasel par cinskych OLED LCD modulku. Napsal jsem kratky kod do STM32F103, ktery pres I2C inicializuje ten 1.3" display. Funguje to jak ma, pouzivam tuto inicializaci:

Kód: [Vybrat]
void OLED_Init(void) {  // cmd: send START, 8bitSLA, D/C sentinal=0x00, command_value, STOP
        ssd1306_command(SSD1306_DISPLAY_OFF);          //   0xAE
        ssd1306_command(SSD1306_SET_CLOCK_DIV_RATIO);  //   0xD5
        ssd1306_command(0x80);                         //   0x80
        ssd1306_command(SSD1306_SET_MULTIPLEX_RATIO);  //   0xA8
        ssd1306_command(0x3F);                         //   0x3F
        ssd1306_command(SSD1306_SET_DISPLAY_OFFSET);   //   0xD3
        ssd1306_command(0x0);                          //   0x00
        ssd1306_command(SSD1306_SET_START_LINE | 0x00); //   0x40
        ssd1306_command(SSD1306_CHARGE_PUMP);          //   0x8D
        ssd1306_command(0x14);                         //   0x14
        ssd1306_command(SSD1306_MEMORY_ADDR_MODE);     //   0x20
        ssd1306_command(0x00);                         //   0x00
        ssd1306_command(SSD1306_SET_SEGMENT_REMAP | 0x01);// 0xA1
        ssd1306_command(SSD1306_COM_SCAN_DIR_DEC);     //   0xC8
        ssd1306_command(SSD1306_SET_COM_PINS);         //   0xDA
        ssd1306_command(0x12);                         //   0x12
        ssd1306_command(SSD1306_SET_CONTRAST_CONTROL); //   0x81
        ssd1306_command(0xCF);                         //   0xCF
        ssd1306_command(SSD1306_SET_PRECHARGE_PERIOD); //   0xD9
        ssd1306_command(0xF1);                         //   0xF1
        ssd1306_command(SSD1306_SET_VCOM_DESELECT);    //   0xDB
        ssd1306_command(0x40);                         //   0x40
        ssd1306_command(SSD1306_DISPLAY_ALL_ON_RESUME);//   0xA4
        ssd1306_command(SSD1306_NORMAL_DISPLAY);       //   0xA6
        ssd1306_command(SSD1306_DISPLAY_ON);           //   0xAF
        //OLED_clear();
}//~~~~~~~~~~~~~~~~~~~~~~ LOW-level OLED_I2C ~~~~~~~~~~~~~~~~~~~~~

Na displayi se objevi random data, kdyz tam zapisuju pres jinou fci data, tak se to chova korektne.



Problem nastava v 0.96" OLED modulku, je to presne tento, i kdyz kupovany kdysi davno od cinana: https://www.laskarduino.cz/oled-displej-bily-128x64-0-96--i2c/
protoze at zkousim co zkousim, nedari se mi ho inicializovat, display je neustale cerny.

Vim, ze je asi blbost se takhle ptat, cinan lepi ty moduly jak se mu zachce, kdyz jsem delal neco s barevnymi LCD displayi, vlastne kazdy modul ktery z  eBaye prisel byl tak trochu unikat :). No ale treba jste nekdo na neco takoveho narazil a vyresil.

Napajim to 5V, na modulu je stabilizator na 3.3V, I/O mam 3.3V CMOS, softwarove resene I2C.

Muzu mit teda i chybu v tom I2C, pripadne nekde v timingu (ten jsem zkousel menit na opravdu pomaly). Nekde jsem taky cetl, ze ty 0.96" pouzivaji nejaky controller, ktery nema uplne korektni I2C.

152
Hardware / Re:Držák na velký monitor
« kdy: 26. 11. 2021, 12:52:34 »
Drzaky nejsou zadna lace. Pro nekoho je mozna resenim oslovit nejakeho zamecnika. Neudela zadny drzak typu 3 ramena, bude to jednoduchy svarenec treba s jednou stavitelnou osou, cenu bych videl ve stokorunach kdyz to nebude muset nechat lakovat.

Mam takhle nejak udelany stropni drzak na televizi (kabely jdou do stropu). Je to par uzouckych jekliku, material stal nejake drobne, svarec mi to svaril s dalsimi vecmi snad za stovku nebo dve, na pocet svaru by to vyslo asi tak na 20 Kc :), ale je to pred lety.

153
Ale vždyť to tam kromě voličů SPD chtěli všichni mít.

Ja treba volic SPD nejsem a mit to tam nechci. Osobne zastavam nazor, ze stat ma mit jen ty nejnutnejsi udaje, ktere potrebuje ke svemu chodu, a stat ma byt co nejmensi.

Casto se pouziva argument "kdo nic zleho nedela nemusi nic skryvat". A ted to konfrontujte s rokem 1939, 1948, apod. Nebo si predstavte, ze se k moci dostane treba SPD, nejak se to podivne zasmodrcha ... a najednou si zacne nekdo vsimat toho, kdo psal na forech o SPD, a uz nevzniknou nejake papirove slozky na nepohodlne lidi, ale nejaka AI projde diskuse na Internetu. A vyhodnoti, ze PanVP asi neni priznivec SPDa, nekde se dohleda jak se vlastne jmenujete  ... a najednou zacnete mit nepohodlny zivot.

Nebo se Vas otisk objevi na nejakem predmetu souvisejicim s trestnou cinnosti, kterou jste treba vubec nespachal. Mate nejakeho znameho advokata, ktery zastupoval klienta, kde bylo jasne ze danou vec nespachal, ale ten clovek stravil mesice ci rok a vice ve vazbe? Znal jsem dokonce takoveho cloveka osobne. Vypravel mi jake to ve vazbe bylo, i jaky byl dojem z hlavniho liceni kdyz na vine trval uz jen statni zastupce a zrejme senat, pritom dukazy i poskozeni hovorili o opaku (zkratim to, dopadlo to dobre uz v 1. stupni, zprostujicim rozsudkem).

Takze moje otazka: za jakym ucelem stat vyzaduje tyto informace ?

154
Odpoved na Vasi otazku neznam, ale jsem-li v situaci, ze po mne urednik chce neco o cem mam pochybnost ze to chtit muze (pada tam prave to jedine oduvodneni "tak se to dela"), tak mu reknu OK, nemam s tim problem. Tady po vas chci to a to a odmitam udelat to co chcete vy, vydejte mi nejake - i zamitave - rozhodnuti (napr. podle spravniho radu).

Vetsinou nasleduje chvile presvedcovani, a pak bud vyhoveni me zadosti, nebo odchod za vedouci a vyreseni. U toho si casto pro jistotu udelam fotku meho podani spolu s tou urednici, nebo polozim na stul telefon s nahravanim s tim, ze si jednani dale budu nahravat.

Namatkou jsem to pouzil kdyz mi urednice odmitla resit prevod motorky, a dale kdyz mi odmitla vydat obcanku (!!) protoze jsem nemel u sebe nejaky jejich listecek. Obcanku jsem dostal, motorku mi sice na miste nevyresili, ale papiry si vzali a vse nakonec pripravili, hezky zavolali ze uz mam znacku, a dohodli jsme se ze tam pro to prijde kolega i bez cekani a nejake rezervace.

Tento pristup je samozrejme vhodny jen na to, kde vas urednik nemuze nejak poskodit.

155
Dobry den pane Predny,

 predne :) dekuji za hodnotny a obsahly komentar. Myslim, ze to dukazni bremeno zde v diskusi zatim chybelo (popravde jsem ale vse necetl poctive).

 Co mne zajima se pohybuje v mantinelech Win/Office/Adobe licenci, tech ktere kupuji bezni uzivatele. Neresime nejaky specificky software, protoze tech 5 zminenych bodu se na ne myslim nemusi uplatnit. Zaujal mne hlavne bod 2, proc by tomu tak melo byt? Proc si nemohu koupit licenci napr. z USA, pokud mi to vylozene nezakazuje ? Nebo obecne spis jakoukoliv zemi, ktera pristoupila k Zenevske konvenci, resp. TRIPS. I kdyz jak koukam, je tam i Cina :). Co podle Vas stavi licence uvedene v EU+CH nad ty z jinych cizich zemi ?

156
Mir. Silhavy a muj komentar k autu: zjednodusil jsem to, nechtel jsem az tak velky offtopic.

ostatni: bylo by mozne tady konkretne napsat co prislo, jaka byla faktura, atd. ? Celkem by mne to zajimalo. Prijde mi dost neuveritelne, ze by treba nekdo prodaval za cenu okolo 1000 Kc pouhy Windows klic z nejakeho warez fora, ale mozne je asi vsechno. Proto se tady ptam. Idealni by bylo napsat tedy jak probehl obchod, za ramcove jakou cenu, kdy, co a jak bylo doruceno (klic-ele nebo pap, faktura, neco dalsiho?), a jak slozita byla aktivace a zda stale funguje.

157
Mam otazku na ty, kdo testovali zejmena ceske prodejce tech licenci, kteri je take maji v radu stokorun nebo okolo tisicovky (nemyslim tim eBay prodej klice za $2), jak to probiha a jak to funguje? Predpokladam prijde faktura, nejaky klic (da se najit pres google?), neco dalsiho - treba oduvodneni zdroje?

A pokud jde o ty eBayare, kteri to berou na warez forech, jak funguje toto? Klic, ktery ukradli nejakemu nebozakovi z PC jde pouzit treba 100x a MS s tim nic nedela?

Trochu odbocim, jiny kraj jiny mrav, jednou jsem kupoval auto, ktere stalo v bazaru, ktery prodaval vykoupena auta na protiucet u dealera jedne automobilky. Zapis v registru (TP) na puvodniho majitele. Dohodli jsme se, KS a fakturu vystavoval na sebe primo bazar. Chtel jsem aby mi dolozili nejake plne moci, dolozili vlastnictvi, protoze nejen ze prodavali majetek vlastne ctvrte strany, ale ani k tomu nic nemeli. Podvod to nebyl, jen proste nejsou "na poradek" zvykli. Pro ne bylo zasadni to, ze v registru dokazou provest zmenu vlastnika i provozovatele bez cehokoliv.

158
Neprijde mi uplne smysluplne reagovat radou, kdyz o 2 posty vyse pisi, ze to nefungovalo. (teda ja pouzivam ulimit -c unlimited). Problem je zjevne v te systemd veci, kdyz ji odinstaluju, tak to udela coredump uz spravne.

159
...coredumpctl.  (Které mimochodem řeší ten problém s coredumpy rozesetými všude možně.)
...který ale už dávno před coredumpctl vyřešila existence /proc/sys/kernel/core_pattern

To pravdepodobne ale neni systemd reseni, ze ? Nac delat veci Unixove, jednoduse, kdyz systemd. Ono teda ten systemd-coredump vyuziva nejspis tuto feature, protoze obsahuje '|/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h'. Po apt remove tam je 'core' a corefile to uz generuje.

Ma nejakou takovou uchylarnu jeste nejake BSD ?

Mac OS/X koukam ma taky vlastni reseni, i kdyz zrejme funkncni (coredumpctl mi nechodil). https://stackoverflow.com/questions/2080918/where-are-core-dumps-written-on-mac

160
Panove, dekuji za rady, ale ani jedno mi nefungovalo. Ten system je proste mnohem chytrejsi nez ja. Tak nejak bylo jednodussi se obejit bez toho coredumpu a chybu si najit jen ve zdrojacich.

161
No vidite, a ja dneska resil na celkem cerstve instalaci Bubuntu proc mi to sice napise core dumped ... ale core file jsem nikde neobjevil. Asi uz starnu, Linux je "nejaky jiny nez za mladych let".

162
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 28. 10. 2021, 13:33:03 »
Zkousim ted jestli se podari nejak elegantne pres inline assembler pro x86-64+ARM udelat vyhodnoceni flagu. Jde o to, ze potrebuju udelat nejakou ALU operaci a ulozit si z ni flagy, abych je pak dodatecne nemusel slozite dopocitavat, resp. vytahnul si z flags registru jestli bylo carry a pracoval s nim nasledne.

Muj kod vypada takto:

vypocet ea
load
pripadny druhy dopocet ea
alu
store
dalsi prace s flagy

mezi alu a "dalsi prace s flagy" nemam zaruceno, ze se mi neprepisou. Takze prepisu alu z C operace na inline asm + store flagu do nejakeho registru, ktery nasledne pouziju pri "dalsi prace s flagy".


U ARMu je to primocare - msr SPSR. Jak to resit u x86-64 ? lahf/sahf nemusi byt podporovane, nejlepsi co mne napada je nejake pushf/pop eax, ale mozna existuje lepsi varianta?

Pripadne pokud tu jsou odbornici i na jine ISA, jak se to dela u nich? Ne ze bych potreboval ten translator mit treba na LX6 nebo MIPS, spis jsem se do toho vystupu zakoukal a ucim se na tom nejake nove veci. Zatim se mi muj napad zda celkem jednoduse realizovatelny, tak bych to mozna ze studijnich duvodu vyzkousel taky.

163
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 26. 10. 2021, 20:28:10 »
Funkci preprocessoru znam, problem jsem uz nakonec lokalizoval. gcc nedokaze ten otaznikovy vyraz vyhodnotit pokud je v cyklu "while (runonlyonce) { ... }", tedy cyklus probehne jen jednou. V jednom miste jsem to tak mel a rozbilo to vsechno okolo. Zvlastni je, ze jina vyhodnoceni v takovem cyklu necini problem, gcc je napocita a bere je jako konstanty. A ve vysledku ten cyklus nikde ve vystupnim kodu neni ... zvlastni.

__COUNTER__  bohuzel neni pro mne v teto ciste podobe reseni, potreboval bych tech counteru vic - problem jsem trosku zjednodusil.

Kazdopadne diky za pomoc.

Ted musim udelat automat, ktery projde ten opkodovy prostor, a pak zkusim trochu optimalizovat vystupni kod, aby to nebyly takove silene bloby plne opakujiciho se kodu.

164
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 26. 10. 2021, 12:41:36 »
Chapal jsem ten anglicky termin trosku jinak, tak mi to nedavalo smysl k ceskemu. Dekuji za upresneni.

Pridal jsem na konec kodu endmarker, validni instrukci aby to slo objdumpovat, zatim jen pro x86

#define ENDMARKER()  __asm__ __volatile__ ("\n\t .byte 0x3f");  // "AAS"

tail cally to vyresilo spolehlive. Co mne ale prekvapilo, nektere snippety jsou diky tomu kratsi, nekdy i o mnoho bajtu :). Samozrejme u spousty tam ta jedna instrukce pribyla, ale je na konci, takze zkusim pripadne napsat neco co ji zlikviduje. Funguje stejne i toto:

#define ENDMARKER()  __asm__ __volatile__ ("\n\t");  // jen likvidace tail callu

Co mne nyni trapi v tom, abych to generovani nejak mohl automatizoval je nefunkcnost makra, toto je prototyp pro jeden opkod (realne se pak pouzije misto FAILURE rozvoj do dalsich)

mam definovano:
opcodes.h:#define OPCODE_BYTE_1 0xnn

sem by se to melo dosadit:
opcode = instr_get_opcbyte();

toto makro funguje 100%, gcc optimalizuje podle toho define
cpuhelpers.c:#define instr_get_opcbyte() OPCODE_BYTE_1

pred instr_get_opcbyte(); volam:
cpu.c:        n_opcode = 0;

toto makro
cpulelpers.c:#define  instr_get_opcbyte()  (++n_opcode, (n_opcode == 1) ? OPCODE_BYTE_1 : FAILURE)


vubec nefunguje. Zcela identicky ekvivalent pro arg1/arg2 jak jsem psal vyse mi chodi naprosto bez problemu. tady to makro se rozvine z nejakeho zahadneho duvodu, jako kdyby gcc neumelo uvazovat o fixni hodnote n_opcode a predpocitat to na fixni vysledek OPCODE_BYTE_1 ! Netusite nekdo kde delam chybu ? Prijde mi to uplne silene, hlavne kdyz daleko slozitejsi varianta s registrovymi argumenty chodi jak ma. Prijde mi jako kdybych nevidel nejaky preklep nebo tak neco.

Dekuji za pripadne popostrceni.

165
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 25. 10. 2021, 14:59:12 »
"gcc v módu jazykového právníka" - tomu nerozumim o co jde.

Ano, neco takoveho jako ty znacky jsem myslel. Podobne znacky pouzivame na oznaceni vlastniho kodu pro snazsi dokazovani hloupe copy&paste kradeze IP (ale jsou spustitelne a kodove neutralni; v jedne je treba v ASCII moje prijmeni nebo jmeno firmy :) ).

Zkusim to tam nekdy dodratovat, no nebude to zase tak jednoduche, treba to ten tail call nakonec vyresi. Udelam pak seriozni strojovou analyzu tech vystupu, to co jsem tady psal je jen to co bylo videt na prvni pohled.

RDa: mel jsem tam po vypoctu eaddr i prirazeni do lokalni promenne s page_index a page_mask, ktere jsem pak pouzival. Mozna mam botu jeste jinde, ze se tam ta inline fce na vypocet eaddr vola treba nejak 2x, tezko rict, ale nenasel jsem to. Ten kod je pro tento ucel dost hrozny, budu to muset prelozit se zakazanym inlinovanim.

Jeste vlastne resim jeden problem, mam generovany .h soubor, ve kterem je 1 .. n konstant. Aktualne je mam jako

#define CODE_CONST0 0x...
#define CODE_CONST1 0x...
#define CODE_CONST2 0x...

potreboval bych udelat makro GET_NEXT_CODE_CONST() ktere vrati prvni konstantu, ktera jeste nebyla pouzita (takhle si vyzobavam opkody). Dobre mi to funguje na variabilni data, ktera mam jako argumenty pres (register int arg1,register int arg2) v tomto stylu ala vararg:

#define instr_get_nip() (++n_arg, (n_arg==1) ? (arg1) :  ((n_arg==2) ? (arg2) : FAILURE))

jenze na ty fixni konstanty se z toho GCC nejak poblazni a prepise mi to do kodu i s tou detekcni promennou FAILURE, prestoze to je jinak uplne stejne jako na ty argumenty. Nechapu to.

Stran: 1 ... 9 10 [11] 12 13 ... 33