реклама на сайте
подробности

 
 
> WinAVR-20100110, Пишем отзывы сюда
_Pasha
сообщение Jan 16 2010, 00:18
Сообщение #1


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Собсно сабж.
Попробовал пока ничего плохого не могу сказать. За выходные разберемся
Слито вместе avr & avr32. Прикольно. 275 метров

AVR-gcc 4.3.3
AVR32-gcc 4.3.2
Make 3.81 - наконец-то ! Или он уже давно там... не помню, ну да ладно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
misyachniy
сообщение Feb 17 2010, 15:39
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Друг спросил как разместить данные во флеш поопределенному адресу.

Сделал как по ссылке.

http://8515.avrfreaks.net/index.php?name=P...ic&p=589365

WinAVR-20100110.

Судя по листингу программа обращается к данным как задано

Код
  
const uint8_t part_number __attribute__ ((section (".part_number")))='A';

i = pgm_read_byte(&part_number);    
     2ee:    e0 ef           ldi    r30, 0xF0; 240    
     2f0:    ff e3           ldi    r31, 0x3F; 63    
     2f2:    e4 91           lpm    r30, Z+


Но ни в HEX ни в bin файле нету данных.

Обычное объявление переменных в памяти программ работает.
Совместить два аттрибута у меня не получилось.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 17 2010, 17:50
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(misyachniy @ Feb 17 2010, 17:39) *
Но ни в HEX ни в bin файле нету данных.
попробйте обозвать секцию .text.partnumber или .progmem.partnumber
Я указываю секцию в скрипте линкера, --section-start не пользовался.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Feb 18 2010, 09:49
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Сергей Борщ @ Feb 17 2010, 19:50) *
попробйте обозвать секцию .text.partnumber или .progmem.partnumber
Я указываю секцию в скрипте линкера, --section-start не пользовался.


Переобъявил, секция попала сразу за таблицей векторов.
Как в скрипте линкера без --section-start настраивать я не умею.

Код
код
const uint8_t part_number __attribute__ ((section (".progmem.part_number")))='A';
const  unsigned long serial_number __attribute__ ((section (".progmem.serial_number"))) = 0x12345678;

маке
LDFLAGS += -Wl,--section-start=.progmem.part_number=$(PART_NUMBER_ADDRESS)
LDFLAGS += -Wl,--section-start=.progmem.serial_number=$(SERIAL_NUMBER_ADDRESS)

HEX
:100050000C9458 0041 78563412 456E7465722063D2

