|
AT91RM9200 - разбиение кода на быструю и медленную части, SDRAM и внутренняя SRAM |
|
|
|
Oct 27 2008, 19:43
|
Участник

Группа: Участник
Сообщений: 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 мегабайт, что естественно неприемлемо  . Всех участников форума прошу предложить хоть какие-то варианты - мой мозг уже разрывается на куски, мысли закончились. P.S. Вся прошивка весит где-то 30-50 кБ, поэтому варианты с установкой ОСи (любой) не предлагать - слишком высокая цена получается на реализацию платы (достаточно большое количество SDRAM).
|
|
|
|
|
 |
Ответов
|
Nov 6 2008, 18:52
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 6 2008, 19:57
|
Гуру
     
Группа: Свой
Сообщений: 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
Адреса только переделайте под свою систему.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|