novlev
Участник-
Постов
116 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о novlev
-
Звание
Частый гость
- День рождения 12.10.1983
Контакты
-
Сайт
Array
-
ICQ
Array
-
BF518 - слетает программа
novlev опубликовал тема в Сигнальные процессоры и их программирование - DSP
Всем день добрый, прошу помощи у знающих. Прграмма может отработать сутки, двое.., а потом вылететь. Как вариант - портится стек, т к прерывания вложенные, может кто-то что-то не сохраняет, вот пример дизасма: /------------------------------------------------------------------- // 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; Это обаботчик тика таймера, в нем вызываются др подпрограммы. Может надо все регистры сохранять? Как отлавливать подобные ошибки? -
Продлема решилась странно... /* 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); Эти строки приводили к паузе только на одной железяке. Это строки из кода инициализации, там оптимизатор выключен. Но в основном коде включена максимальная оптимизация по размеру. Может кто объяснит мне темному...
-
Спасибо за ответ, пробовал из spi внутренней, там все норм запустилось. Разводка норм, звона на линиях нет... Именно пауза, без обращений на внешнюю шину...просто что-то ждет.
-
Всем доброе утро! Может кто сталкивался - не стартует программа, пытается вычитать из внешней параллельной флешки и замирает, если через отладчик запустить - все работает и читает, если изменить код инициализации - добавить маркеров пинами - то они все отлавливаются осмыслографом, и иногда через паузу загружается процессор, а иногда так и висит...
-
Вышла студия - VisualDSP++ 5.1.0.
-
Отвечу сам себе - проблема в конвеере команд и прерываниях. Конвеер умудрялся выполнить 2 раза чтение, те железяка отработала клоки и прочее и ушла по прерыванию, а вернулась тудаже - и по новой. Решение - запретить прерывания...если можно. Сейчас пробую дма типа память- память, возможно тоже решение, если нельзя запрещать. Это применительно к bf518f.
-
Доброго времени суток. Может кто сталкивался, как правильно читать пакеты меньше 64 байт на этой микрухе, просто статусные регистры говорят о 64 байтах для всех пакетов, которые меньше 64, но при этом в самом фифо уже норм пакеты, т е не добитые нулями. Как правильно читать в таком случае, не портя фифо?
-
Начните с простого - проверте качество сигналов на шине, я сейчас с этим столкнулся. По быстрому можно проверить сбросив частоту периферии до 80, потом на 100 проверить -у меня на 80 сразу все заработало, что натолкнуло на мысль - идти искать норм осциллограф и смотреть фронты.
-
Проблема была в железе :) Гигагерцовый осмыслограф все показал и рассказал. Пара дорожек звенели, терминаторы были далеко от абонента. Вывод - надо внимательнее проверять шину на предмет отраженных сигналов. Напишу подробнее: в мурзилке на 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." - вот в этом месте земля была через дроссель к основной подключена. В этом и была причина, убрав дроссель получили норм фронты.
-
Спасибо за участие в решениип роблемы, когда я определюсь - все заработает, к этому и иду.
-
Этот адрес вылета не имеет значения, это плод криво залитого кода из-за фиговой инициализации айсом озухи, на реальной железяке инит код норм все делает, - телевизор же работал без сбоев. Сейчас картина уже другая, вылет по реальному адресу, 0х208 - это буду смотреть, что именно не нравится (на демо борде работал и на этом адресе).
-
Запустил код на демоборде - все работает. Оказывается она норм инициализирует озу. А если пристегнуть кастом борд xml к моей железяке - значения в регистры попадают, но в сд стате висит ошибка, т е озу фигово инициализировалась. Вопрос - в чем может быть причина такого поведения?
-
Ну пичальки никакой не вижу, а код ошибки - Instruction fetch CPLB miss 0x2C E CPLB miss on an instruction fetch. Не пойму, что не так с сгенерированой таблицей. Может не в таблице дело? Приведу и таблицу. Что странно - адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв". В мимуляторе отработало все как надо... но ему доверять...
-
Даташиты прочитаны, именно из них следует, что визард сам сгенерит несколько масок настройки кеша, и он это делает, и забьет цплд таблицы - и это он делает. Но код вылетает. никаких линухов никто запускать не будет, это гиблый путь. Специфика работы - никакого чужого кода.
-
cplb_miss_without_replacement - откуда ноги уэто йоштбки растут, кто-нибудь сталкивался?