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

AlexBoy

Свой
  • Постов

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

  • Посещение

Весь контент AlexBoy


  1. Информация для компилятора в файле t1.scf, а способ кеширования для каждого региона в функции AT91F_InitMMU(). Что могу сказать :( пробуйте другой компилятор.
  2. Значит верхний уровень пока самому делать?
  3. Почитал флаер на этот модем, там написано что он имеет встроеный TCP/IP стек и поддержку FTP. Смотрю список АТ команд, а там только открытие/закрытие сокета, а где ФТП? Может ФТП доступен только из OpenAT скрипта?
  4. Я не знаю есть ли в IARe понятие scatter файла, т.е. грузить код в SRAM, а после инициализации периферии код перебрасывается в SDRAM. Или ищите RVDS2.2
  5. Понял. Можно в mac файле временно отключить установку частоты и глянуть что получится. Да, для чистоты эксперемента лучше взять такой-же компилятор: RVDS2.2 Есть на местном фтп /pub/MCs/_ARM_/ARM.REALVIEW.DEVELOPER.STUDIO.2.2, если нет доступа, то в муле.
  6. Так в этом и ответ, скорость проца не выставляется, он работает на MainClock (18.432) без умножения. Номиналы деталей в обвязке PLL правильные? Пошагово посмотрите где виснет. Без AT91F_EnableMainClock() не заработает и AT91F_SetMasterClock(). Попробуйте вместо ожидания готовности вставить задержку побольше. Уберите DBG() на всякий случай. Перед запуском нужен аппаратный ресет для сброса настроек плл.
  7. Попробуйте использовать мой модуль AT91_SDRAM.c, только заменить AT91C_SDRC_NC_8 на AT91C_SDRC_NC_9, должно пойти. Таймер инициализируется там-же в CalcBogoMips, просто задается делитель set_systimer_divider(1); Можно попробовать увеличить задержку delay_long(0x10000), т.к. после установки делителя таймер вначале выдает бяку. Странные результаты по скорости памяти, почти нет разницы что внутри кеша, что вне. P.S. Добейтесь работы моего проекта с минимальными измерениями иначе не поймем отчего тормозит.
  8. Заливали терминалом по Х-модем? порт 11520.8.1
  9. Как обещал выкладываю проект. Скорость максимальная какую смог выжать. Можно еще уменьшить делитель MCK до 2 (90Mhz), но за надежность не отвечаю. Попробуйте залить готовый test.bin из проекта и сравните с результатом компиляции вышим компилятором. Интересно сравнение компиляторов. Мои результаты: Core Clock: 180Mhz, Master Clock: 60Mhz *** CPU Speed Test 71.95 BogoMips 472350 Dhrystone per second, 268 DMIPS *** Memory Speed Test Block 1Kb, Speed 353552 Kb/s Block 2Kb, Speed 357616 Kb/s Block 4Kb, Speed 361936 Kb/s Block 8Kb, Speed 364148 Kb/s Block 16Kb, Speed 358666 Kb/s Block 32Kb, Speed 130316 Kb/s Block 64Kb, Speed 113957 Kb/s Block 128Kb, Speed 112377 Kb/s Block 256Kb, Speed 112338 Kb/s Block 512Kb, Speed 112345 Kb/s Block 1024Kb, Speed 112351 Kb/s ARM_Speed.zip
  10. Глянул какой флаг использую для передачи, оказалось не TXEMPTY, а TXRDY и это работает. Попробуй у себя поменять. status = pCOM->US_CSR; // Есть принятый байт if (status & AT91C_US_RXRDY) { data = pCOM->US_RHR; if (!(status & AT91C_US_FRAME)) { QueueAdd(RxQueue, data); } } // Регистр передачи пуст if (status & AT91C_US_TXRDY) { // Есть данные для передачи? if (QueueCount(TxQueue)) { QueueGet(TxQueue, &data); pCOM->US_THR = data; } else { pCOM->US_IDR = AT91C_US_TXRDY; } } // очистить признаки ошибок pCOM->US_CR = AT91C_US_RSTSTA;
  11. У меня другой порт UCOS, там вызывается общий для всех прерываний асмовский кусок и он отличается от твоего DbguUart_Irq_UCOS. Из асма идет передача на общий сишный хандлер и дальше на конкретное устройство. И еще на системной прерывании может сидеть системный таймер (у меня так сделано). Вобщем скидываю свой вариант порта. ...добавил еще пару файлов для полной картины (cfg.zip) ucos_2_84.zip cfg.zip
  12. А контроллеру прерываний говоришь что прерывание закончено? *AT91C_AIC_EOICR = 0; // Признак завершения обработчика это должно быть в конце каждого хандлера.
  13. Выложи кусок, где общий хандлер прерываний (который вызывается из асма) и хандлер системного прерывания.
  14. CodeWarrior для ARM

    RealView Developer Suite v2.2 использует CodeWarrior в качестве среды. Есть тут на FTP.
  15. Прерывания от WDT

    Нужно просматривать статус регистры всех устройств на системном прерывании и обрабатывать все произошедшие. // ------------------------------------------------------------------------------ // Обработчик системного прерывания (ID_SYS=1) void SYSIRQ_Handler(void) { DWORD status; status = *AT91C_PITC_PIVR; if (status & AT91C_PITC_PICNT) // Если системное прерывание от PIT таймера { OSTimeTick(); } status = *AT91C_WDTC_WDSR; if (status & AT91C_WDTC_WDUNF) // Если системное прерывание по переаолнению WDT { // } AT91C_BASE_AIC->AIC_EOICR = 0; // Признак завершения обработчика }
  16. Часть по альфа-таблице (16 градаций), часть по цвету. Макс. размер спрайта 120х120 15шт, и мелких около 20шт. В основном проверки и целочисленное сложение, сдвиги. Многое от компилятора зависит, как он сможет оптимизировать. Пользуюсь RVDS2.2.
  17. Спрайтовая графика, копирование блоков с полупрозрачностью. 1 байт на точку.
  18. Вспомнил. Попробую запустить у себя тест, если будет сильно отличаться выложу исходники. Мне хватало скорости делать полноэкранную анимацию 800х600 15fps.
  19. Сильно улучшит ситуацию, если включите все кеши: инструкций и данных, причем данных в режим WriteBack. Соответственно придется задействовать MMU. У меня общая производительность получалась на уровне 200-го пня.
  20. Готовые не годятся, нужно свое написать. Эллипсоид Красовского помоему для перевода из СК42. А жпс модуль выдает в WGS84
  21. sam7x256 и wiggler

    Наверно еще не дочитали :07: Вигглер это устройство, H-JTAG это программа для работы с этим устройством.
  22. Можно ли через NMEA получить координаты как XYZ, а не широта-долгота? Или может формулы есть для перевода?
  23. sam7x256 и wiggler

    Зашивал через H-JTAG, похоже он умеет управлять этим битом. Сначала делаю полное стирание, потом заливаю.
  24. А что именно не работает? У меня из программ заработал ocdremote и ColibriLoader с их сайта. В принципе достаточно, пошагово можно отлаживаться. Схема вигглера ниже. Ресеты нужны оба и раздельные.
×
×
  • Создать...