реклама на сайте
подробности

 
 
> проблема в J-LINK или at91sam7s64, проблема при работе с китайским J-LINK 8 или же проблема с самим ARMом
max_mart
сообщение Sep 30 2013, 17:13
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Всем привет.

Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго думая я посетил сайт производителя SEGGER и скачал от туда версию 4.76е. Пере прошил проггер на эту версию с новым серийником. Использовал кейген для лицензий (установились все кроме GDBserver). Использую IAR ARM 6.3, ОС - Windows 7 ultimate. Пробовал зашить его и включить debug, но выдал ошибку по RDI, перезагрузил программатор и плату, потом выдал ошибку: BAD JTAG communication write to IR: expected 0x1, got 0x0 <TAP command : 15> @ off 0x5. Потом опять перезагрузил, но выдало уже FAiled to measure total IRlen. И так замкнутый круг.

Запустил J-link arm консоль.
Выдал:
VTARGET: 3.31 V
IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE

Значит проц то J-LINK видет. НО!!!!

Запускаю команду testwspeed на скорости 100 кГц. И выдает Write test failed. Пробую testcspeed - выдает NO RAM available @ address 0x0. Пробовал на скоростях от 10 кГц и выше
Опять перезагружаю все вместе с программой J-link arm , но выдает уже IRLEN: 04, UNKNOWN DEVICE.
Опять перезагружаю. Появляется IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE, выставляю скорость в 4 кГц, выдает BAD JTAG communication...

Со стороны своей платы все прозвонил - ничего не замыкает, все ножки правильно подключены к J-LINK. Все необходимые линии подтянуты, как на схеме ATmel.
Пробовал и с JTAG_SEL играть - резистором 5 кОм на + и на -. На плюс подтягивал - совсем не работало. На минус - работало. По описанию по идее там внутренняя подтяжка 15 кОм
на землю. Так что я думаю это излишне.
Со стороны J-LINK не припаял только nTRST - потому что некуда.

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

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
max_mart
сообщение Oct 15 2013, 12:43
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Да. Тактирование контроллера перефири (PIO) включено.

p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;

Go to the top of the page
 
+Quote Post
SavageForest
сообщение Oct 16 2013, 09:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



Цитата(max_mart @ Oct 15 2013, 16:43) *
Да. Тактирование контроллера перефири (PIO) включено.
p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;

Для PLL лучше брать точный резюк (1%) и хорошие кондёры (NPO). по номиналам 1к, 1000пФ, 10нФ (как и было указано)
Кварц юзаю на 24МГц (максимально возможная частота) дабы не шибко сильно зависеть от PLL цепочки и не нагружать ее высокими множителями/делителями.
я обычно начинаю инициализацию МК следующим образом:
в маине первые строчки после объявления переменных (если они есть) пишу:
*AT91C_RSTC_RMR |= (AT91C_RSTC_URSTEN | 0xA5000000); // RSTC_SetUserResetEnable(1);
PIO_InitializeInterrupts(0);
функция PIO_InitializeInterrupts() взята из стандартного Атмеловского pio_it.c

а вот так выглядит у меня lowlevelinit.c (слегка модифицировал стандартный):
CODE
#include "board.h"
#include "board_memories.h"
#include <pmc/pmc.h>

#ifdef MCK24 // 24 MHz
//#define B_MUL 24
#define B_MUL 24
#define B_DIV 6
#endif

#ifdef MCK12 // 12 MHz
//#define B_MUL 24
#define B_MUL 24
#define B_DIV 3
#endif

#ifdef MCK18 // 18.432 MHz
#define B_MUL 75
#define B_DIV 14
#endif

#ifdef MCK16 // 16 MHz
#define B_MUL 24
#define B_DIV 4
#endif
//------------------------------------------------------------------------------
// Internal definitions
//------------------------------------------------------------------------------
// Startup time of main oscillator (in number of slow clock ticks).
#define BOARD_OSCOUNT (AT91C_CKGR_OSCOUNT & (0x80 << 8))

// USB PLL divisor value to obtain a 48MHz clock.
#define BOARD_USBDIV AT91C_CKGR_USBDIV_1

