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

 
 
> ARM c TFT контроллером и RAM > 2M
Шаманъ
сообщение Apr 25 2016, 14:57
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Приветствую всех!

Собственно вопрос, а что есть из доступных АРМов к которым можно подключить WVGA ТФТ, и чтобы внутренней памяти хватило на буфер (1.5М)+осталось еще для работы, и в корпусе QFP?

Из того, что знаю серия Renesas RZ/A1, и как бы все...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Шаманъ
сообщение May 24 2016, 06:10
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



В чем проще получится плата с внешним контроллером мне не совсем понятно. ИМХО, имея на борту DMA2D и TFT интерфейс (stm32f4xx/f7xx) смысл во внешнем контроллере исчезающе мал (ну разве что он уже есть на борту у TFT модуля).

P.S. Почитал доки на Nuvoton - кое-что понравилось, но очень многое и не понравилось sad.gif Потом еще обнаружил, что шаг ног у него 0.4мм и совсем "обрадовался". Ну и отсутствие Erratы выглядит очень подозрительно...

Сообщение отредактировал Шаманъ - May 24 2016, 06:13
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 24 2016, 08:11
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ May 24 2016, 12:10) *
Ну и отсутствие Erratы выглядит очень подозрительно...

Она не отсутствует. У него вся документация - под NDA. Запросите официально. И выложите потом сюда biggrin.gif
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 24 2016, 08:26
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ May 24 2016, 11:11) *
Она не отсутствует. У него вся документация - под NDA. Запросите официально. И выложите потом сюда biggrin.gif

Кто ищет тот всегда найдет wink.gif Я нашел почти все - Datasheet, Programming Manual, Technical Reference Manual, и еще немного аппнот, схемы и даже печатку отладочной платы, и еще немного небольших документов типа Hardware Design Manual и т.п.

Посмотрел - мне многое не понравилось, как сделано.
Go to the top of the page
 
+Quote Post
mantech
сообщение May 24 2016, 19:06
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Шаманъ @ May 24 2016, 11:26) *
Посмотрел - мне многое не понравилось, как сделано.


Например что, кроме шага 0.4?
Для решения этой задачи есть модули содимм на основе этого чипа.
Больше недостатков не заметил, кроме старого и медленного проца.

Цитата(Шаманъ @ May 23 2016, 23:43) *
Еще один вариант - у нас продают недорогие модули (SOM) на i.MX287 (с 128MB DDR2 памяти на плате). По периферии он мне весьма неплохо подходит, ядро правда старовато и JTAG на плате не выведен...


Смысл? Этот камень уже скоро с производства наверно снимут. Берите уж тогда SOM на imx6s biggrin.gif
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 24 2016, 20:01
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(mantech @ May 24 2016, 22:06) *
Например что, кроме шага 0.4?

Например, то, что нет DMA на SPI и UARTах. Таймеры слабоваты. Нет FPU, про ядро Вы уже написали. Три напряжения питания.

Цитата
Смысл?

Ну он побыстрее будет и без проблем с корпусом.
Цитата
Этот камень уже скоро с производства наверно снимут.

Да всех их когда-нибудь снимут sm.gif Его 10лет будут выпускать, выпустили его когда - лет 5 назад наверное, так что 5лет или около того еще есть, вон новые камни i.mx7 обещают только 5лет выпускать.
Цитата
Берите уж тогда SOM на imx6s biggrin.gif

imx6s рассматривал, но у него часть доков под NDA, весьма важная. Да и он такой не слишком нужен в этом проекте. Если бы переползал на Линукс, то точно остановился бы на нем.
Go to the top of the page
 
+Quote Post
mantech
сообщение May 24 2016, 20:47
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Шаманъ @ May 24 2016, 23:01) *
imx6s рассматривал, но у него часть доков под NDA, весьма важная.


Излазил его наверно больше, чем все здесь на форуме biggrin.gif , но кроме видеокорок все доки есть, изменил параметры sdma, чтоб работал, как dma2d, 3D вообще без надобности, остальное все было.
Ну и проц и видеоблок в нем на порядок круче, чем все стм и иже с ними..

Цитата(Шаманъ @ May 24 2016, 23:01) *
Например, то, что нет DMA на SPI и UARTах. Таймеры слабоваты. Нет FPU, про ядро Вы уже написали. Три напряжения питания.


FPU - да нет так нет..
С уартом можно использовать фифо "Separate receive / transmit 64/16 bytes entry FIFO for data payloads"

С спи - даже фифо не сделали - неуд!

