|
проблема в J-LINK или at91sam7s64, проблема при работе с китайским J-LINK 8 или же проблема с самим ARMом |
|
|
|
Sep 30 2013, 17:13
|
Местный
  
Группа: Участник
Сообщений: 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 - потому что некуда.
Не могу понять в чем дело. Народ, пожалуйста, подскажите где и куда копать? В чем проблема может быть?
Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Oct 16 2013, 09:44
|
Участник

Группа: Участник
Сообщений: 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). я не заморачиваюсь и работаю с тем, что есть. ЗЫ: если кто найдет ошибку или покритикует код - буду благодарен.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|