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

 
 
> 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
 
Start new topic
Ответов
sergeeff
сообщение Nov 6 2008, 06:58
Сообщение #2


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

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



Если сейчас функции работают на пределе необходимой скорости:
1. Выбран не тот процессор.
2. Плохо написаны функции.
3. При правильно инициированных I- и D-cache скорость работы повысится минимум в 3-5 раз.
4. В реально работающей системе скорость работы функции не может быть абсолютно стабильной.
5. Если скорость обработки "впритык", когда же процессор будет делать еще что-то полезное?
Go to the top of the page
 
+Quote Post
Antokha
сообщение Nov 6 2008, 18:52
Сообщение #3


Участник
*

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



\
Цитата(sergeeff @ Nov 6 2008, 09:58) *
Если сейчас функции работают на пределе необходимой скорости:
1. Выбран не тот процессор.
2. Плохо написаны функции.
4. В реально работающей системе скорость работы функции не может быть абсолютно стабильной.
5. Если скорость обработки "впритык", когда же процессор будет делать еще что-то полезное?

На момент отладки я кеши не включал, так как не видел необходимости в этом. Скорость обработки почти "впритык", небольшой запас есть (примерно 1-2 команды NOP. ею я релизую задержки,) хотелось бы иметь запас побольше. Во время выполнения этих двух функций контроллеру разрешается выполнение только их и ничего более.
Насчёт пункта 1 - до этого приложение было реализовано на микроконтроллере SX52 фирмы Scenix, без компенсации вышеописанных неточностей его производительности хватало (по сравнению с at91rm9200 он быстрее работает с выводами - быстрее осуществляется и чтение и установка выводов в нужное состояние). Для компенсации неточностей "оцифруемого' сигнала его производительности не хватало, я решил взять что-то побыстрее.
\
Цитата(sergeeff @ Nov 6 2008, 09:58) *
3. При правильно инициированных I- и D-cache скорость работы повысится минимум в 3-5 раз.

Это окрыляет, надеюсь когда я их таки включу так и будет.

Цитата(aaarrr @ Nov 6 2008, 09:08) *
А Вы учитывали тот факт, что процессор в режиме FastBus работает на частоте шины?

Нет не знал, какая имеется в виду частота шины? PCK идущая с выхода PLLA, у меня 179,... МГц, точно не помню.
Цитата(aaarrr @ Nov 6 2008, 09:08) *
Почитайте документ внимательно. Могу выложить пример инициализации на асме, если это облегчит жизнь.

Собственно я не разобрался в следующем:
- что представляют собой ячейки таблицы (я так понял что вроде бы это части абсолютных адресов),
- мне нужно выполнять эти две функции со скоростью не менее чем при отладке во внутренней SRAM с PCK = 179,... МГц.
А насчёт примера это бы очень помогло, если не сильно это вас затруднит.

Сообщение отредактировал Antokha - Nov 6 2008, 19:44
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 6 2008, 19:57
Сообщение #4


Гуру
******

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



Цитата(Antokha @ Nov 6 2008, 21:52) *
Насчёт пункта 1 - до этого приложение было реализовано на микроконтроллере SX52 фирмы Scenix, без компенсации вышеописанных неточностей его производительности хватало (по сравнению с at91rm9200 он быстрее работает с выводами - быстрее осуществляется и чтение и установка выводов в нужное состояние). Для компенсации неточностей "оцифруемого' сигнала его производительности не хватало, я решил взять что-то побыстрее.

AT91RM9200 и другие подобные контроллеры принципиально не подходят для решения таких задач. Используйте программируемую логику, если нужно получить жесткие времянки.

Цитата(Antokha @ Nov 6 2008, 21:52) *
Нет не знал, какая частота шины? PCK идущая с выхода PLLA (у меня 179,... МГц)

Это Master Clock (MCK), обычно PCK/2. PCK без дополнительных телодвижений процессором использоваться не будет.

Цитата(Antokha @ Nov 6 2008, 21:52) *
- что представляют собой ячейки таблицы (я так понял что вроде бы это части абсолютных адресов),

Объяснять "на пальцах" будет долго. Лучше найдите время изучить документацию.

Цитата(Antokha @ Nov 6 2008, 21:52) *
А насчёт примера это бы очень помогло, если не сильно это вас затруднит.

Пожалуйста:
CODE

; ***************************************************************************
; *

ttb_first_level EQU 0xc03fc000


; ***************************************************************************
; * Cache and MMU Configuration

