C/C++

(avr-)gcc, szegmentalas?

Fórumok

Sziasztok!
Van egy olyan problemam, hogy egy ATmega128-as flash-teruletebe szeretnek beletenni egy FPGA bitstreamet. Alapesetben ez tok jol mukodik, fix cimzessel, minden oke. Kerdes az az hogy ezt hogyan tudnam "kulturaltan" megoldani, azaz valahogy deklaralni neki egy szegmenst, megpedig ugy hogy a szegmens az mindig flash page-aligned (azaz itt konkretan 256-tal oszthato) cimre keruljon? Az elofordulhat a fejlesztes soran, hogy a bootloader a fo kodot nem frissiti, csak a bitstream-et (ezert kell page alignment). Ugyanakkor hosszutavon nem tul elegans ha mindig fix cimre kerul, vagy ha fix cimre is kerul, jo lenne ezt a C kodon belul tartani es ne mondjuk az objcopy + srec_cat takoljon ossze egy olyan hex image-t, ami epp' jo offset-en van (azaz most epp igy csinalom).
Maga az avr-gcc, ha jol latom/ertem, 3 szegmenst hoz letre (vector table, fo program, illetve a crt soran lefuttatott flash -> ram masolas adata, pl ide kerulnek a stringek is), valahogy ezt probalnam kiterjeszteni.
Thx, A.

C Kezdő; láncolt lista, bináris fájlműveletek, SIGSEGV hiba

Fórumok

Sziasztok!

A segítségeteket szeretném kérni az alábbiakban, nem tudom debuggolni ezt programot( még, bízok benne, hogy segít valaki :) ) :
A feladat adott, nem túl bonyolult:
https://pastebin.com/sGw7mcae

A debugger ezeket dobja:
https://imgur.com/a/AkmF6

És végül maga a kód:
https://pastebin.com/RkTdjtBL

Ami érdekessé teszi a dolgokat, hogy egyszer működik a program, egyszer nem, látszólag a második adattal nem bírkózik meg, de az sem mindig, 8GB rammal lefut, 4GB rammaé nem akar.

Örök hála, ha valaki veszi a fáradtságot, hogy rápillant. :)

Saját MIB snmp-hez

Fórumok

Sziasztok!

Csak kísérletezgetnék, de nem nagyon haladok. Egy saját MIB fájlt szeretnék beilleszteni az snmp-be. Az snmptranslate látja is, tehát megfelelő helyen van, a smilint nagy hibát nem jelez, a lekérdezés mégsem sikerül, mert nincs olyan objektum. A Tkmib-ben az enterprise ágban látszik és tallózható a MIB-em, ám amikor lekérdezném, vagy értéket szeretnék neki adni akkor jön a "no such object in this agent". Vagy esetleg "no such variable name in this MIB". (Ez érdekes, mert rákattintás után írja ki a Tkmib, ha 1-es verziót választok. 2-esnél NOSUCHOBJECT.)

Talán most következne a mib2c, aminek a használatát egyelőre nem értem. Rendben van, hogy írok olyan C-programot, ami a lefordítás után lekérdezi a 161-es porton az adatokat. De mi van, ha akkor sem látja az agent a MIB-emet?
A legfontosabb kérdés tehát a következő: Hogyan kell az agent számára is látható objektumot készíteni? Írni is szeretném később.

Köszönöm előre is!

Bzip2 forrásfájl beágyazott eszközhöz

Fórumok

Sziasztok,

32 bites mikrochip-en akarok bzip2-vel tömöríteni. Sima zip-re találtam kódot, de annál nagyobb tömörítése kell, ezért a bzip2. Előbbi kb. 37%-ra nyomja le az adatot, utóbbi 16%. Előbbi <2 MB residens mem-et használ futáshoz, utóbbi <8 MB.

Egyetlen szál C forrás fájlt keresek, amelyhez nem kell külön header fájl vagy egyéb lib. Zip-hez van egy ilyen, egy ilyesmit keresek bzip2-hez:

https://paste.ubuntu.com/26539770/

Ötlet? Kösz.

C fordítót érdemes 2-nél többször fordítani?

Fórumok

Belevágtam a LFS-be és először ugye a meglévő toolokkal fordítunk forráskódot, hogy aztán az abból készült binárissal ismét lefordítsunk egy alap Linux konfigurációt.

Legyen a meglévő gcc verziója mondjuk 4.9. Legyen a letöltött gcc verziója 7.2. Az első fordítás eredménye egy 7.2-es gcc amit 4.9-es gcc-vel fordítottunk. A második fordítás eredménye egy 7.2-es gcc amit már 7.2-es gcc-vel fordítottunk -- viszont ezt egy 4.9-es gcc fordította. Lehet hülye kérdés, de van értelme még egyszer lefordítani? Vagy az output a második fordítástól kezdődően már mindig ugyanaz lesz?

SDCC volatile

Fórumok

Ismerkedem az STM8S családdal. Egyelőre az SDCC mellett döntöttem. Most jutottam el az interrupt kiszolgáló rutinhoz.
A rutin egyelőre csak egy számlálót ketyegtetne és itt a következőt találtam az SDCC 3.6.9 leírásában:

