Перейти к содержанию
    

AT91RM9200 - разбиение кода на быструю и медленную части

а с каким темпом

Для компенсации вышеописанных неточностей с периодом 100 нс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разгон процессора может не привести к существенному ускорению опроса пина, т.к. GPIO висит на медленной APB (два такта MCK на доступ).

 

Еще раз замечу, что такой подход к решению задачи в корне неверен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще раз замечу, что такой подход к решению задачи в корне неверен.

Я алгоритм обработки (оцифровки) сигнала сейчас изменять не могу - попросту не успею (проект надо сдать 21 ноября). Плюс ко всему этот алгоритм обсчитывали статисты, так что сложностей навал :cranky: . Реализую то, что начальство сказало. :maniac:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации

100 нс получалось ( точно не помню с какими настройками PLL, но с режимом тактирования ядра synchronous)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации

Щелкать на 5MHz примерно то же самое, что считывать на 10MHz :)

 

Только вот по моим прикидкам должно получаться быстрее. Впрочем, это уже от программы зависит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To aaarrr:

По поводу кеширования: 1) адреса в разделе sections - это и есть описание адресного пространства (необходимого программе, т.е. фактически ею занимаемого)?

2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до того момента, когда не придет команда lock ICache?

Изменено пользователем Antokha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To aaarrr:

По поводу кеширования: 1) адреса в разделе sections - это и есть описание адресного пространства (необходимого программе, т.е. фактически ею занимаемого)?

2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до того момента, когда не придет команда lock ICache?

1. Да. В первом слове хранится адрес начала раздела, во втором - адрес окончания + 1, в третьем - тип кэширования. Всей остальной памяти присваиваются атрибуты noncachable nonbufferable.

2. Да, всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To aaarrr: Спасибо огромное.

В самом начале кода есть строки:

ldr r2, =2_110111110010 ; set access permissions (AP) for full access SVC/USR (11:10)

Это загрузка константы записанной по адресу 110111110010 (0xDF2) или здесь должна быть сама константа. Вопрос возник потому, что в первом случае странно хранить константу в памяти, если она используется один раз, кроме, конечно, варианта с наиболее быстрым исполнением этого кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до

если только выталкивания не призойдет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В самом начале кода есть строки:

ldr r2, =2_110111110010 ; set access permissions (AP) for full access SVC/USR (11:10)

Это загрузка константы записанной по адресу 110111110010 (0xDF2) или здесь должна быть сама константа.

Это псевдооператор для загрузки длинной константы. Ассемблером трансформируется в инструкцию ldr r2, [PC, #N], по адресу PC+N+8 записана сама константа 0xDF2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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}. Почему так? Что я делаю неправильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...