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

Люди добрые, подскажите где засада ? :help::help::help:

Суть проблемы: CrossWorks -> Вигглер -> tms470r1b1m в бесконечных циклах работает без проблем:

RAM, FLASH в долбаггере и со сброса. Как только разрешаю IRQ (таймер нужен), так пошли чудеса: под житагом всё нормалёк даже если и компилил без отладочной информации - шагает, запускается, останавливается, но после сброса (питание, кнопка) программа начинает перезапускаться по таймеру как по сбросу, хотя все вектора вроде живы (вывожу на экран). Было подозрение на WatchDog? но в SYSESR о нём ничего нет и вообще там только PORRST. Отсюда следующие вопросы:

 

1. В чём у сабжа разница запуска по житагу и по сбросу(про WatchDog знаю)?

2. Кто ещё может вызвать перезапуск (не в SYSESR)?

2. Может кто :santa2: поделится проетом с работающим таймером?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вобщем была похожая фигня.. методом научного тыка убрал заменой команд LDR на B в cstartup (переходы на обработчики исключений), это было под 4-м иаром. при переходе на 5-й опять наступил на эти грабли, но линкер не переваривает перестановки LDR на B.. придется копать глубже..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как оно вааще с иаром - у меня совсем плохо: даже с простыми examl'ами брешет на cable & power и при всём том чётко определяет id девайса(с 256-м процом такого нет). Пробовал менять распределение памяти(как CW) теже яйца... :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

иар+мт-линк+тмс 470 b1m,a288,a384 полет нормальный. но бывают затыки, которые удается все-таки обойти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понянл - слабое звено здесь Wiggler -> TMS. Без МТлинка не жисть? или всё же как-то можно выкрутиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

cable & power - это имхо косяк виглера или платы с тмс-ом.. с мтлинком у меня такого нет.. как у вас там с ножками тмс-а TRST, RST и PORRST? как подключены? PORRST и TRST идут на житаг, при инициализации по ним должны быть импульсы, у меня косяки были похожие, когда PORRST отвалилась..

 

З.Ы. еще ногу AWD резистором в землю нужно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плату я делал а ля TI и Olimex: ~TRST и ~RST на житаге присутствуют, хотя сигналов на какой-то одной(какой не помню) нет; AWD с джампером, но ведь же CW всё грузит, жжёт и отлаживает. А вот про PORST просил бы по подробнее - у меня на неё RESET от TPS'а заведён, а ещё её куда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чудеса мля... из флеши начинает работать ТОЛЬКО при использовании с нулевого адреса команды B.. LDR ему не катит..

с прерыванием та же фигня.. LDR PC,IRQ_Addr ему не нравится, а вот B IRQ_Addr работает!!!

 

похоже этот проц до инициализации карты памяти НЕ МОЖЕТ выполнить команду, в которой используется адрес вне поля команды.. =(( афигеть.. а житаг в нем карту памяти инитит, других вариантов у меня нет..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если можно поподробнее пжалуйста, осбенно с того момента где и как оно работает (хорошо бы пример) - у меня это первый опыт с uM и С. Тупая замена LDR PC,IRQ_Addr на B IRQ_Addr дала чистого мертвяка - летает по всей памяти, а вот при LDR для вектора 0x0 с кнопки не запускается.

Замена ~RST на ~PORRST в житаге не помогла: IAR перестала определять ID; H_JTAG как не видел так и не видит, а CW работает как работала. Похоже дело здесь не в железе а в конкретных дровах. Завтра попробую на 256-м - он дома.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена добавлением в старап след. кода:

 

// Read the MSM keys

ldr r1, =0x1000FFE0

ldr r0, [r1, #0x00]

ldr r0, [r1, #0x04]

ldr r0, [r1, #0x08]

ldr r0, [r1, #0x0C]

 

найдено методом комментирования инструкций в JTAG-скрипте:

 

/******************************************************************************

Target Script for TMS470R1B1M.

 

Copyright © 2006 Rowley Associates Limited.

 

This file may be distributed under the terms of the License Agreement

provided with this software.

 

THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE

WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

******************************************************************************/

 

function Reset()

{

TargetInterface.stopAndReset(1);

 

// Disable reset on address access violation

TargetInterface.pokeWord(0xFFFFFFE0, 0x00004007); // SYSECR

 

// Map internal SRAM (bank 2) to 0x10300000

TargetInterface.pokeWord(0xFFFFFE10, 0x00001030); // MFBAHR2

TargetInterface.pokeWord(0xFFFFFE14, 0x00000080); // MFBALR2

 

// Duplicate internal SRAM (bank 3) at 0x00000000

TargetInterface.pokeWord(0xFFFFFE18, 0x00000000); // MFBAHR3

TargetInterface.pokeWord(0xFFFFFE1C, 0x00000080); // MFBALR3

 

// Configure HET RAM static memory controller (32-bit, 7 wait states)

TargetInterface.pokeWord(0xFFFFFD04, 0x00000072); // SMCR1

 

// Map HET RAM (bank 4) to 0x10800000

TargetInterface.pokeWord(0xFFFFFE20, 0x00001080); // MFBAHR4

TargetInterface.pokeWord(0xFFFFFE24, 0x00000020); // MFBALR4

 

/* Enable write buffer and write trailing wait state override */

TargetInterface.pokeWord(0xFFFFFD2C, 0x00000003); // WCR0

 

// Disable FLASH (bank 1)

TargetInterface.pokeWord(0xFFFFFE08, 0x00000000); // MFBAHR1

TargetInterface.pokeWord(0xFFFFFE0C, 0x00000000); // MFBALR1

 

// Map internal FLASH (bank 0) to 0x10000000

TargetInterface.pokeWord(0xFFFFFE00, 0x00001000); // MFBAHR0

TargetInterface.pokeWord(0xFFFFFE04, 0x000001c2); // MFBALR0

 

// Read the MSM keys

// TargetInterface.peekWord(0x1000FFE0);

// TargetInterface.peekWord(0x1000FFE4);

// TargetInterface.peekWord(0x1000FFE8);

// TargetInterface.peekWord(0x1000FFEc);

}

 

function RAMReset()

{

Reset();

}

 

function FLASHReset()

{

Reset();

}

 

 

 

 

Онако гемора с IAR -> Wiggjer -> 1B1M это не решило. :01: Что ж будем воевать в CrossWorks.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проект у меня собссно CrossWork'овский - стартап там побольше + TMS470.c для перываний + clt0.c для управления библиотеками, а вместо самого стартапа (TMS470_Startup.s) я держу его копию system.s чтобы можно было править. Так вот добавка в ней после инита катры памяти и перед вызовом настройщика библиотек clt0.c.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в иаре у меня есть чтение MSM, как раз после настройки карты памяти, но в сишном файле в __low_level_init()

попробую я перенести это все в асмовый стартап..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...