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

 
 
> скрипт Linkera
sergey sva
сообщение Jan 24 2009, 17:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Помогите разобраться с скриптами для linkera. Yagarto eclips at91sam7s256
После компиляции, создаются два объектных файла crt.o main.o сделал самый простейший скрипт,который должен
разместить секции text в ram и data в flash. После того как проходит компиляция компоновка, копирование получаю файл hex,
при попытки его загрузить с помощью h jtag выходит ошибка что память ухотит за пределы, пробовал адреса ставить 0ч0 и 0ч100000 такаже
проблема. Подозреваю что ошибка в скрипте.
CODE

OUTPUT_FORMAT("elf32-littlearm") /* формат памяти. прямой порядок байт (Little-endian). */
OUTPUT_ARCH(arm) /* архитектура АРМ */

_vec_reset = 0x0;

_stack_end = 0x20FA00; /* конец стека (верх стека) */


ENTRY(_vec_reset) /* вектор сброса */

/* Память микроконтроллера AT91SAM7S256 */
MEMORY
{
flash (rx) : ORIGIN = 0x100000, LENGTH = 256K /* FLASH EPROM */
ram (rw) : ORIGIN = 0x200000, LENGTH = 64K /* static RAM area */
}




SECTIONS
{

.text : { *crt.o (.text) }>flash
. = ALIGN(4);



.data : { *crt.o (.data) }> ram
. = ALIGN(4);



.bss : { *(.bss) *(COMMON) }>ram
. = ALIGN(4);


}


Go to the top of the page
 
+Quote Post
4 страниц V  < 1 2 3 4 >  
Start new topic
Ответов (30 - 44)
Vitaliy_ARM
сообщение Feb 4 2009, 12:54
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(amw @ Feb 4 2009, 15:13) *
Хм. Я тоже, но продвинулся чуть дальше
Постил я сюда:
http://electronix.ru/forum/index.php?showt...st&p=538405
http://electronix.ru/forum/index.php?showt...st&p=538988
Может вдвоем быстрее найдем правильный путь.


Посмотрел.
Приведу на всякий случай окно инициализации своего gdb:
Продолжаем разбираться. rolleyes.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 4 2009, 13:26
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(Vitaliy_ARM @ Feb 4 2009, 15:54) *
Посмотрел.
Приведу на всякий случай окно инициализации своего gdb:
Продолжаем разбираться. rolleyes.gif

попробуйте добавить

break main
continue
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Feb 4 2009, 13:36
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(sergey sva @ Feb 4 2009, 16:26) *
попробуйте добавить

break main
continue


Пробовал, потом убрал. Роли не играет. А как аппаратные брейкпоинты работают.
Они во флешь прошиваются или в озу или в спец регистры?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
msalov
сообщение Feb 4 2009, 14:32
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(sergey sva @ Feb 3 2009, 22:38) *
Еще есть одна непонятная ситуация, может что подскажите,из за чего может быть такое:
если запускаю программу из отладчика все работает, а если отлючаю wiggler, сброс жму,
программа не стартует, хотя в флэш программа записана, пробовал считать hjtag.

Возможно это связано с тем, что вы используете программные точки останова. Попробуйте аппаратные. Для этого замените
Код
monitor arm7_9 sw_bkpts enable
на
Код
monitor arm7_9 force_hw_bkpts enable
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 4 2009, 15:04
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(gotty @ Feb 4 2009, 17:32) *
Возможно это связано с тем, что вы используете программные точки останова. Попробуйте аппаратные. Для этого замените
Код
monitor arm7_9 sw_bkpts enable
на
Код
monitor arm7_9 force_hw_bkpts enable

Пробовал и аппаратные и программные, но все равно та же ситуация,
виглером запускается и останавливается, после отключения включения питания программа не стартует.
вот окне инициализации :
CODE

target remote localhost:2001
monitor reset
monitor sleep 500
monitor poll
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
#monitor arm7_9 sw_bkpts enable

# WDT_MR, disable watchdog
monitor mww 0xFFFFFD44 0x00008000

