[elektro] További C kérdés

hg12345 hg12345 at freemail.hu
Sun Jan 21 10:31:45 CET 2018


 Ha ilyet akarsz és tényleg szeretnéd, hogy különböző területen tárolódjanak, akkor csinálj egy FLASH (const) és a normál struktura definiciót külön válogatva tárolási hely szerint a structura tagokat. Ezeket akár tömb vagy egyedi struct névvel is elhelyezhető.

Ha csak vegyes definiálást csinálsz, akkor a C tréfás lesz,   ilyen cost esetén, a C initben az adatokat bemásolja a RAM területre, ezt a sebesség miatt teszi.
Szóval ha tényleg a FLASH területen szeretnéd tárolni és onnan kezelni az adatokat, akkor fordítás után meg kell nézni hová teszi,  és a fordító alapos tanulmányozása után a specifikus módosítót meg kell keresni. ((va olyan amit egyes fordítok nem kezelnek, pl.: KEIL  constansra mutató constans pointer, szóval egy definicóban két const itt nem lehet, pedig az alap C engedi)

Utána csinálsz egy strucktura tömböt amiben összesen két pointer található ami a tárolásii hely structurákra mutat
ha a cél structurák tömbben vannak akkor elegendő egy index is, és ezt tárolni se kell.


-------- Eredeti levél --------
Feladó: Bali Zoltan < eltexto at freemail.hu (Link -> mailto:eltexto at freemail.hu) >
Dátum: 2018 január 21 09:34:33
Tárgy: Re: [elektro] További C kérdés
Címzett: elektro at tesla.hu < elektro at tesla.hu (Link -> mailto:elektro at tesla.hu) >
 
Igen, csak most hirtelen nem látom át,
de érzésem szerint definíciós szinten
nem érem el a felső struktúra kezdőcímét.
Inicializálás szinten, meg kell a mezőre hivatkozás.
Az meg olyan mintha kézzel írom oda az indexet.
Szóval a beleszerkesztés, adatstruktúra módosítás
szívását akarom minimalizálni.
Azért ilyen komplikált, mert a paraméter mezők
amik egyformák, és a kezdő, min, max, option
DescStr, stb. -ket tartalmazzák, const(flash)
területen vannak. Egy ilyen leíró mezőhöz
egy változó érték tartozik, maga a paraméter.
Ez egy különálló tömb a ramban.
Tehát, kényszerűen szét van törve az adatstruktúra.
Ezt próbálnám "összeszinkronizálni".
Kétféle módon kell elérnem ezeket, Block[idx].struct,
Name.struct.
typedef union _SETTING_PARA_UN
{<!-- -->
  TEST_SETT_ST   Named;
  TEST_ROW_ST Block[(sizeof(TEST_SETT_ST))/(sizeof(TEST_ROW_ST))];
}SETTING_PARAM_ST;
Köszi
Üdv.  Zoli
2018.01.21. 9:09 keltezéssel, SZIGETI Szabolcs írta:
> Hali!
>
> Képezed a címét, kivonod belőle az felső struktúra címét és elosztod a
> méretével. De szerintem ha ez a kérdés felmerül, akkor jobban jársz, ha más
> megoldást választasz. Nem tudom mi a célod, persze. Ha tömböt akarsz, akkor
> inkább csinálj azt és nincs gond, mindent intéz a compiler.
> Ha meg valami létező memória struktúrát akarsz leképezni, akkor meg szívni
> fogsz a padding bájtokkal meg hasonlókkal.
>
> Szabolcs
>
>
> 2018. január 21. 8:55 Bali Zoltan írta, <eltexto at freemail.hu>:
>
>> Hali,
>>
>> Van egy struktúra, ebből x azonos példányt
>> csak más-más névvel felhasználok egy újabb
>> struktúra definícióban. Hogy lehet megállapítani
>> hogy az adott struktúra elem hányadik a top(az újabb)
>> struktúrában. Vagy ne törjem a fejem rajta, mert
>> nem lehet. Ja, még annyi, az alsó struktúra mezőbe kellene
>> inicializálnom ezt az értéket. Tehát tudjam hányadik
>> a sorban, amiből majd index lesz. Persze nem úgy, hogy
>> odaírom az aggregátumok megadásánál.
>>
>> typedef struct _TEST_SETT_ST
>> {<!-- -->
>> TEST_ROW_ST First;
>> TEST_ROW_ST Second;
>> ...
>> TEST_ROW_ST Nth;
>> } TEST_SETT_ST;
>>
>> Köszi
>>
>> Üdv. Zoli
>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
> -----------------------------------------
> elektro[-flame|-etc]
-----------------------------------------
elektro[-flame|-etc]


More information about the Elektro mailing list