<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">&lt;<a
          moz-do-not-send="true" href="mailto:jan.smrz@email.cz"
          target="_blank">jan.smrz@email.cz</a>&gt;</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),&amp;format_version);<br>
          mem_read((uint32_t)pdata1 + 2,sizeof(length),(uint8_t*)&amp;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>        &amp;format_version);                           
      &amp;format_version);</tt><tt><br>
    </tt><tt><br>
    </tt><tt> movlw    low(16384)                               movlw   
      low(04000h)<br>
       movwf    (??_pdt_init+0+0)&amp;0ffh                   movwf   
      ((c:?_mem_read)),c<br>
       movlw    high(16384)                              movlw   
      high(04000h)<br>
       movwf    (??_pdt_init+0+0+1)&amp;0ffh                 movwf   
      ((c:?_mem_read+1)),c<br>
       movlw    low highword(16384)                      movlw    low
      highword(04000h)<br>
       movwf    (??_pdt_init+0+0+2)&amp;0ffh                 movwf   
      ((c:?_mem_read+2)),c<br>
       movlb    0    ; () banked                         movlw    high
      highword(04000h)<br>
       movf    (??_pdt_init+0+0)&amp;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)&amp;0ffh<br>
       movf    (??_pdt_init+0+1)&amp;0ffh,w                 <br>
       movwf    1+((c:?_mem_read)),c                     <br>
       movf    (??_pdt_init+0+2)&amp;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)&amp;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)&amp;0ffh,w                  movf   
      (??_pdt_init+0+0)&amp;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>