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

viterra

Участник
  • Постов

    126
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о viterra

  • Звание
    Частый гость
    Частый гость
  • День рождения 05.02.1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 539 просмотров профиля
  1. Различие при генерации таблиц есть: Для внутренней памяти используется код 0x00002c02 @ non-shareable device memory Для остальной (DDR3) 0x00007c0e @ outer and inner write-back, no write-allocate Граница проходит по 0x400 странице т.е. с адреса 0x40000000 начинается оперативка. 31 20 19 18 17 16 15 14 12 11 10 9 8 5 4 3 2 1 0 |section base address| 0 0 |nG| S |AP2| TEX | AP | P | Domain | XN | C B | 1 0| Bits[31:20] - Top 12 bits of VA is pointer into table nG[17]=0 - Non global, enables matching against ASID in the TLB when set. S[16]=0 - Indicates normal memory is shared when set. AP2[15]=0 AP[11:10]=11 - Configure for full read/write access in all modes TEX[14:12]= CB[3:2]= IMPP[9]=0 - Ignored Domain[5:8]=0 - Set all pages to use domain 0 XN[4]=0 - Execute never disabled Bits[1:0]=10 - Indicate entry is a 1MB section
  2. Да. Таблица сгенирирована и находится во внутренней памяти устройства. Скорость я конечно не замерял, но программа работает заметно более шустро.
  3. 1892ВМ14Я. 2 АРМ + 2 ДСП. Пока использую только одно ядро. Второе хочу на обработку прерываний некоторых повесить. В том то и дело, что все нормально ровно до момента включения L2 enable_caches: MRC p15, 0, r0, c1, c0, 0 @ Read System Control Register ORR r0, r0, #(0x1 << 12) @ Set I bit 12 to enable I Cache ORR r0, r0, #(0x1 << 2) @ Set C bit 2 to enable D Cache ORR r0, r0, #(0x1 << 11) @ Set Z bit 11 to enable branch prediction MCR p15, 0, r0, c1, c0, 0 @ Write System Control Register @ enable L2 cache LDR r0, =L2CC_PL310 LDR r1, =0x1 STR r1, [r0,#0x100] Если закомментарить последние 3 строки - то все ok. mmu при этом должен быть включен: MRC p15, 0, r0, c1, c0, 0 @ Read CP15 System Control register BIC r0, r0, #(0x1 << 12) @ Clear I bit 12 to disable I Cache BIC r0, r0, #(0x1 << 2) @ Clear C bit 2 to disable D Cache BIC r0, r0, #0x2 @ Clear A bit 1 to disable strict alignment fault checking ORR r0, r0, #0x1 @ Set M bit 0 to enable MMU before scatter loading MCR p15, 0, r0, c1, c0, 0 @ Write CP15 System Control register
  4. Так главный вопрос - где я лажаю T_T... Побитово все настройки проверил.. Но может что-то не сделал/забыл/не так понимаю?
  5. Спасибо за ответ. Да, PL310. Этот код может и включает L2 но не правильно. Без MMU оно работать на полную не будет. Во всех доках так написано. Да и по факту так. В приложенном коде создается виртуалка 1 в 1 с реальной. Как будто виртуальной вообще нет. Но как бы я не крутил настройки - я теряю возможность доступа к ядру но скорость реально вырастает.
  6. Здравствуйте! У меня приложение без ОС с линейной памятью. Для максимальной производительности нужен L2 кэш. Я столкнулся с проблемой, что не могу корректно включить L2. При запуске (enable_all_caches в приложенном файле) меня выкидывает, похоже, из привилегированного режима (PL1 как я понял). И я не могу выполнить MRC /MCR инструкции - выкидывает в прерывание Undefined handler. И код ошибки я не могу считать по той-же причине. И еще - может у кого-нибудь есть пример простого загрузчика из nand ? Все что находится - сложновато а с u-boot вообще связываться не хочется. arm_cache.S
  7. Ага. Так и есть. Нолик потерял. Спасибо большое!
  8. Как влияет ошибка в частоте дискритизации на оцифровываемый сигнал? Допустим частота квантования 12800000 Гц Частота выборки с АЦП 80000 Гц. Оцифровываем сигнал 25 КГц.. В синтезаторе частота формируется с известной ошибкой 12800000.0000264 Гц Те ошибка 0.000264 Гц Как рассчитать уход фазы для оцифровываемого сигнала? Если правильно понимаю то за 1/0.0000264 = 3787.87878787878788 с. Те за 3787.87878787878788 получаем полный фазовый цикл. (2*pi/3787.8) = 0.00165879542404023 рад/сек для исходной частоты? Как переложить ошибку на 25 КГц?
  9. У микросхемы два чипселекта и два пина с выходными данными. Вопрос - можно ли объединить чипсилекты и пины с выходными данными? Честно говоря - я не понимаю зачем это сделано именно для SPI...
  10. Именно по этому полностью кэш как кэш на 64+ использовать нельзя. Все часто используемые переменные и массивы должны быть в сконфигурируемым под память кэше. В случае же поточной обработки ориентироваться на работу кэша не стоит. Предварительное чтение даных через DMA, организованное в ручную, решает часть проблем. Так же в кэше, по возможности, должны быть размещены подпрограммы цифровой обработки, критичные по времени.
  11. SAURIS GmbH: Можно. Хотя может я не правильно выразился..Кэш конфигурируемое устройство - можно отвести часть его для проверки вашей математики, точнее - сконфигурировать его как простую память.
  12. C теми что работал "dummy byte" не нужен был.. честно говоря - вообще в первый раз слышу о таком.
  13. У Ti конфигуриуется этап загрузки.. UART, I2C, SPI, FLASH.. что хочешь... В случае с FLASH прос при ресете прыгает на определённый адрес и выполняет с него код... Код может быть как в ROM так и FLASH. Этот код грузит и распределяет программу внутри памяти, конфигурирует проц и передаёт исполнение в точку входа твоей программы.
  14. DMA в TI работает согласно приоритетам. По умолчанию - у CPU больший приоритет над DMA. "кто будет посылать байт в SPI устроство для того чтобы его прочитать по ДМА. подскажите?" Бред.. Данные посылает через SPI в проц устройство(а) висящее на SPI.
  15. Дабл вывожу примерно так: sprintf(str+k, ",%.13g,%i",pSynh->OneHz_offset, pSynh->OneHz_offset_St); transf: Попробуйте перенести весь код и данные в кэш и повторите вычисления. Если переменная в кэше - в память она не отображается до поры до времени.
×
×
  • Создать...