// PLL frequency range.
#define BOARD_CKGR_PLL AT91C_CKGR_OUT_0

// PLL startup time (in number of slow clock ticks).
#define BOARD_PLLCOUNT (16 << 8)

// PLL MUL value.
#define BOARD_MUL (AT91C_CKGR_MUL & (B_MUL << 16)) // 72

// PLL DIV value.
#define BOARD_DIV (AT91C_CKGR_DIV & B_DIV) // 14

// Master clock prescaler value.
#define BOARD_PRESCALER AT91C_PMC_PRES_CLK_2

//------------------------------------------------------------------------------
// Internal functions
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
/// Default spurious interrupt handler. Infinite loop.
//------------------------------------------------------------------------------
void defaultSpuriousHandler( void )
{
while (1);
}

//------------------------------------------------------------------------------
/// Default handler for fast interrupt requests. Infinite loop.
//------------------------------------------------------------------------------
void defaultFiqHandler( void )
{
while (1);
}

//------------------------------------------------------------------------------
/// Default handler for standard interrupt requests. Infinite loop.
//------------------------------------------------------------------------------
void defaultIrqHandler( void )
{
while (1);
}

//------------------------------------------------------------------------------
// Global Functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Performs the low-level initialization of the chip. This includes EFC, master
/// clock, AIC & watchdog configuration, as well as memory remapping.
//------------------------------------------------------------------------------
void LowLevelInit(void)
{
unsigned char i;

// Set flash wait states in the EFC
// 48MHz = 1 wait state
#if defined(at91sam7s512)
AT91C_BASE_EFC0->EFC_FMR = AT91C_MC_FWS_1FWS;
AT91C_BASE_EFC1->EFC_FMR = AT91C_MC_FWS_1FWS;
#else
AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS;
#endif

// Initialize main oscillator
AT91C_BASE_PMC->PMC_MOR = BOARD_OSCOUNT | AT91C_CKGR_MOSCEN;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));

// Initialize PLL at 100MHz and USB clock to 50MHz
AT91C_BASE_PMC->PMC_PLLR = BOARD_USBDIV | BOARD_CKGR_PLL | BOARD_PLLCOUNT
| BOARD_MUL | BOARD_DIV;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK));

// Wait for the master clock if it was already initialized
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

// Switch to slow clock + prescaler
AT91C_BASE_PMC->PMC_MCKR = BOARD_PRESCALER;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

// Switch to fast clock + prescaler
AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
while (!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));

// Initialize AIC
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;
AT91C_BASE_AIC->AIC_SVR[0] = (unsigned int) defaultFiqHandler;
for (i = 1; i < 31; i++) {

AT91C_BASE_AIC->AIC_SVR[i] = (unsigned int) defaultIrqHandler;
}
AT91C_BASE_AIC->AIC_SPU = (unsigned int) defaultSpuriousHandler;

// Unstack nested interrupts
for (i = 0; i < 8 ; i++) {

AT91C_BASE_AIC->AIC_EOICR = 0;
}

// Enable Debug mode
AT91C_BASE_AIC->AIC_DCR = AT91C_AIC_DCR_PROT;

// Watchdog initialization
AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;

// Remap the internal SRAM at 0x0
BOARD_RemapRam();

// Disable RTT and PIT interrupts (potential problem when program A
// configures RTT, then program B wants to use PIT only, interrupts
// from the RTT will still occur since they both use AT91C_ID_SYS)
AT91C_BASE_RTTC->RTTC_RTMR &= ~(AT91C_RTTC_ALMIEN | AT91C_RTTC_RTTINCIEN);
AT91C_BASE_PITC->PITC_PIMR &= ~AT91C_PITC_PITIEN;
}

