Перейти к содержанию
    

стек забыли

SECTIONS
{
    .text :
    {
        __vtab_start__ = .;
        LONG(__StackTop)
        LONG(Reset_Handler | 1)
        KEEP(*(.vectab))
        *(.text*)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"огласите весь список, ппожалуйста!" ©

Похожий шок я испытал, когда разбирался с тексасовским проектом, где адреса периферии назначались в линк-скрипте (а каждое устройство жило в своей секции). Это же надо так запутать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, чем так страшен стартап?

+1.

 

Вот, к примеру, мой:

<...>

Или вот.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или вот.

Спасибо за ссылочку! Форкнул на всякий случай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похожий шок я испытал, когда разбирался с тексасовским проектом, где адреса периферии назначались в линк-скрипте (а каждое устройство жило в своей секции). Это же надо так запутать...

А что в этом неправильного? Это основная задача линкера - распределять адресное пространство.

Точно так же можно в icf-файле IAR определить адресные пространства периферии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что в этом неправильного? Это основная задача линкера - распределять адресное пространство.

Точно так же можно в icf-файле IAR определить адресные пространства периферии.

Неправильно, что то, что можно и НУЖНО делать преносимыми средствами языка, делается непереносимыми средствами инструмента. Появляется нахренненужная привязка и инструменту. Точнее, конечно, "нужная", но только тексасу пытающемуся таким образом подсадить недалеких потребителей и на свои инструменты, и свои контролеры. Такая же фигня в общем и у IAR - хидеры ваяют со своими "расширениями" с той же целью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неправильно, что то, что можно и НУЖНО делать преносимыми средствами языка, делается непереносимыми средствами инструмента. Появляется нахренненужная привязка и инструменту. Точнее, конечно, "нужная", но только тексасу пытающемуся таким образом подсадить недалеких потребителей и на свои инструменты, и свои контролеры. Такая же фигня в общем и у IAR - хидеры ваяют со своими "расширениями" с той же целью.

Agreed 100%

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Agreed 100%

Так-то оно так, да вот беда - в С не предусмотрено стандартных средств для назначения объектам реальных адресов.

Впрочем для процессоров где периферия отображается в общее с памятью адресное пространство (типа ARM или MSP430) эти средства не особо нужны, можно обойтись указателями на регистры периферии.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я не понял про привязку. У меня таблица векторов выглядит так:

__attribute__ ((section(".isr_vectors"))) void (* const __vectors[])(void) =
{       
    &_estack,           /* The initial stack pointer */
    Reset_Handler,              /* Reset Handler */
    NMI_Handler,                /* NMI Handler */
    HardFault_Handler,          /* Hard Fault Handler */
   .........................

 

В скрипте линкера прописывается куда положить какую секцию и собственно все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть люди, кто этот массив частично описывают в программе, частично собирают в скрипте линкера. Вот я глядя в исходник и ошибся, считая сто там ошибка (неполная таблица).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я не понял про привязку. У меня таблица векторов выглядит так:

В скрипте линкера прописывается куда положить какую секцию и собственно все.

Разговор был про назначение адресов памяти регистрам периферии.

Кто-то делает это в си-шных хидерах, кто-то - через линкер. Принципиальной разницы нет. Имхо.

 

А есть люди, кто этот массив частично описывают в программе, частично собирают в скрипте линкера. Вот я глядя в исходник и ошибся, считая сто там ошибка (неполная таблица).

Скорее такие люди просто надёргали кусков отовсюду, не разбираясь и не понимая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее такие люди просто надёргали кусков отовсюду, не разбираясь и не понимая.

Ну зачем же так сразу - некоторый смысл может быть если применяется загрузчик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну зачем же так сразу - некоторый смысл может быть если применяется загрузчик.

И какой смысл? И при чём тут загрузчик?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...