ЗЫ. Это все-таки считается application processor, поэтому уж что есть laughing.gif Ну и usb типа EHCI - это совсем неплохо...
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2016, 06:03
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mantech @ May 25 2016, 02:47) *
С спи - даже фифо не сделали - неуд!

Почему не сделали?:
Configurable bit length of a transaction from 1 to 32-bit and can be configured as burst mode, totally128-bit can be transmitted at one time
128 бит - какое-никакое но FIFO. В STM32 и такого нет sm.gif

Цитата(Шаманъ @ May 25 2016, 11:59) *
Потому, что по тестам (на сахаре тестировали как-то) у него выходило 5MFLOPS, а у stm32f4 32MFLOPS - FPU это сила (если конечно плавающая точка нужна). На целочисленных операциях наверное Nuvoton немного быстрее будет, но stm32f7xx (Cortex-M7) уже будет лучше с любой стороны.

Понятно что программная эмуляция будет гораздо медленнее аппаратного FPU! Что тут тестировать? Странно ещё что такая маленькая разница всего в 6 раз.
А вот насчёт "любой стороны" я бы не был так категоричен.
Какой размер кеша на stm32f7xx? А с какой частотой работает flash программ у него и какова ширина шины выборки команд из flash программ?
А каково время входа в прерывание на stm32f7xx?
sm.gif
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 25 2016, 06:29
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ May 25 2016, 09:03) *
Почему не сделали?:
Configurable bit length of a transaction from 1 to 32-bit and can be configured as burst mode, totally128-bit can be transmitted at one time
128 бит - какое-никакое но FIFO.

Это никак не FIFO - скорее извращенный DMA (на 4ре слова sm.gif). stm32 запросто может такое делать даже древние stm32f1xx. Единственно, что хорошо у Нувотоновского SPI это возможность задать произвольную длину "слова". У меня, например, с одним из девайсов обмен ведется 24битными словами и в нынешней реализации у STM это очень неудобно.

Цитата
А вот насчёт "любой стороны" я бы не был так категоричен.
Какой размер кеша на stm32f7xx?

4K+4K, но у него еще есть ITCM (16K) и DTCM (64K), а еще есть 256K быстрого ОЗУ. Для большинства решаемых задач требующих максимальной производительности ядра это более выгодная конфигурация.

Цитата
А с какой частотой работает flash программ у него и какова ширина шины выборки команд из flash программ?

ITCM RAM работает на частоте ядра sm.gif, флеш 256битный. В случае "промаха" потребуется 8циклов (на частоте 216МГц), чтобы вычитать данные из флеша, если ART не промахивается, то исполнение идет без задержек.

От меня встречный вопрос - сколько потребуется циклов Нувотону, чтобы вычитать данные с произвольного адреса из DDR2 памяти работающей на 150МГц? А если учесть, что по той же шине данные скармливаются на контроллер LCD и обрабатываются DMA2D, то все станет очень грустно.

В stm32f7xx/f4xx такая архитектура, что можно минимизировать задержки из-за обращения ядра/DMA2D/LTDC к одним и тем же интерфейсам/шинам.

Цитата
А каково время входа в прерывание на stm32f7xx?

У Cortex-Mx по этой части все будет много лучше ARM9. Фактически линейка Cortex-Mx создавалась с учетом минимизации отклика на прерывания.

Сообщение отредактировал Шаманъ - May 25 2016, 06:31
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2016, 06:54
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ May 25 2016, 12:29) *
Это никак не FIFO - скорее извращенный DMA (на 4ре слова sm.gif).

Почему это? Вполне себе обычный FIFO.

Цитата(Шаманъ @ May 25 2016, 12:29) *
От меня встречный вопрос - сколько потребуется циклов Нувотону, чтобы вычитать данные с произвольного адреса из DDR2 памяти работающей на 150МГц? А если учесть, что по той же шине данные скармливаются на контроллер LCD и обрабатываются DMA2D, то все станет очень грустно.

У Нувотона кроме кеша кода есть кеш данных, который размером 16К, который сгладит проблемы с доступом к коду и данным в одной области RAM.
А вот что будет когда Вы код разместите в "256K быстрого ОЗУ" откуда и данные надо выбирать.
У Nuvoton тоже есть отдельная SRAM, где можно разместить быстрые данные, чтобы они не мешали выборке команд.

Размер кеша в 4 раза больше + частота почти в 1.5 раза выше - я бы в большинстве задач (не связанных с float) поставил на Nuvoton, а не на stm32f7xx.
Да и float часто маловато, нужен double, а тогда преимущество от аппаратного FPU полностью пропадает.