# RSTC_MR, enable user reset
monitor mww 0xfffffd08 0xa5000001

# CKGR_MOR
monitor mww 0xFFFFFC20 0x00000601
monitor sleep 10

# CKGR_PLLR
monitor mww 0xFFFFFC2C 0x00481c0e
monitor sleep 10

# PMC_MCKR
monitor mww 0xFFFFFC30 0x00000007
monitor sleep 10

# PMC_IER
monitor mww 0xFFFFFF60 0x00480100
monitor sleep 100

# needed for gdb 6.8 and higher
set mem inaccessible-by-default off

load
break main
continue


Вот файл мап, может здесь будет видно что нибудь подозрительное:

CODE


Memory Configuration

Name Origin Length Attributes
rom 0x00100000 0x00040000
ram 0x00200000 0x00010000
*default* 0x00000000 0xffffffff

Linker script and memory map

LOAD ./src/crt.o
LOAD ./src/main.o
START GROUP
LOAD c:/program files/yagarto/bin/../lib/gcc/arm-elf/4.3.2\libgcc.a
LOAD c:/program files/yagarto/bin/../lib/gcc/arm-elf/4.3.2/../../../../arm-elf/lib\libc.a
END GROUP
0x00000100 FIQ_STACK_SIZE = 0x100
0x00000100 IRQ_STACK_SIZE = 0x100
0x00000100 ABT_STACK_SIZE = 0x100
0x00000100 UND_STACK_SIZE = 0x100
0x00000100 SVC_STACK_SIZE = 0x100
0x00000400 USE_STACK_SIZE = 0x400

.text 0x00100000 0x214
*(.vectors)
.vectors 0x00100000 0x40 ./src/crt.o
0x00100040 . = ALIGN (0x4)
*(.init)
.init 0x00100040 0xf8 ./src/crt.o
0x001000f4 FIQHandler
0x001000e8 PAbortHandler
0x00100040 ResetHandler
0x001000ec DAbortHandler
0x001000f0 IRQHandler
0x001000e0 UndefHandler
0x00100138 . = ALIGN (0x4)
*(.text)
.text 0x00100138 0x0 ./src/crt.o
.text 0x00100138 0xdc ./src/main.o
0x00100138 main
0x001001b4 inicializaciya
0x00100214 . = ALIGN (0x4)
*(.rodata)
0x00100214 . = ALIGN (0x4)
*(.rodata*)
0x00100214 . = ALIGN (0x4)
*(.glue_7t)
.glue_7t 0x00100214 0x0 ./src/crt.o
.glue_7t 0x00100214 0x0 ./src/main.o
0x00100214 . = ALIGN (0x4)
*(.glue_7)
.glue_7 0x00100214 0x0 ./src/crt.o
.glue_7 0x00100214 0x0 ./src/main.o
0x00100214 . = ALIGN (0x4)
0x00100214 etext = .

.vfp11_veneer 0x00000000 0x0
.vfp11_veneer 0x00000000 0x0 ./src/crt.o
.vfp11_veneer 0x00000000 0x0 ./src/main.o

.data 0x00200000 0x4
0x00200000 PROVIDE (__data_start, .)
*(.data)
.data 0x00200000 0x0 ./src/crt.o
.data 0x00200000 0x4 ./src/main.o
0x00200000 pPIO
0x00200004 . = ALIGN (0x4)
0x00200004 edata = .
0x00200004 _edata = .
0x00200004 PROVIDE (__data_end, .)

