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

 
 
> Стартап и скрипт линкера из CMSIS для Sourcery CodeBench
koluna
сообщение Jun 6 2013, 08:09
Сообщение #1


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

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



Всем привет!

Помогите разобраться, пожалуйста.
Стартап и скрипт взял из CMSIS 3.01 (\Device\ARM\ARMCM3\Source\GCC): gcc_arm.ld, startup_ARMCM3.S (приложил к теме).
Подцепляю к простейшему тестовому проекту.
При сборке линкер ругался сначала на отсутствие libnosys.a (ее действительно нет в дистрибе компилятора) - убрал ее из списка в скрипте. Ошибка пропала.
Но так и не нашел, что это за либа, для чего нужна и почему ее нет...
Потом линкер ругался на отсутствие "_start". Странно, откуда эта метка в стартапе и почему так называется? Поставил вместо нее "main" - все собралось. Ошибок нет.
Но осадок сомнения остался - уже две ошибки в этих двух файлах... кто знает, что там еще? Надеялся, что все заработает "из коробки".
Пока не зашивал, не уверен в работоспособности, будем пробовать.
Насколько можно верить этим файлам? Что еще в них придется корректировать (ну, кроме размеров RAM, ROM, размеров стека и кучи)?
Прикрепленные файлы
Прикрепленный файл  GCC.zip ( 3.82 килобайт ) Кол-во скачиваний: 14
 


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jun 15 2013, 22:03
Сообщение #2


Гуру
******

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



QUOTE (AHTOXA @ Jun 15 2013, 13:57) *
Но у меня чисто теоретические познания в этой области, я не писал загрузчиков и приложений под них. Надеюсь, Сергей Борщ что-нибудь добавит.
Из описания VTOR:
QUOTE
Bits 29:11 TBLOFF[29:9]: Vector table base offset field.
It contains bits [29:9] of the offset of the table base from memory address 0x00000000. When
setting TBLOFF, you must align the offset to the number of exception entries in the vector table.
The minimum alignment is 128 words.
Собственно тут все сказано: выравнивание должно быть на 128 байт.
QUOTE (koluna @ Jun 15 2013, 22:56) *
Как я понимаю, наш случай - предпоследний?
Нет. Но в двух словах: программа будет работать в железе и без строчки ENTRY(), ибо старт с вектора по адресу 0x00000004 в процессоре прибит гвоздями. Эта строка (в приведенном AHTOXой виде) нужна отладчику, ибо он не умеет (пока) брать стартовый адрес из таблицы векторов, а пытается, по старинке, считать код команды по адресу 0. А у Cortex там лежит начальное значение указателя стека и получается конфуз.

QUOTE (koluna @ Jun 15 2013, 22:56) *
Кстати, атрибуты регионов здесь зачем?

QUOTE
К программисту подходит сынишка:
- Папа, почему солнышко каждый день встает на востоке, а садится на западе?
- Что, правда?
- Да.
- Каждый день?
- Да.
- По-другому было когда нибудь?
- Нет.
- О! Вот это работает - не трогай.
sm.gif


--------------------
На любой вопрос даю любой ответ
"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
AHTOXA
сообщение Jun 15 2013, 22:33
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Сергей Борщ @ Jun 16 2013, 04:03) *
Собственно тут все сказано: выравнивание должно быть на 128 байт.

Понятно, то есть, вариативность в описании от АРМовцев - это для производителей проца. А ST сделал жёстко 128 слов, убрав ещё пару младших битов у VTOR. С точки зрения написания линкерных скриптов это хорошо: надо просто поменять выравнивание с 4 на 512:)
Цитата(Сергей Борщ @ Jun 16 2013, 04:03) *
работает - не трогай.

Именно! beer.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 15 2013, 23:15
Сообщение #4


Гуру
******

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



QUOTE (AHTOXA @ Jun 16 2013, 01:33) *
128 слов
Да, виноват, ошибся. 128 слов, 512 байт.
Да я вам больше скажу: они там сами никак не определятся. На картинке замаскированы 9 бит, а полностью описание звучит так:
QUOTE
Bits 29:11 TBLOFF[29:9]: Vector table base offset field.
It contains bits [29:9] of the offset of the table base from memory address 0x00000000. When
setting TBLOFF, you must align the offset to the number of exception entries in the vector table.
The minimum alignment is 128 words. Table alignment requirements mean that bits[8:0] of the
table offset are always zero.
Bit 29 determines whether the vector table is in the code or SRAM memory region.
0: Code
1: SRAM
Note: Bit 29 is sometimes called the TBLBASE bit.
Bits 10:0 Reserved, must be kept cleared
Так все-таки 29:11 или 29:9? Судя по последующим "Bits 10:0" маскируются 11 бит и выравнивание должно быть на 2048 байт. "Ребус, краксворд!".