Цитата(Шаманъ @ May 25 2016, 12:29) *
У Cortex-Mx по этой части все будет много лучше ARM9. Фактически линейка Cortex-Mx создавалась с учетом минимизации отклика на прерывания.

Правда что-ли? sm.gif
А то что для входа/выхода в прерывание в Cortex-M необходимо как минимум сохранить/восстановить 8 слов на стеке, в то время как ARM9 для входа в прерывание просто переключает режим CPU.
Если нужна очень быстрая реакция на какое-то прерывание, то ARM9 для этого гораздо лучше подходит с его системой прерываний.
Если нужны вложенные прерывания или переключение контекстов, то здесь ARM9 хуже конечно.

Да и вообще - у ARM9 есть огромный плюс перед Cortex-M - это полноценный MMU. Позволяющий делать гибкую защиту памяти. Мне этого очень не хватает в Cortex-M.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 25 2016, 08:25
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ May 25 2016, 09:54) *
Почему это? Вполне себе обычный FIFO.

FIFO это когда Вы пишите в один и тот же регистр, а данные уходят в порядке записи. А здесь четыре отдельных регистра, так что на FIFO никак не тянет.


Цитата
У Нувотона кроме кеша кода есть кеш данных, который размером 16К, который сгладит проблемы с доступом к коду и данным в одной области RAM.

Я же написал 4К+4К - у stm32f7xx тоже есть кэш данных. Кроме того код у Cortex-M7 скорее всего будет компактнее.

Цитата
А вот что будет когда Вы код разместите в "256K быстрого ОЗУ" откуда и данные надо выбирать.
У Nuvoton тоже есть отдельная SRAM, где можно разместить быстрые данные, чтобы они не мешали выборке команд.

А Вы что не в курсе, что Cortex-Mx как правило быстрее работают из флеша и никто в обычном ОЗУ код не размещает. Для этого есть ITCM на отдельной шине.

Цитата
Размер кеша в 4 раза больше + частота почти в 1.5 раза выше - я бы в большинстве задач (не связанных с float) поставил на Nuvoton, а не на stm32f7xx.

Размер кэша больше в 4 раза, а SRAM меньше почти в шесть раз, плюс у stm32f7xx есть ITCM/DTCM (это может быть часто даже лучше кэша). Частота в 1.5 раза выше, но Cortex-M7 выдает 2.14DMIPS/MHz, а ARM9 только 1.1MIPS/MHz.

Цитата
А то что для входа/выхода в прерывание в Cortex-M необходимо как минимум сохранить/восстановить 8 слов на стеке, в то время как ARM9 для входа в прерывание просто переключает режим CPU.

А то, что ARM9 не умеет прерывать load/stor multiple и подобные инструкции (в принципе этого уже достаточно, чтобы максимальное время было у ARM9 больше), не умеет делать tail-chaining, не умеет обрабатывать late-arriving? Да и регистры обычно нужны в прерывании. Сейчас начнете про FIQ рассказывать, но как правило его можно либо к какому-то одному источнику подключить, либо придется анализировать флаги от кого прерывание - думаете быстрее выйдет? В общем случае нет.

Цитата
Если нужна очень быстрая реакция на какое-то прерывание, то ARM9 для этого гораздо лучше подходит с его системой прерываний.

Ой ли...

Цитата
Да и вообще - у ARM9 есть огромный плюс перед Cortex-M - это полноценный MMU. Позволяющий делать гибкую защиту памяти. Мне этого очень не хватает в Cortex-M.

Вот объясните, если сторонний код (который может убить систему) у меня не запускается, а все ПО написано мною зачем мне ММУ?

Сообщение отредактировал Шаманъ - May 25 2016, 08:28
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2016, 09:03
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ May 25 2016, 14:25) *
FIFO это когда Вы пишите в один и тот же регистр, а данные уходят в порядке записи. А здесь четыре отдельных регистра, так что на FIFO никак не тянет.

FIFO - это не количество регистров, это буфер, служащий для уменьшения кол-ва прерываний/DMA-транзакций. Вне зависимости от того как устроена запись в него.

Цитата(Шаманъ @ May 25 2016, 14:25) *
Размер кэша больше в 4 раза, а SRAM меньше почти в шесть раз, плюс у stm32f7xx есть ITCM/DTCM (это может быть часто даже лучше кэша). Частота в 1.5 раза выше, но Cortex-M7 выдает 2.14DMIPS/MHz, а ARM9 только 1.1MIPS/MHz.