3.8.1.1 Common interrupt pitfall: variable not declared volatile
If an interrupt service routine changes variables which are accessed by other functions these variables have to be
declared volatile. See http://en.wikipedia.org/wiki/Volatile_variable.

Kicsit zavaros nekem ez a volatile. Ráadásul amit eddig neten találtam stm8x.h a cpu regisztereket *(unsigned shar*) típőusként definiálja. Ha hiszünk a wikipédiának akkor ezeknek is volatile -nak kellene lennie. Vagy valamit félreértek?

[C++11] makró helyett STL-szerű algoritmus

Fórumok

Egy commitem beakadt egy review-ban, mert makrót használok benne. Esetleg valaki tudna segíteni, hogy "STL-like" algoritmus legyen a makro helyett ahogy a maintainer kéri?

https://gerrit.vesnicky.cesnet.cz/r/#/c/901/2/src/Imap/Model/ThreadingM…

Ez nekem már túl magas, nem vagyok rutinos C++ -os, csak egy pár hozzájárulás erejéig szívtam fel magam valamennyire a nyelvből. Viszont a patch amúgy jó, szeretnék a juzerek ezt a feature-t, kár lenne érte.

C típus kereszthivatkozás hogyan?

Fórumok

Egy minimális C webszerverhez a következő kereszthivatkozást tartalmazó adatszerkezetet kellene kialakítanom:


enum method_t { GET, POST };

typedef struct {
    char *url;
    callback_t callback;
    enum method_t method;
} req_t;

struct http_state {
    char *file;
    int left;
    int retries;
    req_t *req;
};

typedef void (*callback_t)(struct http_state *hs);

Jelenleg a data_t rekordban "callback_t callback" helyett "void* callback" van megadva. Így ugyan típuskényszerítéssel működik, de ez azért nem szép.

Hogyan tudom C-ben helyesen definiálni a fenti adatszerkezetet?

Netbeans, C++, (OpenGL) Ubuntu linuxon

Fórumok

Sziasztok! Erdeklodnek, hogy valaki a fent emlitett komboval fejleszt-e Ubuntu alatt?
Gondoltam nekiallok megnezni par kodot a demoscene-s megoldasok miatt pusztan erdeklodesbol. Az alabbi tutorial alapjan haladtam: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-1-opening-a…

Odaig eljutottam, hogy a 'make all' utan a progik (pl. ./playground) parancssorbol megnyilnak, viszont ha a kodba belaakarok nezni Netbeans-el akkor rendszerint hianyol header fileokat (pl. glfw3.h stb.). Ezeket nagy nehezen reszben sikerult megoldanom, de keptelen vagyok egy adott kodot modositani es ujbol buildelni vagy futtatni.
Jelenleg a glfw3.h-t hianyolja (pedig feltelepitettem), illetve futtataskor "No executable specified in project"-el keres valami exe file-t.

Van esetleg valakinek valami tapasztalata ilyesmivel kapcsolatban?

ESP8266 DNS szerver debug

Fórumok

ESP8266-osra szeretnék egy minimális DNS szervert, hogy mikor AP-ként üzemelve egy kliens kapcsolódik hozzá, minden nevet az ESP ip címére oldjon fel. Mindezt RTOS alapokon, amihez most az esp-open-rtos projectet használom. Sajnos ebben nincs DNS szerver. FreeRTOS-ban írt valaki egy captdns szervert, amit megpróbáltam átpofozni. Már el is indul, csak épp nem működik. Próbáltam - amennyire tudtam - debugolni, azaz a DNS szerver folyamatában ellenőrizni, mikor mi történik valójában.
Ha a kliensen kiadok egy "host alma" parancsot, akkor a DNS szerver rendben megkapja az A típusú DNS kérésben az alma szót feloldásra, összeállítja a választ, azt visszaküldi (netconn_send) a kliensnek, és a visszaküldés sikeres.
A kliens mégsem elégedett a válasszal. Újra megpróbálja a folyamatot, majd timeout-tal kiszáll.
Amilyen DNS szerver/kliens forráskódokat láttam, azok alapján a DNS szerverem azt teszi, amit kell.
Mondjuk furcsaság, hogy néha kap egy 28-as típusú DNS kérést is, amiről nem tudom, micsoda, emiatt figyelmen kívül hagyom, de ez elvileg az A típusú DNS kérést nem befolyásolja.
Azt hiszem innentől a kliens szerver közötti UDP forgalmat kellene valahogy debugolnom.
Tudtok erre valamilyen eszközt Debian alatt?
Írt már valaki primitív DNS szervert - netán ESP alatt -, vagy van ötlete? Arduino környezetbe létezik egy működő DNS szerver ESP-re, amit már használtam is, de annak a portolásától jobban tartok. Az nem is RTOS alapú, meg azért C-t is csak annyit használok, amennyi ehhez az ESP-hez kell.
Ha van bárkinek ötlete, tapasztalata, netán alternatív javaslata, hogy mi más módon adhatnám vissza a klienseknek mindig az ESP ip címét névfeloldásra, azt megköszönném.