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

 
 
> MSPGCC + MSP430X - проблемы с .far_rom
MrYuran
сообщение Feb 12 2014, 11:01
Сообщение #1


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Здравствуй, народ!
Нид ё хелп!

Пришлось таки столкнуться с верхней памятью MSP430X, возникли проблемы.

История болезни:

1. Код перевалил за 53кБ на f2618 и перестал влезать в секцию .rom

2. Не долго думая, некоторые функции перенаправили в верхнюю флешь через __attribute__((section(".far_rom")))
вроде прокатило, но функции почему-то легли с адреса 0x200 вместо 0x10000.

3. Добавили флаг -memory-model = large
Линкер съел, компилятор не понял.

4. Выяснилось, что готовая сборка mspgcc_20120911 не поддерживает нужные ключи (или чяднт?)

Насколько я понял, все доработки находятся в DEVEL ветках и их нужно встраивать ручками.
Сборка gcc конечно полезна для общего развития, но совершенно бессмысленна с т.з. производственного процесса.

Нельзя ли где взять готовые сборки, поддерживающие верхнюю флешь?
Или я чего-то неправильно понимаю?

PS: есть ещё свежак от TI+RH, но там похоже пока только голое ядро, все остальное нужно навешивать самостоятельно.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Feb 14 2014, 11:53
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Подключил вручную memory.ld и peripherals.ld, вроде полегчало.
Однако опять проблема с .infomem


lst:
0000072a l d .infomem 00000000 .infomem

В прошивке соответственно:
Код
@072a
00 00 46 00 c8 00 c8 00 07 02 00 00 00 00 00 00
00 40 00 00 00 40 00 00 00 40 6f 12 03 3a
q


map:
Код
.infomem        0x0000072a       0x1e
.infomem       0x0000072a       0x1e ./Obj/flash.o
                0x0000072a                FlashData


ld:
Код
  infomem          : ORIGIN = 0x1000, LENGTH = 0x0100 /* END=0x10FF, size 256 as 2 128-byte segments */
  infod            : ORIGIN = 0x0001, LENGTH = 0x0080 /* END=0x0000, size 128 */
  infoc            : ORIGIN = 0x0F80, LENGTH = 0x0080 /* END=0x0FFF, size 128 */
  infob            : ORIGIN = 0x1000, LENGTH = 0x0080 /* END=0x107F, size 128 */
  infoa            : ORIGIN = 0x1080, LENGTH = 0x0080 /* END=0x10FF, size 128 */


Жесть какая-то..


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:08
Рейтинг@Mail.ru


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