.bss 0x00200004 0x9fc
0x00200004 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00200004 0x0 ./src/crt.o
.bss 0x00200004 0x0 ./src/main.o
*(COMMON)
0x00200004 . = ALIGN (0x4)
0x00200004 PROVIDE (__bss_end, .)
0x00200100 . = ALIGN (0x100)
*fill* 0x00200004 0xfc 00
0x00200100 PROVIDE (__stack_start, .)
0x00200100 PROVIDE (__stack_fiq_start, .)
0x00200200 . = (. + FIQ_STACK_SIZE)
*fill* 0x00200100 0x100 00
0x00200200 . = ALIGN (0x4)
0x00200200 PROVIDE (__stack_fiq_end, .)
0x00200200 PROVIDE (__stack_irq_start, .)
0x00200300 . = (. + IRQ_STACK_SIZE)
*fill* 0x00200200 0x100 00
0x00200300 . = ALIGN (0x4)
0x00200300 PROVIDE (__stack_irq_end, .)
0x00200300 PROVIDE (__stack_abt_start, .)
0x00200400 . = (. + ABT_STACK_SIZE)
*fill* 0x00200300 0x100 00
0x00200400 . = ALIGN (0x4)
0x00200400 PROVIDE (__stack_abt_end, .)
0x00200400 PROVIDE (__stack_und_start, .)
0x00200500 . = (. + UND_STACK_SIZE)
*fill* 0x00200400 0x100 00
0x00200500 . = ALIGN (0x4)
0x00200500 PROVIDE (__stack_und_end, .)
0x00200500 PROVIDE (__stack_svc_start, .)
0x00200600 . = (. + SVC_STACK_SIZE)
*fill* 0x00200500 0x100 00
0x00200600 . = ALIGN (0x4)
0x00200600 PROVIDE (__stack_svc_end, .)
0x00200600 PROVIDE (__stack_use_start, .)
0x00200a00 . = (. + USE_STACK_SIZE)
*fill* 0x00200600 0x400 00
0x00200a00 . = ALIGN (0x4)
0x00200a00 PROVIDE (__stack_use_end, .)
0x00200a00 PROVIDE (__stack_end, .)
0x00200a00 PROVIDE (__heap_start, .)
OUTPUT(at91sam7s256_v1_rom.elf elf32-littlearm)

.ARM.attributes
0x00000000 0x10
.ARM.attributes
0x00000000 0x10 ./src/crt.o
.ARM.attributes
0x00000010 0x10 ./src/main.o

.debug_line 0x00000000 0xea
.debug_line 0x00000000 0x7e ./src/crt.o
.debug_line 0x0000007e 0x6c ./src/main.o

.debug_info 0x00000000 0x508
.debug_info 0x00000000 0x67 ./src/crt.o
.debug_info 0x00000067 0x4a1 ./src/main.o

.debug_abbrev 0x00000000 0xed
.debug_abbrev 0x00000000 0x12 ./src/crt.o
.debug_abbrev 0x00000012 0xdb ./src/main.o

.debug_aranges 0x00000000 0x48
.debug_aranges
0x00000000 0x28 ./src/crt.o
.debug_aranges
0x00000028 0x20 ./src/main.o

.debug_ranges 0x00000000 0x20
.debug_ranges 0x00000000 0x20 ./src/crt.o

.debug_frame 0x00000000 0x38
.debug_frame 0x00000000 0x38 ./src/main.o

.debug_loc 0x00000000 0x2b
.debug_loc 0x00000000 0x2b ./src/main.o

.debug_pubnames
0x00000000 0x37
.debug_pubnames
0x00000000 0x37 ./src/main.o

.debug_str 0x00000000 0x281
.debug_str 0x00000000 0x281 ./src/main.o
0x29d (size before relaxing)

.comment 0x00000000 0x12
.comment 0x00000000 0x12 ./src/main.o

Cross Reference Table

Symbol File
DAbortHandler ./src/crt.o
FIQHandler ./src/crt.o
IRQHandler ./src/crt.o
PAbortHandler ./src/crt.o
ResetHandler ./src/crt.o
UndefHandler ./src/crt.o
__bss_end ./src/crt.o
__bss_start ./src/crt.o
__stack_abt_end ./src/crt.o
__stack_fiq_end ./src/crt.o
__stack_irq_end ./src/crt.o
__stack_svc_end ./src/crt.o
__stack_und_end ./src/crt.o
__stack_use_end ./src/crt.o
inicializaciya ./src/main.o
main ./src/main.o
./src/crt.o
pPIO ./src/main.o
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 4 2009, 16:29
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



