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

Как на С задать абсолютный адрес размещения кода, подобно ORG на ассемблере,

Требуется для микроконтроллера Silabs в программе на C задать точки входа. Не нашёл, как это сделать, нуб совсем, видимо. На ассемблере это просто ORG 0x2000 и так далее, например.

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


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

Зависит от компилятора, обычно функции назначают размещение в именованной секции, а линкеру указывают, куда разместить эту секцию.

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


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

Я с такой не знаком, бегло глянул - за основу взят Keil, если так же, как в нем - смотрите в свойствах проекта в закладке Linker  настройки Scatter file, в нем можно указать, какую секцию где разместить и какие модули (файлы исходного текста) в них включить, например:

LR_IROM1 0x08000000 0x00020000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00020000  {  ; load address = execution address
   *.o (RESET, +First) ; стартовый код с обработчиком сигнала сброса
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00008000  {  ; RW data код из флеш будет скопирован в оперативную память для исполнения из нее
    flash.o (+RO +ZI)	; функции программирования флеш должны исполняться из оперативной памяти
   .ANY (+RW +ZI)
  }
  ER_IROM2 +0   {	; в конце разместить служебный модуль с контрольной суммой кода программы
   eflash.o (eflash, +RO-DATA)
  }
}

 

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


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

51 - не ARM, в Кейле (uVision) с ними по-другому, scatter-файлов там нет. Секции размещаются примерно так.

 

code_at.jpg

code_loc.jpg

В Silabs IDE как-то похоже, но точно не скажу, почти не приходилось пользоваться.

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


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

Спасибо! Получилось линкером в командной строке задавать, в с давать название секций.

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


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

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

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

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

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

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

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

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

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

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