Jump to content

    

Для пользующихся 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)

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

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

 

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

Edited by Штефан Виталий

Share this post


Link to post
Share on other sites
Для пользующихся 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(). Как её расположить в памяти по нужному мне адресу?

Share this post


Link to post
Share on other sites
Не совсем то , но ход мысли правильный. Находите библиотеку и прописываете ее в нужной секции.

 

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

Share this post


Link to post
Share on other sites

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

Share this post


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

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

Share this post


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

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

 

 

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

Share this post


Link to post
Share on other sites

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

Интересует:

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

J-TRACE-ARM-2M

и

J-LINK

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites
Доброго времени суток.

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

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this