<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>32163</bug_id>
          
          <creation_ts>2016-06-01 12:31:29 +0300</creation_ts>
          <short_desc>Ошибки в eeprom функциях</short_desc>
          <delta_ts>2026-09-16 20:50:02 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>avr-libc</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32164</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry A. Kharitonov">kharpost</reporter>
          <assigned_to name="qa-team@altlinux.org">qa-team</assigned_to>
          <cc>amakeenk</cc>
    
    <cc>cas</cc>
    
    <cc>kharpost</cc>
    
    <cc>viy</cc>
    
    <cc>week</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>157158</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry A. Kharitonov">kharpost</who>
    <bug_when>2016-06-01 12:31:29 +0300</bug_when>
    <thetext>Для MCU ATMEGA8535 не правильно откомпилированы функции для работы с eeprom
Библиотечная функция не работающая функция:
0000073e &lt;eeprom_read_byte&gt;:
73e:   f9 99           sbic    0x1f, 1 ; 31
740:   fe cf           rjmp    .-4         ; 0x73e &lt;eeprom_read_byte&gt;
742:   92 bd           out 0x22, r25   ; 34
744:   81 bd           out 0x21, r24   ; 33
746:   f8 9a           sbi 0x1f, 0 ; 31
748:   99 27           eor r25, r25
74a:   80 b5           in  r24, 0x20   ; 32
74c:   08 95           ret

Самописная работающая функция:
    while(EECR&amp;(1&lt;&lt;EEWE));
    EEAR=(uint16_t)eeaddr;
    EECR|=(1&lt;&lt;EERE);
    s=EEDR;

       while(EECR&amp;(1&lt;&lt;EEWE));
50e:   e1 99           sbic    0x1c, 1 ; 28
510:   fe cf           rjmp    .-4         ; 0x50e &lt;eedata_read_block+0x36&gt;
       EEAR=(uint16_t)addr;
512:   df ba           out 0x1f, r13   ; 31
514:   ce ba           out 0x1e, r12   ; 30
       EECR|=(1&lt;&lt;EERE);
516:   e0 9a           sbi 0x1c, 0 ; 28
       s=EEDR;
518:   8d b3           in  r24, 0x1d   ; 29

Видно, что библиотечная функция обращается к неправильным портам</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157160</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry A. Kharitonov">kharpost</who>
    <bug_when>2016-06-01 12:44:57 +0300</bug_when>
    <thetext>avr-libc-2.0.0-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296932</commentid>
    <comment_count>2</comment_count>
    <who name="Vera Blagoveschenskaya">vercha</who>
    <bug_when>2026-09-08 14:44:47 +0300</bug_when>
    <thetext>Результат проверки актуальности

Состояние:
Платформа p8 не поддерживается с 15.12.2019.

Рекомендация:
закрыть как WONTFIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296966</commentid>
    <comment_count>3</comment_count>
    <who name="Vera Blagoveschenskaya">vercha</who>
    <bug_when>2026-09-08 15:13:02 +0300</bug_when>
    <thetext>Результат проверки актуальности в Sisyphus

Состояние:
В текущем avr-libc заголовки ATMEGA8535 задают верные порты EEPROM. Явного исправления в changelog нет; нужен objdump eeprom_read_byte для atmega8535.

Рекомендация:
ретест на Sisyphus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297500</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-09-09 11:41:40 +0300</bug_when>
    <thetext>*** Bug 32164 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299211</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-09-16 20:50:02 +0300</bug_when>
    <thetext>Проверил на Sisyphus x86_64 (обновлён 2026-09-16): avr-gcc-14.2.0-alt1_2, avr-libc-1:2.0.0-alt6_20, avr-binutils-2.35-alt1_3.

$ avr-gcc -mmcu=atmega8535 -Os -o ee.elf ee.c   # ee.c: eeprom_read_byte()/eeprom_write_byte() для EEMEM-переменной
$ avr-objdump -d ee.elf | sed -n &apos;/&lt;eeprom_read_byte&gt;:/,/ret/p&apos;
0000005c &lt;eeprom_read_byte&gt;:
  5c:  e1 99   sbic 0x1c, 1      ; EECR.EEWE
  5e:  fe cf   rjmp .-4
  60:  9f bb   out  0x1f, r25    ; EEARH
  62:  8e bb   out  0x1e, r24    ; EEARL
  64:  e0 9a   sbi  0x1c, 0      ; EECR.EERE
  66:  99 27   eor  r25, r25
  68:  8d b3   in   r24, 0x1d    ; EEDR
  6a:  08 95   ret

Порты 0x1C/0x1D/0x1E/0x1F — верные для ATmega8535 (iom8535.h), код совпадает с «самописной» функцией из описания. eeprom_write_byte/eeprom_update_byte — аналогично (sbi 0x1c,2 / sbi 0x1c,1). Функции берутся из /usr/avr/lib/avr4/libatmega8535.a через device-specs/specs-atmega8535.

Код из отчёта (sbic 0x1f / out 0x22 / out 0x21 / in 0x20) — это раскладка EEPROM-регистров ATmega48/88/168; он попадал в прошивку потому, что avr-libc-2.0.0-alt1 собирался с avr-gcc 4.9 без device-библиотек (в пакете нет libatmega*.a, только общий avr4/libc.a, из которого линкер брал первый попавшийся eeprom_read_byte). Исправилось с переходом на тулчейн с device-библиотеками: avr-gcc-7.2.0-alt1_1 + avr-libc-2.0.0-alt5_6 (задание https://packages.altlinux.org/tasks/220475/, 2019-02-04). Закрываю FIXED.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>