LST
00000054 <part_number>:
      54:    41                                                  A

  i = pgm_read_byte(&part_number);
     2f4:    e4 e5           ldi    r30, 0x54; 84
     2f6:    f0 e0           ldi    r31, 0x00; 0
     2f8:    e4 91           lpm    r30, Z+
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 18 2010, 11:32
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(misyachniy @ Feb 18 2010, 11:49) *
Переобъявил, секция попала сразу за таблицей векторов.
"Ну тогда не знаю laughing.gif "
Цитата(misyachniy @ Feb 18 2010, 11:49) *
Как в скрипте линкера без --section-start настраивать я не умею.
Идете в WinAVR/avr/lib/ldscripts, берете там скрипт для своего семейства, копируете в проект, правите, добавляете к ключам линкера LDFLAGS += -Wl,-T,<имя скрипта> и получаете полный контроль над адресным пространством. Вот пример для загрузчика m88 (регион и секция serial_no):
CODE
/* ATmega88 bootloader linker script */
OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")
OUTPUT_ARCH(avr:4)
MEMORY
{
application (rx) : ORIGIN = 0, LENGTH = 7K
bootloader (rx) : ORIGIN = 7K, LENGTH = 1K - 4
serial_no (rx) : ORIGIN = 8K-4, LENGTH = 4
ram (rw!x) : ORIGIN = 0x800100, LENGTH = 1K
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 512
}
SECTIONS
{
/* Internal text space or external memory. */
.app :
{
__app_start = . ;
/* reserve space */
. = 7K;
__app_end = . ;
} > application
__app_len = . - __app_start;
.text :
{
KEEP(*(.vectors))
/* For data that needs to reside in the lower 64k of progmem. */
*(.progmem.gcc*)
*(.progmem*)
. = ALIGN(2);
__trampolines_start = . ;
/* The jump trampolines for the 16-bit limited relocs will reside here. */
*(.trampolines)
*(.trampolines*)
__trampolines_end = . ;
/* For future tablejump instruction arrays for 3 byte pc devices.
We don't relax jump/call instructions within these sections. */
*(.jumptables)
*(.jumptables*)
/* For code that needs to reside in the lower 128k progmem. */
*(.lowtext)
*(.lowtext*)
__ctors_start = . ;
KEEP(SORT(*)(.ctors))
__ctors_end = . ;
__dtors_start = . ;
KEEP(SORT(*)(.dtors))
__dtors_end = . ;
/* From this point on, we don't bother about wether the insns are
below or above the 16 bits boundary. */
KEEP (*(.init0)) /* Start here after reset. */
KEEP (*(.init1))
KEEP (*(.init2)) /* Clear __zero_reg__, set up stack pointer. */
KEEP (*(.init3))
KEEP (*(.init4)) /* Initialize data and BSS. */
KEEP (*(.init5))
KEEP (*(.init6)) /* C++ constructors. */
KEEP (*(.init7))
KEEP (*(.init8))
KEEP (*(.init9)) /* Call main(). */
*(.text)
. = ALIGN(2);
*(.text.*)
. = ALIGN(2);
KEEP (*(.fini9)) /* _exit() starts here. */
KEEP (*(.fini8))
KEEP (*(.fini7))
KEEP (*(.fini6)) /* C++ destructors. */
KEEP (*(.fini5))
KEEP (*(.fini4))
KEEP (*(.fini3))
KEEP (*(.fini2))
KEEP (*(.fini1))
KEEP (*(.fini0)) /* Infinite loop after program termination. */
_etext = . ;
} > bootloader

.data :
{
PROVIDE (__data_start = .) ;
*(.gnu.linkonce.d*)
*(.rodata)
*(.rodata*)
*(.data)
*(.data*)
. = ALIGN(2);
_edata = . ;
PROVIDE (__data_end = .) ;
} > ram AT > bootloader

.bss :
{
PROVIDE (__bss_start = .) ;
*(.bss)
*(.bss*)
*(COMMON)
PROVIDE (__bss_end = .) ;
} > ram
__data_load_start = LOADADDR(.data);
__data_load_end = __data_load_start + SIZEOF(.data);

.serial_no :
{
KEEP(*(.serial_no))
} > serial_no

/* Global data not cleared after reset. */
.noinit :
{
PROVIDE (__noinit_start = .) ;
*(.noinit*)
PROVIDE (__noinit_end = .) ;
_end = . ;
PROVIDE (__heap_start = .) ;
} > ram

.eeprom :
{
*(.eeprom*)
__eeprom_end = . ;
} > eeprom

/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }

/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
}
И еще - мне показалось удобнее хранить не константу серийного номера, а функцию, возвращающую серийный номер. А уже в код самой функции на этапе программирования подставлять коды LDI с серийным номером (avreal умеет). Это позволяет разместить такой серийник в защищенном от чтения по LPM загрузчике и тратить на чтение один ( R )CALL вместо сохранения Z, его загрузки, LPM, восстановления Z:
Код
__attribute__((section(".serial_no"), noinline))
uint8_t serial_no()
{
    return 0;
}


177                       .section    .serial_no,"ax",@progbits
178                   .global    serial_no
180                   serial_no:
181                   .LFB15:
182                   .LSM26:
183                   /* prologue: function */
184                   /* frame size = 0 */
185                   .LSM27:
186 0000 80E0              ldi r24,lo8(0)
187                   /* epilogue start */
188 0002 0895              ret


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 19 2010, 14:25
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Забавный прикол:
Код
uint16_t x;
....
if ((x&1)==0) {...} // случай 1
if (!(x&1))      {...} // случай 2
Получаем листинг:
Код
// случай 1:
   1fd3c:    20 fd           sbrc    r18, 0
   1fd3e:    03 c0           rjmp    .+6      ; 0x1fd46 <main+0x4e4>

