Pawel Kurzawa
Guest
Fri Nov 05, 2004 10:13 am
Witam,
juz mnie szewska pasja dopadla :)
struktura z danymi o pierwszym wolnym adresie we flashu (at45db011)
struct Flash_Addr{
u16 Page_Addr;
u16 Byte_Addr;
};
prototyp:
void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);
funkcje ma zapisywac dowolna dana od bajtu do struktury. np.
struct Store{
u16 Store_Data;
u16 Store_Time;
u32 Store_Param;
};
wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));
no i przy kompilacji wywala:
warning: passing arg 1 of `FlashMem_read_block' discards qualifiers from
pointer target type
warning: passing arg 2 of `FlashMem_read_block' discards qualifiers from
pointer target type
nadmienie tylko ze w funkcji sa modyfikowane zmienne Store oraz Flash_Addr.
Krew mnie zalewa
--
--
Best regards
K@pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
Pawel Kurzawa
Guest
Fri Nov 05, 2004 10:43 am
Quote:
void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);
void FlashMem_write_block (volatile void *Buff, volatile Address_t *Addr,
size_t n);
to wiem ze pomoze, ale czy to jest prawidlowe wyjscie?
--
--
Best regards
K@pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
J.F.
Guest
Fri Nov 05, 2004 11:37 am
On Fri, 5 Nov 2004 11:13:20 +0100, Pawel Kurzawa wrote:
Quote:
struktura z danymi o pierwszym wolnym adresie we flashu (at45db011)
struct Flash_Addr{
u16 Page_Addr;
u16 Byte_Addr;
};
Zdefiniowales typ strukturalny, a nie zdefiniowales zmiennej !
Teraz albo:
a) zmieniasz na
struct {
u16 Page_Addr;
u16 Byte_Addr;
} Flash_Addr;
[nie bardzo polecam - zazwyczaj typ strukturalny sie przydaje]
b) zmieniasz na
struct Flash_Addr {
u16 Page_Addr;
u16 Byte_Addr;
} Flash_Buf;
- definiujesz typ "flash_addr" i zmienna "Flash_buf"
c) dodajesz
Flash_Addr Flash_Buf;
Czyli definiujemy zmienna typu Flash_addr - a wiec strukture.
Quote:
wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));
no i przy kompilacji wywala:
warning: passing arg 1 of `FlashMem_read_block' discards qualifiers from
pointer target type
Bo mniej wiecej napisales cos typu
FlashMem_write_block (& float, & int , sizeof(float));
Przyznasz chyba ze dwa pierwsze argumenty sa glupota :-)
J.
Pawel Kurzawa
Guest
Fri Nov 05, 2004 1:45 pm
w sumie chcialem to za bardzo uproscic zeby bylo czytelne i wyszla bzdura.
bo wyglada to tak:
typedef struct {
u16 Page_Addr;
u16 Byte_Addr;
}Address_t;
Address_t Flash_Addr;
prototyp:
void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);
Quote:
wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));
--
--
Best regards
K@pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------