abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 12:33 | Zajímavý projekt

    Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.

    Ladislav Hagara | Komentářů: 0
    dnes 12:11 | Pozvánky

    Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | IT novinky

    Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.

    Ladislav Hagara | Komentářů: 25
    3.5. 22:33 | Nová verze

    Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.

    Ladislav Hagara | Komentářů: 2
    2.5. 22:22 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).

    Ladislav Hagara | Komentářů: 0
    2.5. 19:11 | IT novinky

    Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.

    Ladislav Hagara | Komentářů: 5
    2.5. 11:22 | Zajímavý projekt

    Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.

    Ladislav Hagara | Komentářů: 2
    2.5. 09:11 | Bezpečnostní upozornění

    Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.

    Ladislav Hagara | Komentářů: 2
    1.5. 20:00 | Komunita

    V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.

    Ladislav Hagara | Komentářů: 3
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (8%)
     (21%)
     (4%)
     (2%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 524 hlasů
     Komentářů: 22, poslední dnes 10:06
    Rozcestník

    Dotaz: framebufer - nemůžu smazat celou obrazovku.

    2.11.2016 17:39 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    framebufer - nemůžu smazat celou obrazovku.
    Přečteno: 401×
    Příloha:
    Mám program pro kreslení na obrazovce a nemůžu smazat poslední řádky, vyhodí to chybu:
    The framebuffer device was opened successfully.
    1366x768, 32bpp
    The framebuffer device was mapped to memory successfully.
    Neoprávněný přístup do paměti (SIGSEGV) (core dumped [obraz paměti uložen])
    
    Ale když v funkci nebudu chtít smazat posledních 6 řádků "vinfo.yres-6" tak to funguje OK.
    void clear_fb(int r, int g, int b)
    {
    int y_pom;
    int x_pom;
    
    for ( y_pom = 0; y_pom < vinfo.yres-6; y_pom++ )
            for ( x_pom = 0; x_pom < vinfo.xres; x_pom++ ) {
    
                location = (x_pom+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
                           (y_pom+vinfo.yoffset) * finfo.line_length;
    
                if ( vinfo.bits_per_pixel == 32 ) {
                    *(fbp + location) = b;        // Some blue
                    *(fbp + location + 1) = g;     // A little green
                    *(fbp + location + 2) = r;    // A lot of red
                    *(fbp + location + 3) = 0;      // No transparency
                } else  { //assume 16bpp
                    unsigned short int t = r<<11 | g << 5 | b;
                    *((unsigned short int*)(fbp + location)) = t;
                }
     }
    }
    
    Někde mám nějakou chybičku neporadíte kde?

    Celý program v příloze.

    Řešení dotazu:


    Odpovědi

    3.11.2016 08:32 MM
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Ahoj,

    Vypadá to, že zapisuješ do paměti, která ti nepatří

    já bych asi hledal kolem finfo.line_length (vypsat si), když mmapuješ, používáš screensize, který počítáš jinak než pak location v clear_fb a to může pak zapisovat do nemmapované paměti.

    Tzn. vypsat si celkový screensize a kontrolovat, že location ve funkcích není větší než... a když jo případně vypsat a nezapisovat do té paměti a hledat proč. Rozhodně počítat pokud možno stejným způsobem location a screensize

    3.11.2016 12:17 R
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Ano, line_length bude asi vacsi ako xres. 1366x768 je totiz debilne rozlisenie, sirka nie je nasobkom 8...
    3.11.2016 15:56 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Jo tady bude zrada nechal jsem si vypsat velikost řádku a je větší jak 1366x4 takže podle mě budu mít špatně spočítaný screensize.

    Díky za nakopnutí půjdu to přepočítat.....
    3.11.2016 16:37 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Je to tak, prostudoval jsem proměnné a screensize už nepočítám - vždyť v proměnných ho mám už spočítaný :-(
    screensize = finfo.smem_len;
    
    Jo třeba projít proměnné a použít správné :-)

    Díky za nakopnutí....

    Zdá se že už je to OK.

    Samozřejmě jsem blbě počítal screensize pak byl menší protože u nestandartního rozlišení je řádek větší v framebuferu než se skutečně zobrazuje.
    3.11.2016 14:52 Marek Sulik
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    hmm,

    tak ja tipujem, ze ten smernik fbp je typu (int*).

    takze potom: unsigned short int t = r<<11 | g << 5 | b;

    *((unsigned short int*)(fbp + location)) = t;

    Ide mimo rozsah, lebo tam bude dany pocet unsigned short int-ov.

    fpb + location

    sa posunie na lokalitu o location int-ov dalej.

    takze by som spravil na zaciatku premennu ( kvoli rychlosti ): unsigned short int *fbp_us = (unsigned short int*)fbp;

    a potom pouzival ju takto: *(fbp_us + location) = t;

    alebo iba jednoducho pretypovat na (unsinged short int*) pred operaciou + location;

    3.11.2016 15:12 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Nejsem žádný C guru, ale když dumpuje core a zkompiloval by se s debug stringy (-g), tak by to v gdb nemusel být problém dohledat, ne?
    3.11.2016 15:49 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Je mi jasné že zapisuji mimo paměť asi to budu muset začít ladit tím že budu vypisovat kam to zapisuje do nějakého logu.

    Jinak to chci použít na RPI 3 tam to funguje OK sice tam používám menší rozlišení a pouze 16bpp.

    Takže zrada bude v tom počítání location.
    4.11.2016 11:01 Jirka
    Rozbalit Rozbalit vše Re: framebufer - nemůžu smazat celou obrazovku.
    Jak už zde naznačil předřečník, k ladění takových chyb obvykle stačí použít např. gdb nebo valgrind.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.