// случай 2
   1fd40:    c9 01           movw    r24, r18
   1fd42:    81 70           andi    r24, 0x01; 1
   1fd44:    90 70           andi    r25, 0x00; 0
   1fd46:    89 2b           or    r24, r25
   1fd48:    19 f4           brne    .+6      ; 0x1fd50 <main+0x4ee>


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Pasha   WinAVR-20100110   Jan 16 2010, 00:18
- - kurtis   Цитата(_Pasha @ Jan 16 2010, 02:18) Слито...   Jan 16 2010, 10:30
- - Petka   Цитата(_Pasha @ Jan 16 2010, 03:18) ... A...   Jan 16 2010, 10:31
- - SysRq   ЦитатаAVR32 GNU toolchain Splint 3.1.2 Splint is...   Jan 16 2010, 11:26
|- - zltigo   Цитата(SysRq @ Jan 16 2010, 14:26) 200812...   Jan 16 2010, 11:28
|- - SysRq   Цитата(zltigo @ Jan 16 2010, 14:28) А опт...   Jan 16 2010, 11:38
- - ARV   я тоже скачал официальный релиз и, как обычно (за ...   Jan 16 2010, 14:32
- - SysRq   Цитата(ARV @ Jan 16 2010, 17:32) ...разме...   Jan 16 2010, 15:00
- - demiurg_spb   Цитата(_Pasha @ Jan 16 2010, 03:18) Собсн...   Jan 16 2010, 19:12
- - ARV   а как вы поступаете: ставите сразу несколько копий...   Jan 16 2010, 20:30
|- - Сергей Борщ   Цитата(ARV @ Jan 16 2010, 22:30) а как вы...   Jan 16 2010, 22:36
||- - Сергей Борщ   Цитата(Сергей Борщ @ Jan 17 2010, 00:36) ...   Jan 21 2010, 14:34
|- - ReAl   Цитата(ARV @ Jan 16 2010, 22:30) а как вы...   Jan 17 2010, 08:25
- - _Pasha   Цитата(ARV @ Jan 17 2010, 00:30) а как вы...   Jan 17 2010, 05:55
|- - Сергей Борщ   Цитата(_Pasha @ Jan 17 2010, 07:55) Непри...   Jan 17 2010, 09:19
|- - Petka   Цитата(Сергей Борщ @ Jan 17 2010, 12:19) ...   Jan 17 2010, 10:00
||- - ReAl   Цитата(Petka @ Jan 17 2010, 12:00) Давно ...   Jan 17 2010, 15:35
||- - demiurg_spb   Цитата(Petka @ Jan 17 2010, 13:00) Давно ...   Jan 17 2010, 21:28
||- - ReAl   Цитата(demiurg_spb @ Jan 17 2010, 23:28) ...   Jan 17 2010, 22:38
|- - demiurg_spb   Цитата(Сергей Борщ @ Jan 17 2010, 01:36) ...   Jan 18 2010, 10:13
|- - Сергей Борщ   По msys - взять с http://sourceforge.net/projects/...   Jan 18 2010, 11:54
|- - demiurg_spb   Цитата(Сергей Борщ @ Jan 18 2010, 14:54) ...   Jan 18 2010, 13:07
|- - Сергей Борщ   Проинсталлил "честно". Оно копирует кучу...   Jan 18 2010, 14:54
- - Genadi Zawidowski   Было... ЦитатаAVR Memory Usage ---------------- De...   Jan 18 2010, 01:13
- - _Diman_   Я так приспособился разные версии проверять. Запу...   Jan 19 2010, 10:37
|- - _Pasha   Цитата(_Diman_ @ Jan 19 2010, 13:37) http...   Jan 19 2010, 11:05
- - Зайцев Иван   А кто нибуть использовал уже avr32-gcc? Если да то...   Jan 19 2010, 11:17
|- - klen   Цитата(Зайцев Иван @ Jan 19 2010, 14:17) ...   Jan 19 2010, 20:44
|- - Зайцев Иван   Цитата(klen @ Jan 20 2010, 01:44) а что т...   Jan 20 2010, 03:14
- - Cyber_RAT   http://sourceforge.net/projects/winavr/files/ опят...   Jan 20 2010, 21:29
|- - SysRq   Цитата(Cyber_RAT @ Jan 21 2010, 00:29) оп...   Jan 20 2010, 22:23
|- - _Pasha   Цитата(SysRq @ Jan 21 2010, 02:23) убраны...   Jan 21 2010, 03:59
- - Vova75   Ошибку  в прологе/эпилоге при использовании ISR(xx...   Jan 27 2010, 12:16
- - ReAl   Однако... То-то я чуйкой какой-то ("шестое ч...   Feb 4 2010, 21:24
|- - _Pasha   Цитата(ReAl @ Feb 5 2010, 01:24) Однако.....   Feb 8 2010, 12:59
|- - _Pasha   Цитата(_Pasha @ Feb 8 2010, 16:59) Однако...   Feb 12 2010, 17:49
|- - ReAl   Цитата(_Pasha @ Feb 12 2010, 19:49) Еще п...   Mar 20 2010, 13:24
- - Genadi Zawidowski   ЦитатаCode: #include <avr/io.h> volatile ui...   Feb 8 2010, 06:04
|- - ReAl   Цитата(Genadi Zawidowski @ Feb 8 2010, 08...   Feb 8 2010, 10:48
- - _Pasha   Ау, я что, в палате №6? Не спим! Нашел серьезн...   Feb 17 2010, 06:59
|- - ReAl   Цитата(_Pasha @ Feb 17 2010, 08:59) Попыт...   Feb 17 2010, 19:53
|- - _Pasha   Цитата(ReAl @ Feb 17 2010, 22:53) Мне не ...   Feb 20 2010, 08:06
|- - _Pasha   Цитата(Сергей Борщ @ Feb 18 2010, 15:32) ...   Mar 16 2010, 18:05
|- - Сергей Борщ   Цитата(_Pasha @ Mar 16 2010, 20:05) т.к. ...   Mar 16 2010, 23:25
|- - _Pasha   Цитата(Сергей Борщ @ Mar 17 2010, 03:25) ...   Mar 17 2010, 05:39
- - SysRq   Цитата(_Pasha @ Feb 17 2010, 09:59) Нашел...   Feb 17 2010, 19:45
- - ZiB   аналогично, не удалось воссоздать ошибку. проверил...   Feb 18 2010, 06:48
- - ARV   а я вот не увидел в этой версии компилятора опции ...   Mar 25 2010, 08:45
|- - Сергей Борщ   Цитата(ARV @ Mar 25 2010, 10:45) или я ку...   Mar 25 2010, 08:56
- - ARV   во блин... странно... вчера вроде не получалось об...   Mar 25 2010, 09:17
- - Клим   Возможно уже такой вопрос был, сходу не нашел. WIN...   Aug 19 2010, 13:22
- - SysRq   Цитата(Клим @ Aug 19 2010, 17:22) Каким о...   Aug 19 2010, 13:46
|- - Клим   Цитата(SysRq @ Aug 19 2010, 16:46) Исполь...   Aug 19 2010, 14:40
|- - _Pasha   Цитата(Клим @ Aug 19 2010, 18:40) call ma...   Aug 20 2010, 15:53
- - _Pasha   Кто-нибудь может объяснить феномен. -Os CODE #inc...   Feb 8 2011, 07:48
|- - SysRq   Цитата(_Pasha @ Feb 8 2011, 10:48) Что же...   Feb 8 2011, 09:37
|- - _Pasha   Цитата(SysRq @ Feb 8 2011, 12:37) Глобаль...   Feb 8 2011, 10:55
||- - AHTOXA   Цитата(_Pasha @ Feb 8 2011, 15:55) Кого? ...   Feb 8 2011, 11:01
|- - demiurg_spb   Цитата(SysRq @ Feb 8 2011, 12:37) Глобаль...   Feb 8 2011, 11:13
|- - _Pasha   Цитата(demiurg_spb @ Feb 8 2011, 14:13) А...   Feb 8 2011, 11:19
|- - demiurg_spb   Да ладно! Он честно ругнулся - вы игнорировали...   Feb 8 2011, 11:41
||- - _Pasha   Цитата(demiurg_spb @ Feb 8 2011, 14:32) т...   Feb 8 2011, 11:41
||- - demiurg_spb   что сказать, переходите на версию посвежее ... пов...   Feb 8 2011, 11:48
||- - _Pasha   Цитата(demiurg_spb @ Feb 8 2011, 14:48) н...   Feb 8 2011, 11:50
||- - demiurg_spb   Цитата(_Pasha @ Feb 8 2011, 14:50) Это кл...   Feb 8 2011, 11:57
||- - demiurg_spb   Цитата(demiurg_spb @ Feb 8 2011, 14:57) ....   Feb 17 2011, 18:56
|- - AHTOXA   Цитата(_Pasha @ Feb 8 2011, 16:19) Вот...   Feb 8 2011, 12:05
- - ARV   как заставить компилятор помещать в elf-файл полны...   Mar 23 2011, 18:30
- - SysRq   Спасите мудрым советом, ибо не знаю куда копать ...   Mar 31 2011, 09:31
|- - Сергей Борщ   QUOTE (SysRq @ Mar 31 2011, 12:31) WinAVR...   Apr 1 2011, 09:03
- - SysRq   Цитата(Сергей Борщ @ Apr 1 2011, 13:03) ....   Apr 1 2011, 12:02
- - halfdoom   Попросил заказчик использовать gcc-4.5.1 (тот, что...   Aug 5 2012, 07:44
|- - _Pasha   Цитата(halfdoom @ Aug 5 2012, 10:44) Попр...   Aug 5 2012, 12:56
|- - Genadi Zawidowski   Цитата(halfdoom @ Aug 5 2012, 11:44) Попр...   Aug 5 2012, 13:57
- - halfdoom   В общем, нашел основной источник роста: излишне ...   Aug 5 2012, 15:11
|- - Genadi Zawidowski   Цитата(halfdoom @ Aug 5 2012, 19:11) В об...   Aug 7 2012, 23:03
|- - halfdoom   Цитата(Genadi Zawidowski @ Aug 8 2012, 02...   Aug 8 2012, 14:30
|- - demiurg_spb   Цитата(halfdoom @ Aug 8 2012, 18:30) Може...   Aug 9 2012, 05:10
|- - Genadi Zawidowski   Цитата(demiurg_spb @ Aug 9 2012, 09:10) ....   Aug 9 2012, 07:53
||- - demiurg_spb   думаю что где-то так Код#define flash const __flas...   Aug 9 2012, 08:28
||- - Genadi Zawidowski   Цитата(demiurg_spb @ Aug 9 2012, 12:28) C...   Aug 9 2012, 08:39
||- - demiurg_spb   Цитата(Genadi Zawidowski @ Aug 9 2012, 12...   Aug 9 2012, 08:45
|- - halfdoom   Цитата(demiurg_spb @ Aug 9 2012, 08:10) Н...   Aug 10 2012, 04:45
- - _Pasha   Цитата-mfaster-structs With -mfaster-structs, the ...   Aug 5 2012, 15:46
|- - halfdoom   Цитата(_Pasha @ Aug 5 2012, 18:46) Спецом...   Aug 5 2012, 16:26
|- - demiurg_spb   Цитата(halfdoom @ Aug 5 2012, 20:26) Уже ...   Aug 8 2012, 05:50
|- - ReAl   Цитата(demiurg_spb @ Aug 8 2012, 08:50) О...   Aug 8 2012, 07:35
|- - demiurg_spb   Ни чем не могу помочь... Разве только под win: htt...   Aug 8 2012, 07:50
- - _Pasha   Собсна из 8-битов одни АВРки SDCC чистой культуро...   Aug 5 2012, 16:32
- - ReAl   (сверните кто-нибудь строку в 78 сообщении, а то о...   Aug 9 2012, 06:23
- - Genadi Zawidowski   Использую вот отсюда http://electronix.ru/forum/in...   Aug 9 2012, 09:04
|- - demiurg_spb   Цитата(Genadi Zawidowski @ Aug 9 2012, 13...   Aug 9 2012, 09:18
|- - Genadi Zawidowski   Это что-то! На 32-х килобайтном проекте получи...   Aug 9 2012, 19:25
- - Genadi Zawidowski   Нашёл ещё одну сборку - уже с инсталлятором - htt...   Aug 10 2012, 07:20
- - demiurg_spb   Я её тоже находил, но и также находил инфу что с н...   Aug 10 2012, 07:24
2 страниц V   1 2 >


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016