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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> AT91RM9200 - разбиение кода на быструю и медленную части, SDRAM и внутренняя SRAM
Antokha
сообщение Oct 27 2008, 19:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-08
Из: Нижний Новгород
Пользователь №: 41 078



Имею в качестве среды среды разработки IAR 5.11 и отладочную плату AS-9200 (Argussoft) + JTAG SAM-ICE. вопрос в следующем:
1. Как содать проект в IAR-e таким образом, что несколько коротких функций (написаны ASM командами и добавлены в проект отдельными файлами) при загрузке были размещены во внутренней SRAM контроллера, а остальные функции (такие как main, функции работы с флешкой AT45DB642D, функции вывода информации на экран, и другие) были размещены в внешней SDRAM.
Функции, которые необходимо размещать в SRAM, критичны к времени выполнения, поэтому и ставиться такая задача. Все функции проекта не умещаются в SRAM. При явном указании размещения функций в файле *.icf файл прошивки контроллера весит свыше 500 мегабайт, что естественно неприемлемо wacko.gif .
Всех участников форума прошу предложить хоть какие-то варианты - мой мозг уже разрывается на куски, мысли закончились.
P.S. Вся прошивка весит где-то 30-50 кБ, поэтому варианты с установкой ОСи (любой) не предлагать - слишком высокая цена получается на реализацию платы (достаточно большое количество SDRAM).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 27 2008, 20:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Antokha @ Oct 27 2008, 22:43) *
P.S. Вся прошивка весит где-то 30-50 кБ, поэтому варианты с установкой ОСи (любой) не предлагать - слишком высокая цена получается на реализацию платы (достаточно большое количество SDRAM).

Тогда смысла нет задействовать SRAM. Если кэш включен, разницы в скорости Вы, скорее всего, не почувствуете.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 28 2008, 17:17
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



И более того, если кеш включен, перепрыгивание между SRAM и SDRAM могут запросто понизить общее быстродействие.
Go to the top of the page
 
+Quote Post
dch
сообщение Oct 28 2008, 17:40
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(sergeeff @ Oct 28 2008, 20:17) *
И более того, если кеш включен

он же не делится если влючен нет внутренней SRAM
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 28 2008, 17:56
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(dch @ Oct 28 2008, 20:40) *
он же не делится если влючен нет внутренней SRAM

Вы путаете, SRAM при включенном кэше никуда не денется.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 28 2008, 18:58
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(dch @ Oct 28 2008, 21:40) *
он же не делится если влючен нет внутренней SRAM


кеш покрывает все доступное адресное пространство процессора, а какие области делать кешируемые, какие нет - в Translation Table прописывается.
Go to the top of the page
 
+Quote Post
Antokha
сообщение Oct 28 2008, 20:14
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-08
Из: Нижний Новгород
Пользователь №: 41 078



Время перепрыгивания из функций SDRAM в функции SRAM мне не важно. Необходимо, чтобы функции расположенные в SRAM выполнялись со стабильной скоростью, которая должна быть не менее предварительной определённой. При отладке этих фунций без остального содержимого программы их выполнение по времени было на грани необходимого для нормальной работы. Надеюсь я понятно выразился. А насчёт кэша идея хорошая - попробую на днях (про Translation Table почитаю в pdf-нике на AT91RM9200).
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 28 2008, 20:22
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



про Translation Table в pdf-нике на AT91RM9200 ничего нет. Это написано в Technical Reference Manual на ARM920T, например, который можно на сайте ARM найти. Идея добиться стабильной скорости работы процедуры - идея фикс. У вас что, прерываний в системе вообще нет? Даже если вы на время вызова функции сделаете это в критической секции (с запрещенными прерываниями), то даже время запрета прерывания нестабильно по времени.
Go to the top of the page
 
+Quote Post
Antokha
сообщение Oct 28 2008, 21:29
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-10-08
Из: Нижний Новгород
Пользователь №: 41 078



Цитата(sergeeff @ Oct 29 2008, 00:22) *
про Translation Table в pdf-нике на AT91RM9200 ничего нет. Это написано в Technical Reference Manual на ARM920T, например, который можно на сайте ARM найти. Идея добиться стабильной скорости работы процедуры - идея фикс. У вас что, прерываний в системе вообще нет? Даже если вы на время вызова функции сделаете это в критической секции (с запрещенными прерываниями), то даже время запрета прерывания нестабильно по времени.


