Zarovnani v LPC11U68

Pavel Hudecek edizon na seznam.cz
Neděle Červenec 10 13:07:44 CEST 2016


A ono je možné, že data v běžném poli charů nejsou zarovnána na B?

V mém případě se např. zobrazí první řádek znaku širokého 18px, ale u 
druhého nastane hard fault, protože jeho adresa má po dělení 4 zbytek 3.

PH

-----Původní zpráva----- 
From: Jiří Nesvačil
nejdriv musi byt vlastni data zarovnana v FLASH na byte, napr v gcc:

#pragma pack(1) //zapne zarovnani na byte tj. 1 jako poctu byte
typedef struct
{
     uint8_t neco1;
     uint8_t neco2;
} STR_FONT;
#pragma pack() //vypne predchozi zapnute zarovnani na byte

Pote se nasledne odkazete jak chcete.


Dne 10. 7. 2016 v 12:37 Pavel Hudecek napsal(a):
> dá se nějak vypnout kontrola zarovnání dat v LPC11U68?
> Vím, že třeba na x86 to jde.
>
> Nejlépe, kdyby na to šla použít nějaká funkce z LPCopen.
>
> Mám pointer na uint32_t a chci, aby ukazoval na lichou adresu.
>
> Přesněji řečeno bude v různých dobách ukazovat na různé adresy zvyšované 
> po 3. Stejně tak může nastat uint64_t zvyšovaný po 5, nebo 7 (jedná se o 
> zobrazování fontů různých šířek, kde data mají různý počet B na řádek). 



Další informace o konferenci Hw-list