--------------------
На любой вопрос даю любой ответ
"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
AHTOXA
сообщение Jun 16 2013, 19:48
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Сергей Борщ @ Jun 16 2013, 05:15) *
Так все-таки 29:11 или 29:9? Судя по последующим "Bits 10:0" маскируются 11 бит и выравнивание должно быть на 2048 байт. "Ребус, краксворд!".

В PM0214 (Programming manual для F4) всё однозначно:
Цитата
Bits 29:9 TBLOFF: Vector table base offset field.
Bits 8:0 Reserved, must be kept cleared

Видимо была опечатка в предыдущих PM.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- koluna   Стартап и скрипт линкера из CMSIS для Sourcery CodeBench   Jun 6 2013, 08:09
- - Непомнящий Евгений   Я в свое время сам писал и скрипт и стартап. Чем-т...   Jun 6 2013, 08:22
|- - koluna   Цитата(Непомнящий Евгений @ Jun 6 2013, 12...   Jun 6 2013, 08:42
- - koluna   Кто-нибудь выскажет свое мнение? Или мир разделилс...   Jun 6 2013, 11:58
|- - _Артём_   Цитата(koluna @ Jun 6 2013, 14:58) И нет ...   Jun 6 2013, 17:32
|- - koluna   Цитата(_Артём_ @ Jun 6 2013, 21:32) Скрип...   Jun 6 2013, 18:27
|- - AHTOXA   Попробуйте скрипты и стартап от scmRTOS. Я точно з...   Jun 6 2013, 18:29
- - koluna   AHTOXA, спасибо большое! Но мне хотелось бы вс...   Jun 7 2013, 10:59
- - koluna   AHTOXA, есть вопросы по Вашему стартапу, прошу пом...   Jun 7 2013, 14:44
|- - AHTOXA   Цитата(koluna @ Jun 7 2013, 20:44) Строки...   Jun 7 2013, 16:59
|- - koluna   Цитата(AHTOXA @ Jun 7 2013, 20:59) Это пе...   Jun 7 2013, 19:53
|- - AHTOXA   Цитата(koluna @ Jun 8 2013, 01:53) Кстати...   Jun 7 2013, 21:39
|- - koluna   Цитата(AHTOXA @ Jun 8 2013, 01:39) Да. Ли...   Jun 10 2013, 12:41
|- - AHTOXA   Цитата(koluna @ Jun 10 2013, 18:41) Кстат...   Jun 10 2013, 18:56
|- - koluna   Цитата(AHTOXA @ Jun 10 2013, 22:56) Ну ма...   Jun 11 2013, 07:46
- - koluna   Вопросы по Вашему скрипту. Зачем вообще придумали...   Jun 12 2013, 14:58
|- - AHTOXA   Ничего себе, сколько вопросов Сразу предупреждаю, ...   Jun 12 2013, 18:45
|- - koluna   Цитата(AHTOXA @ Jun 12 2013, 22:45) Ничег...   Jun 13 2013, 07:40
|- - AHTOXA   Цитата(koluna @ Jun 13 2013, 13:40) Зачем...   Jun 13 2013, 08:36
|- - Непомнящий Евгений   Цитата(koluna @ Jun 13 2013, 11:40) Зачем...   Jun 13 2013, 08:43
- - koluna   Вот здесь зачем выравнивание перед таблицей вектор...   Jun 13 2013, 18:41
|- - Сергей Борщ   QUOTE (koluna @ Jun 13 2013, 21:41) Вот з...   Jun 13 2013, 19:12
||- - Terminator   Цитата(Сергей Борщ @ Jun 14 2013, 02:12) ...   Jun 14 2013, 01:51
||- - koluna   Цитата(Сергей Борщ @ Jun 13 2013, 23:12) ...   Jun 14 2013, 13:41
|- - AHTOXA   Цитата(koluna @ Jun 14 2013, 00:41) Вот з...   Jun 13 2013, 19:48
|- - koluna   Цитата(AHTOXA @ Jun 13 2013, 23:48) Ох, д...   Jun 14 2013, 18:25
|- - AHTOXA   Цитата(koluna @ Jun 15 2013, 00:25) Ааа.....   Jun 14 2013, 19:19
|- - koluna   Цитата(AHTOXA @ Jun 14 2013, 23:19) Начал...   Jun 15 2013, 10:27
|- - AHTOXA   Цитата(koluna @ Jun 15 2013, 16:27) Недов...   Jun 15 2013, 10:57
|- - koluna   Цитата(AHTOXA @ Jun 15 2013, 14:57) Давай...   Jun 15 2013, 19:56
|- - AHTOXA   Цитата(koluna @ Jun 16 2013, 01:56) Как я...   Jun 15 2013, 20:26
|- - koluna   Цитата(AHTOXA @ Jun 16 2013, 00:26) Нет. ...   Jun 16 2013, 07:25
|- - AHTOXA   Цитата(koluna @ Jun 16 2013, 13:25) Так, ...   Jun 16 2013, 10:00
- - Сергей Борщ   QUOTE (AHTOXA @ Jun 13 2013, 22:48) А чем...   Jun 14 2013, 19:50
|- - AHTOXA   Цитата(Сергей Борщ @ Jun 15 2013, 01:50) ...   Jun 15 2013, 05:43
- - koluna   О счетчике позиций. Может быть вот это: Код__exid...   Jun 17 2013, 14:51
|- - Сергей Борщ   QUOTE (koluna @ Jun 17 2013, 17:51) было ...   Jun 18 2013, 07:54
|- - AHTOXA   Вот ведь дилемма... С одной стороны, "возможн...   Jun 18 2013, 08:46
- - koluna   Не совсем разобрался с адресацией: абсолютная и от...   Jun 18 2013, 11:02
|- - AHTOXA   Цитата(koluna @ Jun 18 2013, 17:02) Вот в...   Jun 18 2013, 13:00
- - koluna   Цитата(AHTOXA @ Jun 18 2013, 17:00) Нет. ...   Jun 18 2013, 13:25
|- - AHTOXA   Цитата(koluna @ Jun 18 2013, 19:25) Знаю....   Jun 18 2013, 16:58
|- - koluna   Цитата(AHTOXA @ Jun 18 2013, 20:58) А фиг...   Jun 18 2013, 17:43
|- - AHTOXA   Да, всё так.   Jun 18 2013, 17:54
|- - Сергей Борщ   QUOTE (koluna @ Jun 18 2013, 20:43) Вот и...   Jun 18 2013, 18:34
- - koluna   Пока так и не понял, "--gc-sections" раб...   Jun 18 2013, 15:52
- - koluna   Мучает меня вопрос по секциям все-таки... .init_...   Jun 18 2013, 18:37
|- - AHTOXA   Цитата(koluna @ Jun 19 2013, 00:37) .init...   Jun 18 2013, 19:44
|- - koluna   Цитата(AHTOXA @ Jun 18 2013, 23:44) Можно...   Jun 19 2013, 07:41
|- - AHTOXA   Цитата(koluna @ Jun 19 2013, 13:41) Наско...   Jun 19 2013, 08:04
|- - koluna   Цитата(AHTOXA @ Jun 19 2013, 12:04) Емним...   Jun 19 2013, 09:44
|- - Сергей Борщ   QUOTE (koluna @ Jun 19 2013, 12:44) Кстат...   Jun 19 2013, 10:02
|- - koluna   Понятно, спасибо. А с деструкторами все-таки что?...   Jun 19 2013, 12:31
|- - Сергей Борщ   QUOTE (koluna @ Jun 19 2013, 15:31) А с д...   Jun 19 2013, 13:11
- - koluna   Судя по всему для EABI, по аналогии с конструктора...   Jun 19 2013, 14:10
- - koluna   Что такое common-символы (секция COMMON)? Из доки ...   Jun 19 2013, 18:30
- - koluna   И все-таки хотелось бы немного поговорить и о скри...   Jun 20 2013, 16:26
- - koluna   Посмотрел у себя файлы crt* в папках компилятора: ...   Jun 21 2013, 20:50


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

 


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


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