<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 06/20/2013 08:53 AM, Andrej Jancura
wrote:<br>
</div>
<blockquote
cite="mid:CALQx4r+63GwQRDBTVekFkm6y5hdTn1SkfKmNc8KSDjEtenLzNg@mail.gmail.com"
type="cite">2013/6/19 Jan Smrz <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:jan.smrz@email.cz"
target="_blank">jan.smrz@email.cz</a>></span><br>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Ano, pdata1 je konstanta, jen mám podezøení, ¾e ji asi ne v¾dy
pøiøadí správnou hodnotu. V kódu mám dvoje ètení hned za sebou<br>
mem_read((uint32_t)pdata1,sizeof(format_version),&format_version);<br>
mem_read((uint32_t)pdata1 + 2,sizeof(length),(uint8_t*)&length);<br>
<br>
První ètení je ¹patné (opravdu ète data z adresy 0), druhé je
ji¾ správné. Pokud poøadí ètení prohodím (první ètu length),
je opìt první ¹patné, druhé správné.<br>
<br>
</blockquote>
<div><br>
Ja by som skusil pretypovanie na uint32_t v tom mem read
vynechat. Skuste si pozriet zdrojaky kniznicnych funkcii
strcpy a podobne. Tam to maju robene ako to potrebujete. Ono
const unsigned char pdata1 a unsigned char pdata1 je ta ista
adresa, rozdiel je len v tom, ze to prve je iba na citanie.
Mam este take tusenie, ze pri tom const je nastaveny najvyssi
bit, aby vedela pomocna rutina ci citat z ram alebo flash, ale
to sa da tiez zistit z kodu.<br>
<br>
</div>
</div>
</blockquote>
<br>
Pokud by byla chyba v pretypovani, tak by ale nemelo fungovat ani
jedno cteni, ne jen to prvni? V obou pripadech pouzivam stejne
(uint32_t)pdata1. <br>
<br>
Zde je listing pro dva pripady. S PIC assemblerem jsem se jeste moc
neszil, tak z prvniho pripadu moc moudry nejsem.<br>
<br>
<br>
<tt> mem_read((uint32_t)poidata,
mem_read(0x4000LU,</tt><tt><br>
</tt><tt> sizeof(format_version),
sizeof(format_version),</tt><tt><br>
</tt><tt> &format_version);
&format_version);</tt><tt><br>
</tt><tt><br>
</tt><tt> movlw low(16384) movlw
low(04000h)<br>
movwf (??_pdt_init+0+0)&0ffh movwf
((c:?_mem_read)),c<br>
movlw high(16384) movlw
high(04000h)<br>
movwf (??_pdt_init+0+0+1)&0ffh movwf
((c:?_mem_read+1)),c<br>
movlw low highword(16384) movlw low
highword(04000h)<br>
movwf (??_pdt_init+0+0+2)&0ffh movwf
((c:?_mem_read+2)),c<br>
movlb 0 ; () banked movlw high
highword(04000h)<br>
movf (??_pdt_init+0+0)&0ffh,w movwf
((c:?_mem_read+3)),c<br>
movwf ((c:?_mem_read)),c movlb 0 ;
() banked<br>
movlb 0 ; () banked movwf
(??_pdt_init+0+0)&0ffh<br>
movf (??_pdt_init+0+1)&0ffh,w <br>
movwf 1+((c:?_mem_read)),c <br>
movf (??_pdt_init+0+2)&0ffh,w <br>
movwf 2+((c:?_mem_read)),c <br>
clrf 3+((c:?_mem_read)),c <br>
movlb 0 ; () banked <br>
movwf (??_pdt_init+3+0)&0ffh <br>
movlw low(01h) movlw
low(01h)<br>
movwf (0+((c:?_mem_read)+04h)),c movwf
(0+((c:?_mem_read)+04h)),c<br>
movlb 0 ; () banked movlb 0 ;
() banked<br>
movf (??_pdt_init+3+0)&0ffh,w movf
(??_pdt_init+0+0)&0ffh,w<br>
movlb 0 ; () banked movlb 0 ;
() banked<br>
movlw high(pdt_init@format_version) movlw
high(pdt_init@format_version)<br>
movwf (1+((c:?_mem_read)+05h)),c movwf
(1+((c:?_mem_read)+05h)),c<br>
movlb 0 ; () banked movlb 0 ;
() banked<br>
movlw low(pdt_init@format_version) movlw
low(pdt_init@format_version)<br>
movwf (0+((c:?_mem_read)+05h)),c movwf
(0+((c:?_mem_read)+05h)),c<br>
call _mem_read ;wreg free call
_mem_read ;wreg free <br>
</tt><tt><br>
</tt><tt><br>
</tt><br>
<blockquote
cite="mid:CALQx4r+63GwQRDBTVekFkm6y5hdTn1SkfKmNc8KSDjEtenLzNg@mail.gmail.com"
type="cite">
<div class="gmail_quote"><br>
<div>Aku verziu pouzivate LITE, STD alebo PRO? Pretoze podla
verzie tam je povolena inteligencia a optimalizacie.<br>
<br>
</div>
</div>
</blockquote>
Verzi Lite<br>
<br>
<br>
btw. Vite nekdo odpoved na muj druhy dotaz, t.j. proc je v v
defaultnim nastaveni linkeru oblast pro ulozeni promennych
definovana takto: -AMEDIUMCONST=0D00h-0FFFFh,010D00h-017FFFh? Je
nejaky duvod pro to, aby oblast nebyla v jednom kuse, t.j.
0D00h-017FFFh?
<br>
<br>
<br>
J.S.<br>
</body>
</html>