[ {TRUE}
ldr r0, =ttb_first_level ; set start of Translation Table base (16k Boundary)
mcr p15, 0x00, r0, c2, c0, 0x00 ; write to CP15 register 2
;
; Create translation table for flat mapping
; Top 12 bits of VA is pointer into table
; Create 4096 entries from 000xxxxx to fffxxxxx
;
mov r1, #0x00 ; loop counter
ldr r2, =2_110111110010 ; set access permissions (AP) for full access SVC/USR (11:10)
; set for domain 15 (8:5)
; must be 1 (4)
; set non cachable non bufferable (CB) (3:2)
; set for 1Mb section (1:0)
init_ttb0
orr r3, r2, r1, lsl #0x14
ldr r4, =sections
init_ttb1
ldr r5, [r4], #0x04
tst r5, #0x01
bne init_ttb2
cmp r1, r5, lsr #0x14
addlo r4, r4, #0x08
blo init_ttb1
ldr r5, [r4], #0x04
cmp r1, r5, lsr #0x14
addhs r4, r4, #0x04
bhs init_ttb1
ldr r5, [r4]
orr r3, r3, r5
init_ttb2
str r3, [r0, r1, lsl #0x02]
add r1, r1, #0x01
cmp r1, #0x1000
blo init_ttb0
;
; Init domains
;
mov r0, #(2_01 << 0x1e) ; must define behaviour for domain 15 (31:30), set client
mcr p15, 0x00, r0, c3, c0, 0x00 ; write to CP15 register 5
;
; Set global core configurations
;
mrc p15, 0x00, r0, c1, c0, 0x00 ; read CP15 register 1 into r0

orr r0, r0, #(0x01 << 0x0c) ; enable I Cache
orr r0, r0, #(0x01 << 0x02) ; enable D Cache
orr r0, r0, #(2_11 << 0x1e) ; enable asynchronous clocking mode
orr r0, r0, #0x01 ; enable MMU
;
; Additional configuration options
;
; orr r0, r0, #(0x01 << 0x0e) ; enable Round Robin cache replacement
; orr r0, r0, #(0x01 << 0x0d) ; enable Hi Vectors
orr r0, r0, #(0x01 << 0x01) ; enable data address alignment checking

mcr p15, 0x00, r0, c1, c0, 0x00 ; write cp15 register 1
]

; ***************************************************************************
; *

sections
DCD 0x00000000 ; Flash
DCD 0x00100000
DCD 2_1100 ; wb, buffered

DCD 0xc0000000 ; SDRAM Page 0
DCD 0xc0400000
DCD 2_1100 ; wb, buffered

DCD 0xc4000000 ; SDRAM Page 1
DCD 0xc4400000
DCD 2_0100 ; noncached, buffered

DCD 0xc8000000 ; SDRAM Page 2
DCD 0xc8400000
DCD 2_0100 ; noncached, buffered
; DCD 2_1100 ; wb, buffered

DCD 0xcc000000 ; SDRAM Page 3
DCD 0xcc400000
DCD 2_1100 ; wb, buffered

DCD 0x00000001 ; END

; ***************************************************************************
; *

END

Адреса только переделайте под свою систему.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Antokha   AT91RM9200 - разбиение кода на быструю и медленную части   Oct 27 2008, 19:43
- - aaarrr   Цитата(Antokha @ Oct 27 2008, 22:43) P.S....   Oct 27 2008, 20:24
- - sergeeff   И более того, если кеш включен, перепрыгивание меж...   Oct 28 2008, 17:17
|- - dch   Цитата(sergeeff @ Oct 28 2008, 20:17) И б...   Oct 28 2008, 17:40
|- - aaarrr   Цитата(dch @ Oct 28 2008, 20:40) он же не...   Oct 28 2008, 17:56
||- - dch   Цитата(aaarrr @ Oct 28 2008, 20:56) Вы пу...   Oct 29 2008, 10:57
||- - zhz   Цитата(dch @ Oct 29 2008, 12:57) точно? ...   Oct 29 2008, 11:48
||- - dch   Цитата(zhz @ Oct 29 2008, 14:48) Инвалиди...   Oct 29 2008, 18:08
|- - sergeeff   Цитата(dch @ Oct 28 2008, 21:40) он же не...   Oct 28 2008, 18:58
|- - singlskv   Цитата(sergeeff @ Oct 28 2008, 21:58) кеш...   Oct 28 2008, 22:57
|- - aaarrr   Цитата(singlskv @ Oct 29 2008, 01:57) А к...   Oct 29 2008, 08:29
- - Antokha   Время перепрыгивания из функций SDRAM в функции SR...   Oct 28 2008, 20:14
- - sergeeff   про Translation Table в pdf-нике на AT91RM9200 нич...   Oct 28 2008, 20:22
|- - Antokha   Цитата(sergeeff @ Oct 29 2008, 00:22) про...   Oct 28 2008, 21:29
- - aaarrr   Кэш на ARM920 это принадлежность ядра, использоват...   Oct 29 2008, 11:10
- - Antokha   Всем откликнувшимся огромное спасибо! ИТОГО: п...   Nov 4 2008, 16:44
- - sergeeff   Читать тут : http://infocenter.arm.com/help/topic/...   Nov 4 2008, 19:48
- - Antokha   Спасибо за ссылку. Согласно ей в регистр TTB нужно...   Nov 5 2008, 18:23
|- - aaarrr   Цитата(Antokha @ Nov 5 2008, 21:23) Спаси...   Nov 5 2008, 18:39
- - sergeeff   А самое главное, после всего этого at91rm9200, нак...   Nov 5 2008, 19:44
- - Antokha   Я так думаю, что мне нужен только ICache из-за тог...   Nov 5 2008, 19:49
- - sergeeff   Я уже говорил, что "вылизывание" времени...   Nov 5 2008, 20:11
- - Antokha   Я их собственно не "вылизывал". Просто н...   Nov 5 2008, 20:53
- - aaarrr   Цитата(Antokha @ Nov 5 2008, 22:49) Я так...   Nov 6 2008, 06:08
- - Antokha   Огромное спасибо за пример.   Nov 7 2008, 14:21
|- - dch   Вы случайно не внешнее ацп подвесили на этот чудн...   Nov 7 2008, 15:56
|- - Antokha   Цитата(dch @ Nov 7 2008, 18:56) Вы случай...   Nov 7 2008, 16:35
|- - dch   а с каким темпом   Nov 7 2008, 16:44
|- - Antokha   Цитата(dch @ Nov 7 2008, 19:44) а с каким...   Nov 7 2008, 18:58
- - aaarrr   Разгон процессора может не привести к существенном...   Nov 7 2008, 19:19
|- - Antokha   Цитата(aaarrr @ Nov 7 2008, 22:19) Еще ра...   Nov 7 2008, 19:47
|- - dch   там вроде ножкой невозможно щелкать быстрее чем 5M...   Nov 9 2008, 19:26
|- - Antokha   Цитата(dch @ Nov 9 2008, 22:26) там вроде...   Nov 9 2008, 21:29
|- - aaarrr   Цитата(dch @ Nov 9 2008, 22:26) там вроде...   Nov 10 2008, 06:17
|- - dch   обычно ножки опрашиваются на какойто частоте незав...   Nov 10 2008, 12:47
- - aaarrr   Состояние выводов должно обновляется с частотой MC...   Nov 10 2008, 12:58
- - Antokha   To aaarrr: По поводу кеширования: 1) адреса в раз...   Nov 10 2008, 17:36
|- - aaarrr   Цитата(Antokha @ Nov 10 2008, 20:36) To a...   Nov 10 2008, 19:50
|- - dch   Цитата(Antokha @ Nov 10 2008, 20:36) 2) M...   Nov 12 2008, 02:00
- - Antokha   To aaarrr: Спасибо огромное. В самом начале кода е...   Nov 11 2008, 19:45
|- - aaarrr   Цитата(Antokha @ Nov 11 2008, 22:45) В са...   Nov 12 2008, 06:51
- - Antokha   To aaarrr: Подправил адреса секций и оформил этот ...   Nov 12 2008, 13:00
|- - aaarrr   Цитата(Antokha @ Nov 12 2008, 16:00) Что ...   Nov 12 2008, 14:07
|- - Antokha   Цитата(aaarrr @ Nov 12 2008, 17:07) Здесь...   Nov 12 2008, 21:46
- - DamienRice   Привет. На сколько я помню я делал отдельный сегме...   Nov 12 2008, 14:50
|- - Antokha   Цитата(DamienRice @ Nov 12 2008, 17:50) П...   Nov 12 2008, 20:15
- - aaarrr   Должно быть: Цитатаsections // 1 DCD 0x21F0000...   Nov 13 2008, 07:03
- - sergeeff   Цитата(aaarrr @ Nov 13 2008, 11:03) Должн...   Nov 13 2008, 16:13
- - aaarrr   Цитата(sergeeff @ Nov 13 2008, 19:13) 1. ...   Nov 13 2008, 17:33


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:13
Рейтинг@Mail.ru


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