dch 0 7 ноября, 2008 Опубликовано 7 ноября, 2008 · Жалоба а с каким темпом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 7 ноября, 2008 Опубликовано 7 ноября, 2008 · Жалоба а с каким темпом Для компенсации вышеописанных неточностей с периодом 100 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 ноября, 2008 Опубликовано 7 ноября, 2008 · Жалоба Разгон процессора может не привести к существенному ускорению опроса пина, т.к. GPIO висит на медленной APB (два такта MCK на доступ). Еще раз замечу, что такой подход к решению задачи в корне неверен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 7 ноября, 2008 Опубликовано 7 ноября, 2008 · Жалоба Еще раз замечу, что такой подход к решению задачи в корне неверен. Я алгоритм обработки (оцифровки) сигнала сейчас изменять не могу - попросту не успею (проект надо сдать 21 ноября). Плюс ко всему этот алгоритм обсчитывали статисты, так что сложностей навал :cranky: . Реализую то, что начальство сказало. :maniac: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 9 ноября, 2008 Опубликовано 9 ноября, 2008 · Жалоба там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 9 ноября, 2008 Опубликовано 9 ноября, 2008 · Жалоба там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации 100 нс получалось ( точно не помню с какими настройками PLL, но с режимом тактирования ядра synchronous) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба там вроде ножкой невозможно щелкать быстрее чем 5MHz , 100 наносекунд это близко к локаторной дискретизации Щелкать на 5MHz примерно то же самое, что считывать на 10MHz :) Только вот по моим прикидкам должно получаться быстрее. Впрочем, это уже от программы зависит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба обычно ножки опрашиваются на какойто частоте независимой от pclk и состояние их заносится в соответсвующий регистр, поэтому практически всегда то что вы считали уже не соответсвует действительности Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба Состояние выводов должно обновляется с частотой MCK (впрочем, может и с MCK/2). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 10 ноября, 2008 Опубликовано 10 ноября, 2008 (изменено) · Жалоба To aaarrr: По поводу кеширования: 1) адреса в разделе sections - это и есть описание адресного пространства (необходимого программе, т.е. фактически ею занимаемого)? 2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до того момента, когда не придет команда lock ICache? Изменено 10 ноября, 2008 пользователем Antokha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба To aaarrr: По поводу кеширования: 1) адреса в разделе sections - это и есть описание адресного пространства (необходимого программе, т.е. фактически ею занимаемого)? 2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до того момента, когда не придет команда lock ICache? 1. Да. В первом слове хранится адрес начала раздела, во втором - адрес окончания + 1, в третьем - тип кэширования. Всей остальной памяти присваиваются атрибуты noncachable nonbufferable. 2. Да, всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба To aaarrr: Спасибо огромное. В самом начале кода есть строки: ldr r2, =2_110111110010 ; set access permissions (AP) for full access SVC/USR (11:10) Это загрузка константы записанной по адресу 110111110010 (0xDF2) или здесь должна быть сама константа. Вопрос возник потому, что в первом случае странно хранить константу в памяти, если она используется один раз, кроме, конечно, варианта с наиболее быстрым исполнением этого кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба 2) MMU в данном случае будет кешировать на автомате всё, что будет запускаться из main() до если только выталкивания не призойдет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба В самом начале кода есть строки: 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба 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}. Почему так? Что я делаю неправильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться