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

novlev

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

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

  • Посещение

Репутация

0 Обычный

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

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

Контакты

  • Сайт
    Array
  • ICQ
    Array
  1. Всем день добрый, прошу помощи у знающих. Прграмма может отработать сутки, двое.., а потом вылететь. Как вариант - портится стек, т к прерывания вложенные, может кто-то что-то не сохраняет, вот пример дизасма: /------------------------------------------------------------------- // Procedure statistics: // Frame size = 172 // Scratch registers used: {R0-R3,P0-P2,I0-I3,B0-B3,M0-M3,A0-A1,ASTAT0-ASTAT1,CC,AQ,LC0-LC1,LT0-LT1,LB0-LB1} // Call preserved registers used: {R4-R7,P4-P5,FP,SP,L0-L3,RETS,RETI} // Registers that could be clobbered by function calls: {R0-R3,P0-P2,I0-I3,B0-B3,M0-M3,A0-A1,ASTAT0-ASTAT1,CC,AQ,LC0-LC1,LT0-LT1,LB0-LB1,RETS,SEQSTAT,SYSCFG,USP} //------------------------------------------------------------------- // line ".\SHR-2.c":4310 LINK 0; [--SP] = RETI; [--SP] = ASTAT; [--SP] = (R7:0); [--SP] = P0; [--SP] = P1; [--SP] = P2; [--SP] = P4; [--SP] = P5; [--SP] = A0.W; [--SP] = A0.X; [--SP] = A1.W; [--SP] = A1.X; [--SP] = L0; [--SP] = L1; [--SP] = L2; [--SP] = L3; [--SP] = I0; [--SP] = I1; [--SP] = I2; [--SP] = I3; [--SP] = B0; [--SP] = B1; [--SP] = B2; [--SP] = B3; [--SP] = M0; [--SP] = M1; [--SP] = M2; [--SP] = M3; [--SP] = LC0; [--SP] = LC1; [--SP] = LT0; [--SP] = LT1; [--SP] = LB0; [--SP] = LB1; L0 = 0; L1 = 0; L2 = 0; L3 = 0; SP += -12; Это обаботчик тика таймера, в нем вызываются др подпрограммы. Может надо все регистры сохранять? Как отлавливать подобные ошибки?
  2. Продлема решилась странно... /* When Compiler Optimization is active, hardware loops are setup for a while loop */ /* The Loop Count Registers (LC0/LC1) are not necessarily cleared */ sysreg_write(reg_LC0,0); sysreg_write(reg_LC1,0); Эти строки приводили к паузе только на одной железяке. Это строки из кода инициализации, там оптимизатор выключен. Но в основном коде включена максимальная оптимизация по размеру. Может кто объяснит мне темному...
  3. Спасибо за ответ, пробовал из spi внутренней, там все норм запустилось. Разводка норм, звона на линиях нет... Именно пауза, без обращений на внешнюю шину...просто что-то ждет.
  4. Всем доброе утро! Может кто сталкивался - не стартует программа, пытается вычитать из внешней параллельной флешки и замирает, если через отладчик запустить - все работает и читает, если изменить код инициализации - добавить маркеров пинами - то они все отлавливаются осмыслографом, и иногда через паузу загружается процессор, а иногда так и висит...
  5. Отвечу сам себе - проблема в конвеере команд и прерываниях. Конвеер умудрялся выполнить 2 раза чтение, те железяка отработала клоки и прочее и ушла по прерыванию, а вернулась тудаже - и по новой. Решение - запретить прерывания...если можно. Сейчас пробую дма типа память- память, возможно тоже решение, если нельзя запрещать. Это применительно к bf518f.
  6. Доброго времени суток. Может кто сталкивался, как правильно читать пакеты меньше 64 байт на этой микрухе, просто статусные регистры говорят о 64 байтах для всех пакетов, которые меньше 64, но при этом в самом фифо уже норм пакеты, т е не добитые нулями. Как правильно читать в таком случае, не портя фифо?
  7. Начните с простого - проверте качество сигналов на шине, я сейчас с этим столкнулся. По быстрому можно проверить сбросив частоту периферии до 80, потом на 100 проверить -у меня на 80 сразу все заработало, что натолкнуло на мысль - идти искать норм осциллограф и смотреть фронты.
  8. Проблема была в железе :) Гигагерцовый осмыслограф все показал и рассказал. Пара дорожек звенели, терминаторы были далеко от абонента. Вывод - надо внимательнее проверять шину на предмет отраженных сигналов. Напишу подробнее: в мурзилке на MT48LC8M16A2 есть строки "VDDQ Supply DQ power: Isolated DQ power on the die for improved noise immunity. VSSQ Supply DQ ground: Isolated DQ ground on the die for improved noise immunity." - вот в этом месте земля была через дроссель к основной подключена. В этом и была причина, убрав дроссель получили норм фронты.
  9. Спасибо за участие в решениип роблемы, когда я определюсь - все заработает, к этому и иду.
  10. Этот адрес вылета не имеет значения, это плод криво залитого кода из-за фиговой инициализации айсом озухи, на реальной железяке инит код норм все делает, - телевизор же работал без сбоев. Сейчас картина уже другая, вылет по реальному адресу, 0х208 - это буду смотреть, что именно не нравится (на демо борде работал и на этом адресе).
  11. Запустил код на демоборде - все работает. Оказывается она норм инициализирует озу. А если пристегнуть кастом борд xml к моей железяке - значения в регистры попадают, но в сд стате висит ошибка, т е озу фигово инициализировалась. Вопрос - в чем может быть причина такого поведения?
  12. Ну пичальки никакой не вижу, а код ошибки - Instruction fetch CPLB miss 0x2C E CPLB miss on an instruction fetch. Не пойму, что не так с сгенерированой таблицей. Может не в таблице дело? Приведу и таблицу. Что странно - адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв". В мимуляторе отработало все как надо... но ему доверять...
  13. Даташиты прочитаны, именно из них следует, что визард сам сгенерит несколько масок настройки кеша, и он это делает, и забьет цплд таблицы - и это он делает. Но код вылетает. никаких линухов никто запускать не будет, это гиблый путь. Специфика работы - никакого чужого кода.
  14. cplb_miss_without_replacement - откуда ноги уэто йоштбки растут, кто-нибудь сталкивался?
×
×
  • Создать...