|
|
  |
AT91RM9200 - разбиение кода на быструю и медленную части, SDRAM и внутренняя SRAM |
|
|
|
Nov 7 2008, 18:58
|
Участник

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

|
Цитата(dch @ Nov 7 2008, 19:44)  а с каким темпом Для компенсации вышеописанных неточностей с периодом 100 нс.
|
|
|
|
|
Nov 7 2008, 19:47
|
Участник

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

|
Цитата(aaarrr @ Nov 7 2008, 22:19)  Еще раз замечу, что такой подход к решению задачи в корне неверен. Я алгоритм обработки (оцифровки) сигнала сейчас изменять не могу - попросту не успею (проект надо сдать 21 ноября). Плюс ко всему этот алгоритм обсчитывали статисты, так что сложностей навал  . Реализую то, что начальство сказало.
|
|
|
|
|
Nov 9 2008, 21:29
|
Участник

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

|
Цитата(dch @ Nov 9 2008, 22:26)  там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации 100 нс получалось ( точно не помню с какими настройками PLL, но с режимом тактирования ядра synchronous)
|
|
|
|
|
Nov 10 2008, 17:36
|
Участник

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

|
To aaarrr: По поводу кеширования: 1) адреса в разделе sections - это и есть описание адресного пространства (необходимого программе, т.е. фактически ею занимаемого)? 2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до того момента, когда не придет команда lock ICache?
Сообщение отредактировал Antokha - Nov 10 2008, 18:01
|
|
|
|
|
Nov 11 2008, 19:45
|
Участник

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

|
To aaarrr: Спасибо огромное. В самом начале кода есть строки: ldr r2, =2_110111110010 ; set access permissions (AP) for full access SVC/USR (11:10) Это загрузка константы записанной по адресу 110111110010 (0xDF2) или здесь должна быть сама константа. Вопрос возник потому, что в первом случае странно хранить константу в памяти, если она используется один раз, кроме, конечно, варианта с наиболее быстрым исполнением этого кода.
|
|
|
|
|
Nov 12 2008, 13:00
|
Участник

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

|
To aaarrr: Подправил адреса секций и оформил этот код функцией: ; 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, #(0x3 << 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 <------------------------------------- POP {LR} POP {R7} POP {R6} POP {R5} POP {R4} POP {R3} POP {R2} POP {R1} POP {R0}
BX LR ;; return sections // 1 DCD 0x21F00800 ; _SDRAM_READ_ Section 00000000; Flash DCD 0x21F03FFF ; 00100000 DCD 0xC ; 2_1100 ; wb, buffered // c03fc000 DCD 0x21F04000 ; c0000000 ; SDRAM Page 0 - _SDRAM_WRITE_ Section DCD 0x21F04FFF ; c0400000 DCD 0xC ; 2_1100 ; wb, buffered END
На команде обозначенной стрелкой виснет наглухо. В секции _SDRAM_READ_ размещен участок кода, помеченный в файле *.icf {readonly}, в секции _SDRAM_WRITE_ - соответственно {readwrite}. Почему так? Что я делаю неправильно?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|