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

novlev

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

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

Контакты

  • Сайт
    http://
  • ICQ
    0
  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. Цитата(Ndf @ Oct 8 2014, 11:00) Мой девайс на BF518 загружается с SPI флеш и проблемы ниразу не было. Могу только предположить что у вас используется внешняя память SDRAM которая бывает подглючивает при неправильной разводке. Спасибо за ответ, пробовал из 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. Цитата(sevstels @ Oct 23 2013, 09:50) Дорогой друг. Вы уж определитесь как-то более основательно. Я не телепат, и подсказать вам смогу предметно, если симптомы будут более конкретные. Спасибо за участие в решениип роблемы, когда я определюсь - все заработает, к этому и иду.
  10. Цитата(sevstels @ Oct 23 2013, 09:23) Вы же сами написали почему: >>адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв". Читайте раздел: "Интерфейс внешней шины". А про ОЗУ мне ничего не известно, вчера Вы утверждали, что многократно его успешно оттестили. Этот адрес вылета не имеет значения, это плод криво залитого кода из-за фиговой инициализации айсом озухи, на реальной железяке инит код норм все делает, - телевизор же работал без сбоев. Сейчас картина уже другая, вылет по реальному адресу, 0х208 - это буду смотреть, что именно не нравится (на демо борде работал и на этом адресе).
  11. Запустил код на демоборде - все работает. Оказывается она норм инициализирует озу. А если пристегнуть кастом борд xml к моей железяке - значения в регистры попадают, но в сд стате висит ошибка, т е озу фигово инициализировалась. Вопрос - в чем может быть причина такого поведения?
  12. Цитата(sevstels @ Oct 22 2013, 14:51) >> никакого чужого кода Эх печалька вам тогда... А что возвестили вам даташиты по поводу кода ошибки? Цифру огласите. Ну пичальки никакой не вижу, а код ошибки - Instruction fetch CPLB miss 0x2C E CPLB miss on an instruction fetch. Не пойму, что не так с сгенерированой таблицей. Может не в таблице дело? Приведу и таблицу. Код#pragma section("cplb_data") cplb_entry icplbs_table[] = { /*$VDSG<customizable-instr-cplb-table>                          */ /* This code is preserved if the CPLB tables are re-generated.  */    // L1 Code    {0xFFA00000, (PAGE_SIZE_1MB | CPLB_I_PAGE_MGMT)},    // Async Memory Bank 2 (Secnd)    // Async Memory Bank 1 (Prim B)    // Async Memory Bank 0 (Prim A)    //{0x20200000, (PAGE_SIZE_1MB | CPLB_INOCACHE)},   // {0x20100000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},   // {0x20000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    // 128 MB (Maximum) SDRAM memory space (32/64 MB populated on Ez-kit)       // CPLBs covering 16MB    {0x00000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00100000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00200000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00300000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00400000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00500000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00600000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00700000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00800000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00900000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00a00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00b00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00c00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00d00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00e00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    {0x00f00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    // Async Memory Bank 3   // {0x20300000, (PAGE_SIZE_1MB | CPLB_INOCACHE)},    // 32kB Boot ROM    {0xEF000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},    // end of section - termination    {0xffffffff, 0}, /*$VDSG<customizable-instr-cplb-table>                          */ }; /* icplbs_table */ Что странно - адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв". В мимуляторе отработало все как надо... но ему доверять...
  13. Даташиты прочитаны, именно из них следует, что визард сам сгенерит несколько масок настройки кеша, и он это делает, и забьет цплд таблицы - и это он делает. Но код вылетает. никаких линухов никто запускать не будет, это гиблый путь. Специфика работы - никакого чужого кода.
  14. cplb_miss_without_replacement - откуда ноги уэто йоштбки растут, кто-нибудь сталкивался?