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

скрипт линкера для двух раздельных областей памяти разного типа

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

Проект для контроллера на arm m4, который имеет память на флешь ( внешняя и медленная).
Там расположен загружаемый образ, который загружается в память tcm (Tightly-Coupled Memory - встроенная в контроллер), но не большого размера зато быстро доступная.
Проект быстро "вырос" за пределы  tcm и необходимо разместить часть кода в оперативной памяти
(флешь не подойдет слишком медленная). Мои модификации файла компоновщика приводят к 
созданию огромного файла образа т.к. адресное пространство между tcm и ram несколько Megabyte 
(сам образ несколько десятков килобайт) и такое положение вещей не приемлемо.
Хотелось бы иметь часть кода в tcm а часть в ram.
Это возможно?
Какие решения здесь можно использовать? 

с уважением.

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


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

40 минут назад, winniethepooh сказал:

(флешь не подойдет слишком медленная).

Это в каком МК на ядре M4 внутренняя флешь не имеет кеша? :wacko2:

40 минут назад, winniethepooh сказал:

Это возможно? Какие решения здесь можно использовать? 

С .bin-образом прошивки думаю - никак. .hex - можно.

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


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

35 minutes ago, x893 said:

А как же гугл ? Забанили ?

https://mcu-things.com/blog/ramfunc-gcc/

нет не забанили, но кажется у меня другие проблемы.. 

я не понимаю как работает компановщик. после старта контроллера секции могут быть перенесены с помощью AT>  в другие области памяти но это операция увеличивает размер образа, я что то не так делаю?

20 minutes ago, jcxz said:

Это в каком МК на ядре M4 внутренняя флешь не имеет кеша? :wacko2:

С .bin-образом прошивки думаю - никак. .hex - можно.

забыл добавить у меня двух ядерный  контроллер. один стартует  первым, копирует образ для другого (который м4 и у него нет кеша только тсм) затем стартует ядро м4.

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


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

45 минут назад, winniethepooh сказал:

забыл добавить у меня двух ядерный  контроллер. один стартует  первым, копирует образ для другого (который м4 и у него нет кеша только тсм) затем стартует ядро м4.

И что? Это как-то заставляет использовать .bin вместо .hex?

Что за секретный МК? Уж не LPC43xx ли? Так у него есть кеш.

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


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

57 minutes ago, jcxz said:

И что? Это как-то заставляет использовать .bin вместо .hex?

Что за секретный МК? Уж не LPC43xx ли? Так у него есть кеш.

 imx6soloX два ядра,  А9 (есть кеш) и  м4 кеша нет.

 что вам до кеша?  есть кеш нет кеша что вы там собираетесь делать?

hex  не выполняемый формат файла c чего вы взяли что использую hex.

я вас совсем не понимаю..

Изменено пользователем winniethepooh

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


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

13 минут назад, winniethepooh сказал:

hex  не выполняемый формат файла c чего вы взяли что использую hex.

Читайте внимательнее - я взял что вы его не используете. А что там используете - вы же не говорите. Видимо .bin.

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


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

11 hours ago, dimka76 said:

Если речь идет про GCC, то objcopy

спасибо за ссылку и да я использую GCC.

но я возможности разделить bin файл на несколько частей я слышу впервые..

попробую  погуглить, но если у вас есть хорошая ссылка приемного благодарен! 

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


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

3 hours ago, winniethepooh said:

попробую  погуглить

Зачем вообще нужен hex/.bin ? Всё есть в .elf

Указываете программатору какие секции куда записывать и вперед с песнями.

Можно конечно и один hex сделать с разными секциями и несколько hex'ов.

И binы под разные секции.

Но зачем? Если есть elf и ещё информация для отладчика там присутствует.

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


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

Оба куска склеиваются вместе в один образ и объявляются константы содержащие размеры и адреса, чтобы можно было этот образ разделить и загрузить куда надо. Смотрите как работает загрузка .data секции (в самом обычном скрипте для запуска из flash), что передаётся в стартовый код.

 

Можно и отдельно два бинарника собрать, если встроенный механизм загрузки не нужен и кто-то загрузить их оба.

Изменено пользователем amaora

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


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

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

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

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

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

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

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

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

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

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