компиляция линкование и ассемблирование проходит без ошибок и предупреждений,
программа записывается, прекрасно работает с отладчика и по шагам и в без конечном цикле.
Но как отсоединяю вигглер, программа еще работает можно сброс нажать пере запустится,
Если отключаю питание и заново включаю ужу не запускается. Сначала думал что программа
записывается только в озу, попробовал все стер Hjtag считал, посмотрел чисто,
запустил отладчик,программа записалась, запустил по шагам все работает,
опять запустил hjtag считал ,флэш уже не чистая с программой, где еще копать. ?
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 4 2009, 19:11
Сообщение #37


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Vitaliy_ARM @ Feb 4 2009, 14:54) *
Посмотрел.
Приведу на всякий случай окно инициализации своего gdb:
Продолжаем разбираться. rolleyes.gif

Добавление команды
Код
monitor arm7_9 force_hw_bkpts enable

приводит к ошибке
Код
invalid command name "arm7_9_force_hw_bkpts"


Самое странное то, что из командной строки gdb запись/чтение регистров и ОЗУ работает.
Код
(gdb) monitor mww 0xe01fc040 2

(gdb) monitor mdw 0xe01fc040
0xe01fc040: 00000002

(gdb) monitor mww 0x40000000 0x1234

(gdb) monitor mdw 0x40000000
0x40000000: 00001234

А вот при инициализации, т.е. выолняемые из скрипта - нет. Аборты.
Код
invalid command name "arm7_9_force_hw_bkpts"
called at file "command.c", line 456
called at file "embedded:startup.tcl", line 89
called at file "embedded:startup.tcl", line 93
memory write caused data abort (address: 0xe01fc040, size: 0x4, count: 0x1)
Runtime error, file "command.c", line 456:

0xe01fc040: 00000001

Здесь аборт при записи в MEMMAP, чтение MEMMAP следующей строкой в скрипте проходит без ошибок.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Feb 5 2009, 08:51
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(amw @ Feb 4 2009, 22:11) *
0xe01fc040: 00000001[/code]
Здесь аборт при записи в MEMMAP, чтение MEMMAP следующей строкой в скрипте проходит без ошибок.


По началу тоже было что-то подобное, когда пытался запустить отладку примера lpc2378_uart_irq
с сайта WinARM. Потом заменил .cfg файл файлом для lpc2294 из директории OpenOCD, добавил пару строчек, как писал выше
и отладка заработала, только остался геммор с точками останова. Видимо их gdb не зашивает в процессор. Как нестранно, но
с атмеловскими процессорами проблем на порядок меньше.

Имеется в распоряжении J-Link и GDB-сервер для него. Так с ним точки останова ставятся!
Хрень однако smile3009.gif
Начинаю думать, что это уже не работа, а мучение.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
alx2
сообщение Feb 5 2009, 10:48
Сообщение #39


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(sergey sva @ Feb 4 2009, 17:13) *
но если отсоединить wiggler, сбросить, или питание отключить включить то программа не запускается.
Вот startup может в нем где что не так :
По поводу инициализации железа ничего сказать не могу, а вот что касается программной части: а где инициализация секции .data? Судя по приведенному map файлу, в ней есть данные... Я вижу, что после очистки .bss управление сразу передается main()...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 5 2009, 17:52
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(alx2 @ Feb 5 2009, 13:48) *
По поводу инициализации железа ничего сказать не могу, а вот что касается программной части: а где инициализация секции .data? Судя по приведенному map файлу, в ней есть данные... Я вижу, что после очистки .bss управление сразу передается main()...

Пока не селен в тонкостях работы с скриптами, Понимаю так секция bss содержит переменные,
но как их нужно инициализировать, не знаю, вот в скрипте линкера:
CODE

.bss :
{
PROVIDE (__bss_start = .);
*(.bss)
*(COMMON)
. = ALIGN(4);
PROVIDE (__bss_end = .);

. = ALIGN(256);

PROVIDE (__stack_start = .);

PROVIDE (__stack_fiq_start = .);
. += FIQ_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_fiq_end = .);