Насчет pdf спасибо. А скорость выполнения при отладке (загрузка программы через JTAG) стабильная. Если честно я даже забыл прерывания включить. Прерывание наверное будет одно - для USART-a.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 28 2008, 22:57
Сообщение #10


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(sergeeff @ Oct 28 2008, 21:58) *
кеш покрывает все доступное адресное пространство процессора, а какие области делать кешируемые, какие нет - в Translation Table прописывается.

А какой смысл в кеше на внутреннюю SRAM которая и так full speed ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2008, 08:29
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(singlskv @ Oct 29 2008, 01:57) *
А какой смысл в кеше на внутреннюю SRAM которая и так full speed ?

Без кэша будут потеряны преимущества псевдогарвадовости ARM920. Т.е. из внутренней SRAM без кэширования программа будет выполняться медленнее.

Цитата(Antokha @ Oct 28 2008, 23:14) *
Необходимо, чтобы функции расположенные в SRAM выполнялись со стабильной скоростью, которая должна быть не менее предварительной определённой. При отладке этих фунций без остального содержимого программы их выполнение по времени было на грани необходимого для нормальной работы.

Можете залочить их в кэше, тогда гарантированно не будут возникать cache-miss'ы.
Go to the top of the page
 
+Quote Post
dch
сообщение Oct 29 2008, 10:57
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(aaarrr @ Oct 28 2008, 20:56) *
Вы путаете, SRAM при включенном кэше никуда не денется.

точно? а то я начал уже забывать, недавно у меня клиент не смог из u-boot-а стартонуть програмку из внутренней SRAM. Типа написал програмульку, загрузил ее по xмодему - работает, запустил u-boot загрузил по кермиту или както еще в SRAM, дал командочку go - работает, записал во flash, установил командочку загрузить образ из flashа (тоже в SRAM) - не работает, единственное отличие по моей памяти что перед bootm включался кэш (что ядро стартонуло на максимальной скорости) а перед командой go нет. Симптоматика была такая, впрочем надо посмотреть.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 29 2008, 11:10
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Кэш на ARM920 это принадлежность ядра, использовать его в качестве обычной памяти невозможно. SRAM висит отдельно. Так что у Вашего клиента проблема в чем-то еще.
Go to the top of the page
 
+Quote Post
zhz
сообщение Oct 29 2008, 11:48
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-03-05
Пользователь №: 3 559



Цитата(dch @ Oct 29 2008, 12:57) *
точно? а то я начал уже забывать, недавно у меня клиент не смог из u-boot-а стартонуть програмку из внутренней SRAM. Типа написал програмульку, загрузил ее по xмодему - работает, запустил u-boot загрузил по кермиту или както еще в SRAM, дал командочку go - работает, записал во flash, установил командочку загрузить образ из flashа (тоже в SRAM) - не работает, единственное отличие по моей памяти что перед bootm включался кэш (что ядро стартонуло на максимальной скорости) а перед командой go нет. Симптоматика была такая, впрочем надо посмотреть.


Вот и я наступал на эти грабли.
Инвалидить кэш надо при включении в своей программе, чтобы не зависеть от того был включен кеш в bootloader-е или нет.
Go to the top of the page
 
+Quote Post
dch
сообщение Oct 29 2008, 18:08
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(zhz @ Oct 29 2008, 14:48) *
Инвалидить кэш

обычно так и делают когда есть к нему прямой доступ, иногда требуемый кусочек кода переписывают туда при включении, но в u-boot не очень много кода связанного с кэшем, потом после ресета он то, наверное, инвалидный.
По идее так должно быть. У клиента симптоматика была следующая, он дает командочку go - работает, потом кнопочкой ресетит и снова дает go он работает - программка во внутренней ram, потом выключением питания ресетит - там уже срабатывает командочка bootm - не работает. Я тормознулся , напряг память как там сделано - вроде перед bootm он включается да и после включения питания он доложен быть сброшенным.

Сообщение отредактировал dch - Oct 29 2008, 18:21
Go to the top of the page
 
+Quote Post

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

 


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


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