AT91M40800 IDCODE

Do you have a question? Post it now! No Registration Necessary

Threaded View
Здравствуйте!

    Хочу сделать следующее:i2c flash <-i2c-> mcu (8`ми лапый)<-JTAG->AT91M40800
неважно какой МЦУ является бутлодером для AT91, он забрасывает в его RAM кусок
ПО по JTAG, из сериальной флешки, далее АТ91 в его услугах не нуждается до
следующего включения.
    Hо попал в тупик, с первого шага. Руководство к действию - ARM7TDMI Data
Sheet раздел Debug Interface.
    Для начала написал кусок кода читающий ID сабжа, по документации должен
получать 0х14080044, но стабильно получаю 0x1F0F0F0F, даже если прохожу все
состояния ТАР в ручную (написал софтину которая общается с бутером по компорту,
вижу в ней, в виде осциллограммы, все пины JTAG и ресетAT91, и могу рулить ими
по своему усмотрению)
  И так, код команды IDCODE = 1110 (binary) записывать его надо lsb-first то
есть с начала 0 потом 1,1,1 (наверно ;-)
  В общем делаю так:
====== Ввод команды IDCODE ============
  1) TMS=1; PulseTCK (TCK=1; TCK=0) 6 раз для reset TAP
  2) TMS=0; PulseTCK //Run-Test/Idle
  3) TMS=1; PulseTCK //Select-DR-Scan (но нам дальше)
  4) TMS=1; PulseTCK //Select-IR-Scan
  5) TMS=0; PulseTCK //Capture-IR
  6) TMS=0; PulseTCK //Shift-IR
  7) Ввод младшего бита команды IDCODE
     TDI=0; PulseTCK (после пульса TDO, ранее находившийся в "1" упал в "0")
  8) Продолжаю ввод команды
     TDI=1; PulsTCK;
     TDI=1; PulsTCK;
     TDI=1; PulsTCK;
     всё;
  9) TMS=1; PulseTCK //Exit1-IR (после пульса TDO поднимается в "1")
 10) TMS=1; PulseTCK //Update-IR
 11) TMS=0; PulseTCK //иду через Run-Test/Idle
========== Чтение ID =============
  1) TAP в Run-Rets/Idle
  2) TMS=1; PulseTCK //Select-DR-Scan
  3) TMS=0; PulseTCK //Capture-DR
  4) TMS=0; PulseTCK //Shift-DR
  5) PulseTCK 32 раза, состояние TDO смотрю на "скопе", или задвигаю в long а
потом сморю, результат один 0х1F0F0F0F, а должно быть 0х14080044
     ГДЕ Я ОШИБСЯ?
  6) дальше не интересно ....

С уважением
    Gerasimov_Gerasim

ЗЫ на всякий случай поменял последовательность ввода команды, не 0,1,1,1 а
1,1,1,0 в результате (в состоянии Shift-DR) TDO на каждом клоке стал повторять
TDI, оно и верно, т.к. 0111 = HIGHZ значит видим bypass register;


AT91M40800 IDCODE
Привет Gerasimov!

15 Jul 04 12:52, Gerasimov Gerasim писал All:

 GG>     Для начала написал кусок кода читающий ID сабжа, по документации
 GG> должен получать 0х14080044, но стабильно получаю 0x1F0F0F0F,

    ? В какой документации написано 0x14080044? У процессора ARM7TDMI регистр
IDCODE действительно содержит 0x1F0F0F0F. Так что у тебя все читается
правильно.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Вышла корова в чисто поле, да всё его и запачкала.

Site Timeline