PROVIDE (__stack_irq_start = .);
. += IRQ_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_irq_end = .);

PROVIDE (__stack_abt_start = .);
. += ABT_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_abt_end = .);

PROVIDE (__stack_und_start = .);
. += UND_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_und_end = .);

PROVIDE (__stack_svc_start = .);
. += SVC_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_svc_end = .);

PROVIDE (__stack_use_start = .);
. += USE_STACK_SIZE;
. = ALIGN(4);
PROVIDE (__stack_use_end = .);



PROVIDE (__stack_end = .);
PROVIDE (__heap_start = .);
} > ram




Причина скорее всего в секции bss. Проделал такие действия: запустил программу с виглером посмотрел память и мап
файл еще раз, по ниму видно что данные которые находятся в bss располагаются по адресу 0ч00200000 и занимают 4байта,
хранится там цифра 00F4FFFF её запомнил, после добавил в стартап очистку все памяти :
Код
   ldr   r1, =0x00200000
   ldr   r2, =0x00210000
   mov   r3, #0
bss_clear_loop:
   cmp   r1, r2
   strne r3, [r1,#0x04]!
   bne   bss_clear_loop

Теперь если запускаю, программа не запускается, а если записываю 00F4FFFF по адресу где должен быть BSS,
программа начинает работать. Похоже дело все таки в этом.
Как правильно проинициализировать сектор bss , может его нужно помещать в не в ром а в рам ?
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 5 2009, 18:58
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(sergey sva @ Feb 5 2009, 19:52) *
Пока не селен в тонкостях работы с скриптами...

Вот пример из рабочего проекта для SAM7S256.
В кратце
Секция .data это секция, в которой размещаются инициализируемуе глобальные переменные. Она прошивается во флеш по адресу LMA, и копируется стартап кодом по адресу VMA.
Секция .bss это секция, в которой размещаются НЕинициализируемуе глобальные переменные. Она НЕ прошивается во флеш и обнуляется стартап кодом по адресу VMA.
LMA - Load Memory Address - адрес, по которому загружаются переменные из файла (для embedded прошиваются во флеш).
VMA - Virtual Memory Address - адрес, по которому переменные доступны программе во время ее выполнения.

За подробностями обратитесь в info ld, ну или на первоисточник http://sourceware.org/binutils/docs/

А вообще-то если у Вас нет, так сказать реверенсного, скрипта линкера то выведите скрипт по умолчанию из самого ld
arm-elf-ld --verbose
и поправте под свои нужды.

Сообщение отредактировал amw - Feb 5 2009, 19:02
Прикрепленные файлы
Прикрепленный файл  lds_crt.zip ( 4.54 килобайт ) Кол-во скачиваний: 20
 


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 5 2009, 19:43
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Спасибо smile.gif теперь все работает. причина была : секцию дата разместил в рам , и в стартапе не было копирования из флэша в рам,
секции дата. Про это тоже не знал arm-elf-ld --verbose. вообщем очень помогли smile.gif
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 5 2009, 19:48
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(sergey sva @ Feb 5 2009, 21:43) *
Спасибо smile.gif

smile.gif

Цитата(sergey sva @ Feb 5 2009, 21:43) *
Спасибо smile.gif

smile.gif


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Feb 6 2009, 12:24
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Заметил такую штуку.

Когда использовал GDB сервер для J-Link версии 3,68b - точки останова ставятся,
если использую последнюю версию 4.02 - проблема такая же как и с опер оцд.
Точки останова не ставятся. От сюда возникает подозрение, может сменили команду
установки брейкпоинтов? smile3046.gif


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 30 2009, 08:54
Сообщение #45


;
******

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



Подскажите, уважаемые, как бороться с такой чепухой: (WinAVR-20090313)

Пишу софтину с printf_P периодически выскакивает error: relocation truncated to fit для фрагментов с его использованием.
меняю порядок компиляции файлов - все попускает. Можно ли заставить линкер как-то перетасовать объектники автоматиццки?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:56
Рейтинг@Mail.ru


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