Да ну?! Неужто Cortex-M уже каждый такт умеет 2 с лишним команды выполнять? beer.gif
Меньше читайте рекламных буклетов и больше смотрите систему команд. Что ARM9 что Cortex-M в части наиболее употребительных команд - все однотактовые и примерно одинаковые.
Вот в части всяких сложных а-ля DSP-расширений - там есть разница. Только сколько такого кода в реальных проектах?

Цитата(Шаманъ @ May 25 2016, 14:25) *
Сейчас начнете про FIQ рассказывать, но как правило его можно либо к какому-то одному источнику подключить, либо придется анализировать флаги от кого прерывание - думаете быстрее выйдет? В общем случае нет.

Быстрее конечно. Так как не надо ни сохранять регистры, ни грузить рабочие переменные/указатели. Огромный выигрыш.
И очень часто у меня бывает, что в изделии есть один источник высокочастотных прерываний, которые надо обрабатывать как можно быстрее. Не много, а всего один. И ARM7/9 здесь выигрывает значительно.

Цитата(Шаманъ @ May 25 2016, 14:25) *
Вот объясните, если сторонний код (который может убить систему) у меня не запускается, а все ПО написано мною зачем мне ММУ?

Ну если Вы только Hello world пишете, то определённо не нужно. А у меня бывают проекты по нескольку десятков тысяч строк. Да ещё как правило несколько человек пишут.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 25 2016, 10:19
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ May 25 2016, 12:03) *
FIFO - это не количество регистров, это буфер, служащий для уменьшения кол-ва прерываний/DMA-транзакций. Вне зависимости от того как устроена запись в него.

FIFO это не либой буфер, а это буфер организованный особенным образом (не думал, что нужно объяснять), и 4ре отдельных регистра с произвольным доступом это может быть что угодно но не FIFO.

Цитата
Да ну?! Неужто Cortex-M уже каждый такт умеет 2 с лишним команды выполнять? beer.gif

Качаем http://infocenter.arm.com/help/topic/com.a...rtex_m7_trm.pdf
Читаем:
Цитата
The processor has an in-order super-scalar pipeline that means
many instructions can be dual-issued, including load/load and load/store instruction pairs
because of multiple memory interfaces


Также читаем:
http://infocenter.arm.com/help/index.jsp?t....faqs/4160.html
Цитата
The maximum performance of the ARM9 family is 1.1 Dhrystone VAX MIPS per MHz.
These figures assume ARM code running from 32-bit wide, zero wait-state memory. If there are wait-states, or (for cores with caches) the caches are disabled, then the performance figures will be lower.


Аналогичную цифру для stm32f7xx я уже приводил выше - 2.14DMIPS/MHz можете посмотреть сами у STM в доках.

Цитата
Быстрее конечно. Так как не надо ни сохранять регистры, ни грузить рабочие переменные/указатели. Огромный выигрыш.

Да огромный выигрыш, как же. Если основная программа выполняет инструкцию с загрузкой/выгрузкой нескольких регистров (а их может быть и 10, и больше), то пока она не закончится Вы даже не сможете начать обрабатывать прерывание. При этом стек будет лежать в кэшируемой области по-любому (а можно и в DTCM положить wink.gif ), а вот загрузка-выгрузка может производиться и в некэшируемую область со всеми последствиями.

Цитата
Ну если Вы только Hello world пишете, то определённо не нужно. А у меня бывают проекты по нескольку десятков тысяч строк. Да ещё как правило несколько человек пишут.

Ну в том проекте который собирается переезжать на сегодняшний день около 20тыс. строк, правда это не только код для обсуждаемого ARMа (там еще есть двухядерный DSP sm.gif) - чуть больше Hello word laughing.gif

Вам если и нужно, то MPU, а не MMU. MMU нужно если Вы собрались виртуальные адресные пространства организовывать и подобные вещи. Обычно это нужно когда будут запускаться сторонние программы - т.е. речь о совсем других системах. Кстати Cortex-M7 может быть с MPU wink.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2016, 11:12
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ May 25 2016, 16:19) *
Аналогичную цифру для stm32f7xx я уже приводил выше - 2.14DMIPS/MHz можете посмотреть сами у STM в доках.

