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

 
 
 
Reply to this topicStart new topic
> Keil, сборка проекта из командной строки
koluna
сообщение Aug 29 2013, 07:32
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Здравствуйте!

Есть проект в uVision 4.54. В среде все отлично собирается, работает.
Стоит задача собирать этим же компилятором, но из командной строки.
Компиляция происходит нормально.
Затык на линковке.

Линкер выдает следующую ошибку:

Цитата
"test.sct", line 7 (column 9): Error: L6236E: No section matches selector - no section to be FIRST/LAST


Ключи линкера скопировал из настроек среды.
Полностью командная строка вызова линкера выглядит следующим образом (параметры разделил по строкам для удобства восприятия):

Цитата
armlink.exe
<список объектных файлов>
--cpu cortex-m3
--libpath=C:/Keil/ARM/RV31/LIB
--strict
--scatter="test.sct"
--summary_stderr
--info summarysizes
--info sizes
--info totals
--info unused
-o "test.axf"


Помогите, пожалуйста, разобраться. В чем может быть дело?
Может быть библиотеки не те подцепились?
Или еще какие-нибудь опции необходимо указать дополнительно?
С удивлением обнаружил, что для Keil используется не скрипт линкера, а некий scatter-файл.


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 29 2013, 07:38
Сообщение #2


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

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



В настройках среды есть галочка, поставив которую после билда проекта появится bat-файл для сборки этого проекта из командной строки.
И никаких лишних телодвижений...
Вот пример такого файла:
CODE
SET PATH=C:\Keil\ARM\BIN40;.......................
SET ARMCC41INC=C:\Keil\ARM\RV31\Inc
SET ARMCC41LIB=C:\Keil\ARM\RV31\Lib
SET CPU_TYPE=STM32F103VB
SET CPU_VENDOR=STMicroelectronics
SET UV2_TARGET=limb - Release
SET CPU_CLOCK=0x00F42400
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\core_cm3.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_usart.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_gpio.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_flash.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_exti.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_rcc.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_tim.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\stm32f10x_dma.__i"
"C:\Keil\ARM\BIN40\ArmAsm" --Via "..\bin\stm32f10x._ia"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\hard_fault.__i"
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\delay.__i"
..........
"C:\Keil\ARM\BIN40\ArmCC" --Via "..\bin\main.__i"
"C:\Keil\ARM\BIN40\ArmLink" --Via "..\bin\limb.lnp"
C:\Keil\ARM\BIN40\fromelf.exe "..\bin\limb.axf" --i32combined --output "..\bin\limb.hex"


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
richie
сообщение Aug 29 2013, 08:58
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Как человек, ленивый по натуре, то не стал bat'ничать каждым файлом для каждого таржета.

Воспользовался командной строкой uv4:

Код
...
set UV2_PATH=C:\...\uv4.exe
set PRJ_PATH=PROJ1.uvproj
...
set  TARGET=TARGET1_NAME
set  OUTDIR=..\PROJ1\OUT\TARGET1
echo Target (%TARGET%)
Date /T
time /T
md   %OUTDIR%
%UV2_PATH% -b  %PRJ_PATH% -t"%TARGET%" -o"%OUTDIR%\%TARGET%.log"
...


Так было для x51. Скорее всего, так же для ARMов.
Go to the top of the page
 
+Quote Post
koluna
сообщение Aug 29 2013, 13:27
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(demiurg_spb @ Aug 29 2013, 11:38) *
В настройках среды есть галочка, поставив которую после билда проекта появится bat-файл для сборки этого проекта из командной строки.
И никаких лишних телодвижений...


Спасибо большое за галочку sm.gif
Options for target ... -> Вкладка "Output" -> Галка "Create batch file".

Дело было в стартапе...
Я сделал make-файл, но не учел, что для него имеет значение регистр имен файлов.
У меня стартап ".s", а в make ожидался как ".S" (при поиске), поэтому не был найден...

Кстати, где в среде отключается отладка (опция "-g")? Не нашел галки...
И еще одно... вроде, опции одинаковые использую (в среде и в make), но объектники получаются немного разными... не знаю почему пока...



--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 29 2013, 13:33
Сообщение #5


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

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



Смотрите внимательнее, значит что-то всё таки отличается.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
koluna
сообщение Aug 29 2013, 14:22
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(demiurg_spb @ Aug 29 2013, 17:33) *
Смотрите внимательнее, значит что-то всё таки отличается.


Поглядел объектники (компиляция в среде, компиляция из make).
У секций ".comment" размер разный и разные имена. Поплыли смещения.
У символов разные имена.

Новый объектник:
Код
...
116 __ARM_grp.AT45.c.2_ci1000_p6dXBc2GlQ5_e00000 00000010  00000000  00000000  00012f64  2**2
                  CONTENTS, READONLY, EXCLUDE, GROUP, LINK_ONCE_DISCARD
...


Старый объектник:
Код
...
116 __ARM_grp.AT45.c.2_Ih1000_8WX5sQ9ETS6_e00000 00000010  00000000  00000000  00012f2c  2**2
                  CONTENTS, READONLY, EXCLUDE, GROUP, LINK_ONCE_DISCARD
...


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Aug 29 2013, 15:48
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



По поводу разных объектников. Поковырял объектники. Разобрался.

1. Убрал ради эксперимента "-g" везде.
Разные имена были только у debug секций и символов. Этих секций и символов нет - все одинаково, красиво.

2. Смещения секций поплыли из-за разницы в секциях ".comment". Там прописана строка компиляции.
Просто были немного разные пути sm.gif

В общем, собирается все нормально.
Но вот только почему "-g" дает разные имена - не понятно...


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th June 2025 - 12:25
Рейтинг@Mail.ru


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