первым делом выбираю нужный мне кварц и настраиваю МК под него так, чтобы работал на частоте 48МГц. Почему 48? на других частотах USB не запилится. При желании можно догнать до документированных 55, если USB не нужен. делители можно поперебирать, но в таком случае нужно будет и менять PLL цепочку (см. ATMEL_PLL_Filter_CALCULATOR_AT91_CAP_2v91.xls). я не заморачиваюсь и работаю с тем, что есть.
ЗЫ: если кто найдет ошибку или покритикует код - буду благодарен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- max_mart   проблема в J-LINK или at91sam7s64   Sep 30 2013, 17:13
- - Raven   Возможно, что у вас проблема, аналогичная описанно...   Sep 30 2013, 17:39
- - max_mart   Спасибо огромное за мысль!!! Я ведь т...   Sep 30 2013, 18:04
|- - Raven   Цитата(max_mart @ Sep 30 2013, 22:04) Еще...   Oct 2 2013, 13:57
- - max_mart   Делал и апгрейд и даунгрейд - тоже самое. Попробу...   Oct 2 2013, 16:08
- - Raven   Ну, раз не получается методом научного тыка, пора,...   Oct 3 2013, 16:00
- - max_mart   Спасибо большое за ответы и желание помочь. Я рань...   Oct 5 2013, 14:50
|- - Raven   Цитата(max_mart @ Oct 5 2013, 18:50) нету...   Oct 7 2013, 18:54
- - Genadi Zawidowski   1) стереть процессор пином ERASE 2) что за кварц н...   Oct 8 2013, 05:22
- - max_mart   Всем Привет. Проблема решилась. Дeло оказалось ...   Oct 14 2013, 17:40
|- - DmitryM   Цитата(max_mart @ Oct 14 2013, 20:42) Про...   Oct 14 2013, 17:47
|- - RabidRabbit   Цитата(max_mart @ Oct 14 2013, 21:40) Дан...   Oct 15 2013, 07:39
- - max_mart   Кварц стоит на 18.432 МГц, но обвязка из конденсат...   Oct 14 2013, 19:23
- - Raven   В каких-то случаях и это может иметь значение. Но ...   Oct 15 2013, 07:16
- - max_mart   SavageForest. Каким комптлятором пользуешься? И ка...   Oct 16 2013, 17:25
|- - SavageForest   Цитата(max_mart @ Oct 16 2013, 21:25) Sav...   Oct 22 2013, 06:36
- - max_mart   Все правильно проблема была в startupe. Все работа...   Oct 21 2013, 20:03
- - max_mart   Поробовал я bulkusb с проектом AVRx51 - windows xp...   Oct 23 2013, 10:49
|- - SavageForest   Цитата(max_mart @ Oct 23 2013, 14:49) на ...   Oct 25 2013, 04:14
- - max_mart   Всем привет. Для работы c USB использую библиотек...   Oct 28 2013, 12:45
|- - SavageForest   Цитата(max_mart @ Oct 28 2013, 16:45) Атм...   Oct 29 2013, 09:59
- - max_mart   Максимальная скорость 256000 бит/с. Что надо сдела...   Oct 29 2013, 04:26
|- - toweroff   Цитата(max_mart @ Oct 29 2013, 08:26) Мак...   Oct 29 2013, 11:48
- - max_mart   Значения PLL у меня на плате: 1 kOm, C1 - 10nF, C2...   Oct 30 2013, 07:00
|- - DmitryM   Цитата(max_mart @ Oct 30 2013, 10:00) пос...   Oct 30 2013, 10:21
- - max_mart   Еще раз: 1,5kOhm, 10nF, 1nF - значения RCPLL atme...   Oct 30 2013, 20:56
|- - SavageForest   Цитата(max_mart @ Oct 31 2013, 00:56) 1,5...   Oct 31 2013, 05:54
|- - DmitryM   Цитата(SavageForest @ Oct 31 2013, 08:54)...   Oct 31 2013, 06:00
|- - SavageForest   Цитата(DmitryM @ Oct 31 2013, 10:00) Угу,...   Oct 31 2013, 06:45
|- - DmitryM   Цитата(SavageForest @ Oct 31 2013, 09:45)...   Oct 31 2013, 09:32
- - SavageForest   2 DmitryM: я вообще не понимаю чего Вы сюда влезли...   Nov 1 2013, 05:08
|- - DmitryM   Цитата(SavageForest @ Nov 1 2013, 08:08) ...   Nov 1 2013, 07:28
- - max_mart   SavageForest, спасибо!!! Как от атмел...   Nov 5 2013, 17:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 21:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016