ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 июля
1594449 Топик полностью
Zikon (Сегодня, 11:38, просмотров: 49) ответил klen на Данные случайным образом попадают в .sdata .sbss. Чтоб можно было бы управлять порядком прижатия нужных мне кусочков данных.
А чем вам не нравится стандартный линк файл от WCH который есть во всех примерах - там порядок сегментов .data / .sdata / .sbss / .bss и $gp инициализируется на начало сегмента .sdata + 0x800. И так как .sbss = .bss то при релаксации (-Wl,--relax включена по умолчанию) всё .bss доступно сразу по $gp (естественно в пределах +-2K смещения). А для использования .sdata надо задать как раз параметр -msmall-data-limit. Сегменты .sdata и .sbss рядом вместе. 
	.data :
	{
    	*(.gnu.linkonce.r.*)
    	*(.data .data.*)
    	*(.gnu.linkonce.d.*)
		. = ALIGN(8);
    	PROVIDE( __global_pointer$ = . + 0x800 );
    	*(.sdata .sdata.*)
		*(.sdata2.*)
    	*(.gnu.linkonce.s.*)
    	. = ALIGN(8);
    	*(.srodata.cst16)
    	*(.srodata.cst8)
    	*(.srodata.cst4)
    	*(.srodata.cst2)
    	*(.srodata .srodata.*)
    	. = ALIGN(4);
		PROVIDE( _edata = .);
	} >RAM AT>FLASH
	.bss :
	{
		. = ALIGN(4);
		PROVIDE( _sbss = .);
  	    *(.sbss*)
        *(.gnu.linkonce.sb.*)
		*(.bss*)
     	*(.gnu.linkonce.b.*)		
		*(COMMON*)
		. = ALIGN(4);
		PROVIDE( _ebss = .);
	} >RAM AT>FLASH