Вот типичный код для M4:
Код
LDRB     R2,[R1, #+0]    
STRB     R2,[R0, #+0]    
LDRB     R2,[R1, #+1]    
STRB     R2,[R0, #+1]    
LDRB     R2,[R1, #+2]    
STRB     R2,[R0, #+2]    
LDRB     R2,[R1, #+3]    
SUBS     R2,R2,#+1        
STRB     R2,[R0, #+3]    
LDRB     R2,[R1, #+4]    
SUBS     R2,R2,#+1        
STRB     R2,[R0, #+4]    
MOVW     R2,#+2011        
LDRB     R1,[R1, #+5]    
ADD      R1,R1,#+2000    
CMP      R1,R2            
IT       CC              
ADDCC    R1,R1,#+100      
STRH     R1,[R0, #+6]    
BX       LR

За сколько тактов выполнится на M7 и на ARM9? Считая что нет ожиданий памяти и т.п. Правильно - примерно одинаково.
Всё эти DMIPS-ы достигаются на сложных а-ля DSP командах, выполняющих несколько операций за команду. В обычном коде (не процедуры сигнальной обработки) такхи команд встречается оч. мало.
А такой код будет выполняться быстрее на CPU с большей тактовой.
Или M7 сможет автоматически запараллелить выполнение каких-то команд из этого кода?

Цитата(Шаманъ @ May 25 2016, 16:19) *
Да огромный выигрыш, как же. Если основная программа выполняет инструкцию с загрузкой/выгрузкой нескольких регистров (а их может быть и 10, и больше), то пока она не закончится Вы даже не сможете начать обрабатывать прерывание.

И что? Ну пускай не может прервать. Только это всего одна команда.
А Cortex-M на вход/выход потратит одну такую операцию на вход (8 сохранений контекста),
потом в ISR надо загрузить как минимум один указатель да рабочую область ОЗУ с переменными, загрузить все переменные, перед завершением все переменные выгрузить (если нужно), восстановить контекст (8 чтений). Разницу ощущаете?

Цитата(Шаманъ @ May 25 2016, 16:19) *
Вам если и нужно, то MPU, а не MMU. MMU нужно если Вы собрались виртуальные адресные пространства организовывать и подобные вещи. Обычно это нужно когда будут запускаться сторонние программы - т.е. речь о совсем других системах. Кстати Cortex-M7 может быть с MPU wink.gif

MPU у меня везде используется, но он слишком слаб: всего 8 регионов, минимальная гранулярность 32 байта (вроде) и регионы должны быть выровнены на границы кратные размеру. Это очень сильно сокращает возможности защиты. MMU не только для виртуализации, он и по защите гораздо более гибок. И кешем данных можно управлять удобнее с помощью него.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение May 25 2016, 12:31
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(jcxz @ May 25 2016, 14:12) *
Вот типичный код для M4:
Код
LDRB     R2,[R1, #+0]    
STRB     R2,[R0, #+0]    
LDRB     R2,[R1, #+1]    
STRB     R2,[R0, #+1]    
LDRB     R2,[R1, #+2]    
STRB     R2,[R0, #+2]    
LDRB     R2,[R1, #+3]    
SUBS     R2,R2,#+1        
STRB     R2,[R0, #+3]    
LDRB     R2,[R1, #+4]    
SUBS     R2,R2,#+1        
STRB     R2,[R0, #+4]    
MOVW     R2,#+2011        
LDRB     R1,[R1, #+5]    
ADD      R1,R1,#+2000    
CMP      R1,R2            
IT       CC              
ADDCC    R1,R1,#+100      
STRH     R1,[R0, #+6]    
BX       LR

За сколько тактов выполнится на M7 и на ARM9? Считая что нет ожиданий памяти и т.п. Правильно - примерно одинаково.

Пример еще более искусственный, чем тесты.

Цитата
Всё эти DMIPS-ы достигаются на сложных а-ля DSP командах, выполняющих несколько операций за команду.

Да нет, на обычных тоже работает. Достаточно переставить у Вас команды и, если вычитываемые и записываемые данные окажутся в памяти на разных шинах (что довольно типично, например, загрузка констант из флеша в ОЗУ) каждая загрузка/сохранение будет выполнена одновременно.

Цитата
И что? Ну пускай не может прервать. Только это всего одна команда.
А Cortex-M на вход/выход потратит одну такую операцию на вход (8 сохранений контекста),
потом в ISR надо загрузить как минимум один указатель да рабочую область ОЗУ с переменными, загрузить все переменные, перед завершением все переменные выгрузить (если нужно), восстановить контекст (8 чтений). Разницу ощущаете?

Та одна команда может столько тактов утянуть... В ARM9 переменные в регистры загружать не надо? Вы о чем? После входа в ISR можно сразу работать. А вот с ARM9, если Вы собираетесь на С обработчик писать, будет засада, ибо рабочие регистры R0..R3 не переключаются при смене контекста.

Цитата
MPU у меня везде используется, но он слишком слаб: всего 8 регионов, минимальная гранулярность 32 байта (вроде) и регионы должны быть выровнены на границы кратные размеру. Это очень сильно сокращает возможности защиты. MMU не только для виртуализации, он и по защите гораздо более гибок. И кешем данных можно управлять удобнее с помощью него.

Мне сложно представить задачу где нужно такое. Либо притянуто за уши, либо проблема с архитектурой ПО.

P.S. Что-то от темы мы сильно удалились... Я бы с удовольствием послушал mantech про standalone i.MX6. Интересно плата была своя или какой-то SoM использовался? Может это решение (в том числе и "на вырост" rolleyes.gif , а если четырехядерный поставить 1111493779.gif , то можно даже от DSP процессора избавиться, хотя это и не актуально, но все же...).

Сообщение отредактировал Шаманъ - May 25 2016, 12:33
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 26 2016, 04:41
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Шаманъ @ May 25 2016, 18:31) *
Пример еще более искусственный, чем тесты.

Почему искусственный? Это кусок реального листинга. Взятый наугад.

Цитата(Шаманъ @ May 25 2016, 18:31) *
Да нет, на обычных тоже работает. Достаточно переставить у Вас команды и, если вычитываемые и записываемые данные окажутся в памяти на разных шинах (что довольно типично, например, загрузка констант из флеша в ОЗУ) каждая загрузка/сохранение будет выполнена одновременно.

Ну если это действительно так и последовательность
STR R2,[R0]
LDR R3,[R1]
если R0 и R1 указывают в регионы памяти на разных шинах, будет выполнена за 1 такт, то тогда да - это большой плюс.
Хотя утверждать это по вышеприведённой цитате из TRM я бы не стал. Хотелось бы увидеть более конкретное доказательство.

Цитата(Шаманъ @ May 25 2016, 18:31) *
Та одна команда может столько тактов утянуть... В ARM9 переменные в регистры загружать не надо? Вы о чем? После входа в ISR можно сразу работать. А вот с ARM9, если Вы собираетесь на С обработчик писать, будет засада, ибо рабочие регистры R0..R3 не переключаются при смене контекста.
Мне сложно представить задачу где нужно такое. Либо притянуто за уши, либо проблема с архитектурой ПО.

Я о FIQ. И о том, что можно написать ISR, который будет уже хранить все рабочие переменные/указатели в регистрах R8-R14 без необходимости их загрузки при входе в ISR.
Таким образом можно получить наибольшую скорость реакции на прерывание.
Мне такие ISR как раз и приходилось писать. Конечно на асм.

Цитата(mantech @ May 26 2016, 02:20) *
(к сожалению, без MMU кэши не работают). 4) запуск контроллера прерываний(он там как у нувотона, с программным выбором вектора из таблицы).

Хмм... очень похоже на ARM9. Там тоже кеш данных без MMU не работает. Хотя кеш кода работает и без MMU.
Контроллер прерываний там как у ARM9 (IRQ, FIQ, банковые регистры состояний CPU, etc.)?
Go to the top of the page
 
+Quote Post
mantech
сообщение May 26 2016, 11:59
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(jcxz @ May 26 2016, 07:41) *
Хмм... очень похоже на ARM9. Там тоже кеш данных без MMU не работает. Хотя кеш кода работает и без MMU.
Контроллер прерываний там как у ARM9 (IRQ, FIQ, банковые регистры состояний CPU, etc.)?


Да, все очень похоже, поправил несколько инструкций CP15 и все заработало. Сравнивал с АРМ11, но и 9й примерно такой-же. Добавлен кэш L2, но он тоже стандартный АРМовский.

Цитата(aaarrr @ May 25 2016, 23:48) *
А что там пробовать, если есть u-boot? А так A20 - процессор просто замечательный, с загрузкой только есть некоторые "приколы".


Убут мне не подходил, от слова "совсем". Иначе не мучался бы со своим бутлодырем. Просто тот убут, который был с мх6 грузил только с одной сд карты и по сети. Сеть меня вообще не интересовала, а вот нужна была поддержка обеих сд контроллеров, усб-флешек и фат16 и 32. Ну а делать так, что убут грузит мой бут, тот программу и все остальное - это изврат...

Сообщение отредактировал mantech - May 26 2016, 12:00
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Шаманъ   ARM c TFT контроллером и RAM > 2M   Apr 25 2016, 14:57
- - Genadi Zawidowski   Цитата(Шаманъ @ Apr 25 2016, 17:57) Приве...   Apr 25 2016, 15:33
|- - Шаманъ   Цитата(Genadi Zawidowski @ Apr 25 2016, 18...   Apr 25 2016, 16:30
- - Genadi Zawidowski   Спутал с 272*480. Не в курсе, я как отладку для r...   Apr 25 2016, 16:49
- - skripach   Посмотрите Nuvoton, есть чипы с 64 МБайтами на бор...   Apr 25 2016, 17:31
- - romas2010   Цитата(Шаманъ @ Apr 25 2016, 17:57) Приве...   Apr 25 2016, 18:08
|- - pitt   Цитата(romas2010 @ Apr 25 2016, 14:08) .....   Apr 25 2016, 18:16
|- - EmbedElektrik   Цитата(pitt @ Apr 25 2016, 21:16) Интерес...   Apr 25 2016, 18:47
|- - pitt   Цитата(EmbedElektrik @ Apr 25 2016, 14:47...   Apr 25 2016, 20:48
|- - jcxz   Nuvoton Вам уже порекомендовали. А сколько бит цве...   Apr 26 2016, 03:30
|- - Шаманъ   Цитата(jcxz @ Apr 26 2016, 06:30) А сколь...   Apr 26 2016, 04:45
- - Шаманъ   Цитата(romas2010 @ Apr 25 2016, 21:08) NX...   Apr 25 2016, 19:01
|- - AVI-crak   Цитата(Шаманъ @ Apr 26 2016, 02:01) Нету ...   Apr 26 2016, 09:39
|- - Шаманъ   Цитата(AVI-crak @ Apr 26 2016, 12:39...   Apr 26 2016, 14:37
|- - jcxz   Цитата(Шаманъ @ Apr 26 2016, 20:37) Короч...   Apr 27 2016, 06:42
|- - Шаманъ   Цитата(jcxz @ Apr 27 2016, 09:42) В исход...   Apr 27 2016, 09:03
|- - jcxz   Цитата(Шаманъ @ Apr 27 2016, 15:03) Ну и ...   Apr 27 2016, 09:16
|- - Шаманъ   Цитата(jcxz @ Apr 27 2016, 12:16) Так Nuv...   Apr 27 2016, 11:07
||- - jcxz   Цитата(Шаманъ @ Apr 27 2016, 17:07) Старо...   Apr 27 2016, 12:10
||- - Шаманъ   Цитата(jcxz @ Apr 27 2016, 15:10) Да кака...   Apr 27 2016, 16:25
||- - jcxz   Цитата(Шаманъ @ Apr 27 2016, 22:25) Поско...   Apr 28 2016, 04:14
|||- - Шаманъ   Цитата(jcxz @ Apr 28 2016, 07:14) Так зао...   Apr 28 2016, 07:32
|||- - mantech   Цитата(jcxz @ Apr 28 2016, 07:14) Так зао...   May 23 2016, 14:16
||- - scifi   Цитата(Шаманъ @ Apr 27 2016, 19:25) Это у...   Apr 28 2016, 08:04
||- - Шаманъ   Цитата(scifi @ Apr 28 2016, 11:04) И что ...   Apr 28 2016, 11:18
||- - jcxz   Цитата(Шаманъ @ Apr 28 2016, 17:18) Не, н...   Apr 28 2016, 11:28
|||- - Шаманъ   Цитата(jcxz @ Apr 28 2016, 14:28) Хорошая...   Apr 28 2016, 12:54
||- - mantech   Цитата(Шаманъ @ Apr 28 2016, 14:18) ТФТ н...   May 23 2016, 14:23
|- - zombi   Цитата(jcxz @ Apr 27 2016, 12:16) Так Nuv...   Apr 27 2016, 11:13
|- - den1s   Цитата(zombi @ Apr 27 2016, 14:13) Дайте ...   Apr 27 2016, 11:25
- - ViKo   Даааа, развели Шамана знатно китайским супер-пупер...   Apr 27 2016, 11:47
- - KRS   Это у каких чипов???? " Nuvoton, есть чипы с ...   Apr 27 2016, 12:10
|- - _3m   Цитата(KRS @ Apr 27 2016, 15:10) Это у ка...   Apr 27 2016, 12:16
- - ViKo   На сайте nuvoton: Product Results:NUC970, 0...   Apr 27 2016, 12:37
|- - _3m   Цитата(ViKo @ Apr 27 2016, 15:37) На сайт...   Apr 27 2016, 13:07
|- - jcxz   Цитата(ViKo @ Apr 27 2016, 18:37) Внешняя...   Apr 27 2016, 13:44
- - ViKo   Ага, так там упаковали в один корпус два чипа?   Apr 27 2016, 13:22
- - KRS   А это чудо NUC972DF62 вообще реально купить? И дат...   Apr 27 2016, 14:28
|- - jcxz   Цитата(KRS @ Apr 27 2016, 20:28) А это чу...   Apr 27 2016, 16:10
- - skripach   Один Два Дока..   Apr 27 2016, 14:30
- - KRS   Ядро то понятно почему 926 - взяли... Это для linu...   Apr 27 2016, 21:09
- - glebka   Прочитал всё, но всё ещё есть большие сомнения по ...   May 23 2016, 11:48
|- - scifi   Цитата(glebka @ May 23 2016, 14:48) Прочи...   May 23 2016, 12:29
||- - jcxz   Цитата(scifi @ May 23 2016, 18:29) Почему...   May 23 2016, 14:16
|||- - scifi   Цитата(jcxz @ May 23 2016, 17:16) А я не ...   May 23 2016, 15:08
||||- - jcxz   Цитата(scifi @ May 23 2016, 21:08) Невним...   May 24 2016, 05:19
|||- - Genadi Zawidowski   Цитата(jcxz @ May 23 2016, 17:16) S1D1378...   May 23 2016, 22:02
|||- - scifi   Цитата(Genadi Zawidowski @ May 24 2016, 01...   May 24 2016, 05:23
|||- - Шаманъ   Цитата(Genadi Zawidowski @ May 24 2016, 01...   May 24 2016, 12:18
||- - glebka   Цитата(scifi @ May 23 2016, 15:29) Почему...   May 24 2016, 10:37
||- - jcxz   Цитата(glebka @ May 24 2016, 16:37) Я раб...   May 24 2016, 10:44
||- - scifi   Цитата(glebka @ May 24 2016, 13:37) Интер...   May 24 2016, 11:00
||- - glebka   Цитата(scifi @ May 24 2016, 14:00) Тут я ...   May 24 2016, 11:54
|- - jcxz   Цитата(glebka @ May 23 2016, 17:48) Если ...   May 23 2016, 14:13
- - Шаманъ   Цитата(mantech @ May 23 2016, 17:23) По м...   May 23 2016, 20:43
||- - Шаманъ   Цитата(mantech @ May 24 2016, 23:47) Изла...   May 25 2016, 05:59
|||- - mantech   Цитата(Шаманъ @ May 25 2016, 08:59) Вы ег...   May 25 2016, 20:20
|||- - aaarrr   Цитата(mantech @ May 25 2016, 23:20) кто ...   May 25 2016, 20:48
|||- - Шаманъ   Нашел еще одного кандидата - SoM на S5P6818, доки ...   Aug 22 2016, 16:01
|||- - mantech   Цитата(Шаманъ @ Aug 22 2016, 19:01) SoM н...   Aug 22 2016, 18:36
|||- - Шаманъ   Цитата(mantech @ Aug 22 2016, 21:36) Что ...   Aug 22 2016, 19:53
|||- - mantech   Цитата(Шаманъ @ Aug 22 2016, 22:53) А что...   Aug 22 2016, 20:23
|||- - Шаманъ   Цитата(mantech @ Aug 22 2016, 23:23) Без ...   Aug 23 2016, 06:04
|||- - mantech   Цитата(Шаманъ @ Aug 23 2016, 09:04) Жалко...   Aug 23 2016, 06:39
||- - ViKo   Цитата(jcxz @ May 25 2016, 12:03) Да ну?...   May 25 2016, 09:18
||- - aaarrr   Цитата(mantech @ May 26 2016, 14:59) Прос...   May 26 2016, 12:37
||- - Шаманъ   Цитата(aaarrr @ May 26 2016, 15:37) Сеть ...   May 26 2016, 15:26
||- - mantech   Цитата(aaarrr @ May 26 2016, 15:37) А сам...   May 26 2016, 19:07
||- - aaarrr   Цитата(mantech @ May 26 2016, 22:07) Гора...   May 26 2016, 19:27
||- - mantech   Цитата(aaarrr @ May 26 2016, 22:27) Подкл...   May 26 2016, 20:18
|- - jcxz   Цитата(mantech @ May 25 2016, 01:06) Боль...   May 25 2016, 05:56
- - aaarrr   Цитата(mantech @ May 26 2016, 23:18) На в...   May 26 2016, 21:37
|- - mantech   Цитата(aaarrr @ May 27 2016, 00:37) USB з...   May 27 2016, 17:16
- - Lagman   Вот пример как прошивается CubieTruck через USB   May 28 2016, 11:19


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

 


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


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