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

Для пользующихся RVCC c Keilом

Засунуть функции в ОЗУ можно с малейшими усилиями. Пишу, т.к. не я первый пролетел на незнании этой фичи.

Вариант 1:

- в свойствах проекта на вкладке target указываем начало и длину участка памяти для размещения функций в ОЗУ. Для SAM7S256 это 0x208000 0x2000 (так у меня), указывается в RAM1.

- в свойствах файла, функции которого должны быть в ОЗУ указываем для размещения кода регион RAM1.

 

Вариант 2:

использование scatter-файла такого вида:

FLASH_LOAD 0x100000
  {
  EXE +0 0x40000
    {
    *.o (RESET, +FIRST)
    * (+RO)
    }
  DATA 0x200000 0x8000
    {
    * (+RW +ZI)
    }
  ISR_EXE 0x208000 0x2000
    {
    interrupt.o (+RO)
    }
  }

Здесь:

0x100000 - начало флеша контроллера,

+0 0x40000 - писать код и константы с начала флеша до 0x140000,

0x200000 - начало памяти данных, 0x8000 - длина памяти данных,

0x208000 0x2000 - начиная с адреса 0x208000 поместить функции из модуля interrupt. Длина до 0x2000.

Если надо засунуть еще что-то - добавляем в последнюю секцию строки вида

file1.o (+RO)

file2.o (+RO)

...

filen.o (+RO)

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


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

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

Я вчера стал счастливым обладателем платы с LPC2124, стал разбираться как чего.

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

Сам я имею опыт работы с кейлом и яром под 51 и авр. А что посоветуети по арм?

 

Естьли платные компиляторы с лекарством от жадности?

А что за компилятор еклипс и гну?

 

Нашел на сахаре посты по лекарсв на IAR purgen2.rar но скачать не смог ссылки не работаю, намыльте пожалуста у кого это есть shtefan_v гав mail.ru

Изменено пользователем Штефан Виталий

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


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

Для пользующихся RVCC c Keilом

Засунуть функции в ОЗУ можно с малейшими усилиями. Пишу, т.к. не я первый пролетел на незнании этой фичи.

Вариант 1:

- в свойствах проекта на вкладке target указываем начало и длину участка памяти для размещения функций в ОЗУ. Для SAM7S256 это 0x208000 0x2000 (так у меня), указывается в RAM1.

- в свойствах файла, функции которого должны быть в ОЗУ указываем для размещения кода регион RAM1.

 

Вариант 2:

использование scatter-файла такого вида:

FLASH_LOAD 0x100000
  {
  EXE +0 0x40000
    {
    *.o (RESET, +FIRST)
    * (+RO)
    }
  DATA 0x200000 0x8000
    {
    * (+RW +ZI)
    }
  ISR_EXE 0x208000 0x2000
    {
    interrupt.o (+RO)
    }
  }

Здесь:

0x100000 - начало флеша контроллера,

+0 0x40000 - писать код и константы с начала флеша до 0x140000,

0x200000 - начало памяти данных, 0x8000 - длина памяти данных,

0x208000 0x2000 - начиная с адреса 0x208000 поместить функции из модуля interrupt. Длина до 0x2000.

Если надо засунуть еще что-то - добавляем в последнюю секцию строки вида

file1.o (+RO)

file2.o (+RO)

...

filen.o (+RO)

 

 

А скажите, пожалуйста, как можно указать место в памяти, куда нужно поместить код используемых в программе стандартных ANSI C функций? Например, в своей программе я использую стандартную функцию sprintf(). Как её расположить в памяти по нужному мне адресу?

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


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

Не совсем то , но ход мысли правильный. Находите библиотеку и прописываете ее в нужной секции.

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


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

Не совсем то , но ход мысли правильный. Находите библиотеку и прописываете ее в нужной секции.

 

Большое спасибо. А "вытащить" из этой библиотеки только то, что нужно для работы функции sprintf(), очень сложно?

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


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

Проще (и правильнее в данном случае) свой sprintf написать, чем кромсать библиотеки.

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


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

А скажите, пожалуйста, как можно указать место в памяти, куда нужно поместить код используемых в программе стандартных ANSI C функций? Например, в своей программе я использую стандартную функцию sprintf(). Как её расположить в памяти по нужному мне адресу?
Да так же, в принципе, только для начала соберите проект со всеми используемыми стандартными библ. функциями с опцией linker-listing. В map-файле надо посмотреть, какая функция на какую ссылается (т.е. вызывает) и в каком/их обектнике/ах это все лежит. А потом - так же, как в примере. Чтоб не получилось, что sprintf из sprintf.o лежит в РАМе и пашет на 50 МГц, а _sputc из _sputc.о - во флеше на 15 эффективных :).

Может, есть путь прямее, не являясь знатоком стандартов С, утверждать не берусь.

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


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

Да так же, в принципе, только для начала соберите проект со всеми используемыми стандартными библ. функциями с опцией linker-listing. В map-файле надо посмотреть, какая функция на какую ссылается (т.е. вызывает) и в каком/их обектнике/ах это все лежит. А потом - так же, как в примере. Чтоб не получилось, что sprintf из sprintf.o лежит в РАМе и пашет на 50 МГц, а _sputc из _sputc.о - во флеше на 15 эффективных :).

Может, есть путь прямее, не являясь знатоком стандартов С, утверждать не берусь.

 

 

Может это и "кривой" путь, но, похоже, это то, что от меня требуют. Спасибо :)

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


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

Хотелось бы тут увидеть какой нить обзор по внутрисхемным отладчикам для ARM7/ARM9. Задумался о выборе.

Интересует:

Число точек останова поддержанных самим отладчиком

Возможности отладчика

Глючность дров/железа

Гибкость настроек

Цена и возможность купить.

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


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

Число точек останова зависит от ядра. J-Link (MT-Link, Jet-Link) умеют добавлять точки перепрошивая флешь "на лету".

Цены можете найти сами.

Что имеется ввиду под "гибкостью" не понял. Равно как и под "возможностями".

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


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

если сравнить

J-TRACE-ARM-2M

и

J-LINK

то станет понятно чем они по возможностям отличаются,

вот только J-TRACE-ARM-2M стоит не гуманных денег :)

А точки останова умеет добавлять не отладчик, а скорее драйвер, бо он прошивку правит перед заливкой.

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


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

Доброго времени суток.

Извините если вопрос ламерский, первый раз работаю с арм.

Ситуация такая. Есть АТ91RM9200. Пустой, т.е только запаяный чип. Как мне Залить линукс в проц? Т.е нужно сначало зашить бутлоадер, затем уже прошивку с линухом? Опишите пожалуйста кому не лель поэтапно. Другого места запостить не нашел но думаю это частый вопрос новичков.

На плате rs232, DM9161E, два USB порта (хост и девайс)

Заранее спасибо.

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


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

Доброго времени суток.

Извините если вопрос ламерский, первый раз работаю с арм.

Ситуация такая. Есть АТ91RM9200. Пустой, т.е только запаяный чип. Как мне Залить линукс в проц? Т.е нужно сначало зашить бутлоадер, затем уже прошивку с линухом? Опишите пожалуйста кому не лель поэтапно. Другого места запостить не нашел но думаю это частый вопрос новичков.

На плате rs232, DM9161E, два USB порта (хост и девайс)

Заранее спасибо.

Почитать этот форум - подфорум "Отладочная плата AT91RM9200" - там найдете ответ на ваш вопрос, и все что возникнут в процессе.

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


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

Здесь полезно почитать и по ссылка оттуда пройтись

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


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

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

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

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

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

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

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

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

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

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