ARM AT91R40008, Xilinx и флэшка

Есть устройство, содержащее subj. Флэшка, понятное дело, в корпусе, который в программатор сунуть трудно. Задача - программировать эти флэшки. Какие есть варианты решения такой проблемы?

ARM при старте заливает в Xilinx его прошивку.

В голову приходят такие варианты: 1) отдельная конфигурационная память для Xilinx, после загрузки с которой он временно становится управляемым с какого-нить последовательного порта программатором флэшки. (не очень удобно, на Xilinx не все ноги флэшки приходят) 2) дёргание ногами ARM'a через JTAG 3) дёргание ногами Xilinx через JTAG (недостаток тот же, что и в варианте 1)

__ __/ / Powered [pepsi inside] \_\/ by MOTOROLA [smoking suxx]

Reply to
Denis Sotchenko
Loading thread data ...

Tue Feb 10 2004 18:31, Denis Sotchenko wrote to All:

DS> ARM при старте заливает в Xilinx его прошивку.

DS> В голову приходят такие варианты: DS> 1) отдельная конфигурационная память для Xilinx, после загрузки DS> с которой он временно становится управляемым с какого-нить DS> последовательного порта программатором флэшки. DS> (не очень удобно, на Xilinx не все ноги флэшки приходят) DS> 2) дёргание ногами ARM'a через JTAG DS> 3) дёргание ногами Xilinx через JTAG DS> (недостаток тот же, что и в варианте 1)

А почему нельзя все ноги флешки завести на ПЛИС? Если они требуются еще и процессору, то вполне можно пропустить их туда сквозь ПЛИСку.

Reply to
Ilia Tarasov

Привет Всем! Tue Feb 10 2004 18:31, Denis Sotchenko wrote to All:

DS> Есть устройство, содержащее subj. Флэшка, понятное дело, в корпусе, DS> который в программатор сунуть трудно. Задача - программировать эти DS> флэшки. Какие есть варианты решения такой проблемы?

DS> ARM при старте заливает в Xilinx его прошивку.

DS> В голову приходят такие варианты: DS> 1) отдельная конфигурационная память для Xilinx, после загрузки DS> с которой он временно становится управляемым с какого-нить DS> последовательного порта программатором флэшки. DS> (не очень удобно, на Xilinx не все ноги флэшки приходят) DS> 2) дёргание ногами ARM'a через JTAG DS> 3) дёргание ногами Xilinx через JTAG DS> (недостаток тот же, что и в варианте 1) Если на процессор приходят все ножки флешки, то тогда в резидентное(набортное) ОЗУ проца через ICE Breaker(а не ЙТАГ-- это сигналы его разьема имеют одинаковые названия с ЙТАГом) заливают программку которая через последовательный порт может шить флешку, непроинициализированный ксайлинкс тихо стоит в углу никого не трогая, шьем флешку в которой есть кусок программы отвечающий за инициализацию ксайлинкса и его прошивка в сжатом виде. После прошивки флеша программа записаная в флешку стартует и в начале работы быстренько инициализирует ксайлинкс в рабочее положение и продолжает выполнять основной алгоритм... Рекомендую. Неизменно устойчивый вкус. Пока. НЕЕ

Reply to
Natopta Eugene

Hello Denis.

10 Feb 04 18:31, you wrote to all:

DS> Есть устройство, содержащее subj. Флэшка, понятное дело, в корпусе, DS> который в программатор сунуть трудно. Задача - программировать эти DS> флэшки. Какие есть варианты решения такой проблемы? DS> ARM при старте заливает в Xilinx его прошивку.

DS> В голову приходят такие варианты: DS> 1) отдельная конфигурационная память для Xilinx, после загрузки DS> с которой он временно становится управляемым с какого-нить DS> последовательного порта программатором флэшки. DS> (не очень удобно, на Xilinx не все ноги флэшки приходят) DS> 2) дёргание ногами ARM'a через JTAG

Hе все AT91 позволяют дергать ножками через JTAG, про сабж - надо смотреть в документации. Мой AT91M40800 не позволяет. Тем не менее работает режим отладки через jtag. В этом режиме его можно заставить выполнять команды, загружаемые через JTAG. Я именно так и программирую AT29C512, подключенную к AT91xxxxx

Alexey

Reply to
Alexey Boyko

Привет Denis!

10 Feb 04 18:31, Denis Sotchenko писал All:

DS> В голову приходят такие варианты: DS> 1) отдельная конфигурационная память для Xilinx, после загрузки DS> с которой он временно становится управляемым с какого-нить DS> последовательного порта программатором флэшки. DS> (не очень удобно, на Xilinx не все ноги флэшки приходят) DS> 2) дёргание ногами ARM'a через JTAG DS> 3) дёргание ногами Xilinx через JTAG DS> (недостаток тот же, что и в варианте 1)

Я в аналогичном случае применилвариант 2, которым в ПЗУ прошивается маленький начальный загрузчик. А затем уже этот маленький загрузчик принимает и зашивает основную прошивку через RS232 (основная прошивка около 300 кбайт, через JTAG все это зашивать немыслимо).

Как вариант - загрузчик можно не зашивать в ПЗУ, а разместить во внутреннем ОЗУ процессора, и потом передать туда управление. По идее будет быстрее.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок сушеный с сушкой.

Reply to
Alex Mogilnikov

Hello Alex.

11 Feb 04 13:16, you wrote to Denis Sotchenko:

AM> прошивается маленький начальный загрузчик. А затем уже этот маленький AM> загрузчик принимает и зашивает основную прошивку через RS232 (основная AM> прошивка около 300 кбайт, через JTAG все это зашивать немыслимо).

В ICE Breaker есть некий коммуникационный канал для обмена программы, с отладчиком. По идее через него должно быть не так уж и медленно.

Alexey

Reply to
Alexey Boyko
11 Feb 04, Natopta Eugene пишет мне:

NE> Если на процессор приходят все ножки флешки, то тогда в NE> резидентное (набортное) ОЗУ проца через ICE Breaker

о! а документация на этот протокол есть?

тут специфика в том, что разработка военная, нужно предоставлять документированные исходники даже средств прошивки.

__ __/ / Powered [pepsi inside] \_\/ by MOTOROLA [smoking suxx]

Reply to
Denis Sotchenko

Привет Всем! Wed Feb 11 2004 21:41, Denis Sotchenko wrote to Natopta Eugene:

DS> 11 Feb 04, Natopta Eugene пишет мне:

NE>> Если на процессор приходят все ножки флешки, то тогда в NE>> резидентное (набортное) ОЗУ проца через ICE Breaker

DS> о! а документация на этот протокол есть? Конечно есть! Application Note 38 Using the ARM7TDMI Debug Comms Channel Document number: ARM DAI 0038B

Application Note 28 Document Number: ARM DAI 0028A The ARM7TDMI Debug Architecture

На сайте ARM Ltd. Но я этим не заморачивал себе мозги. Уже существуют по крайней мере четыре системы разработки, позволяющие загружать через ICE Breaker в резидентное ОЗУ в отладочном режиме небольшие программки. В данном случае я пользовался пакетом IAR и адаптером типа Wiggler. Существует и отдельно стоящий пакет с открытыми исходниками: armtools-1.4, который я скачивал пару лет назад с

formatting link
Так-же недавно появился новый пакет CrossWorks for ARM от ROWLEY ASSOCIATES Ltd. базирующийся на ГНУшном компиляторе Ц++ и с отладчиком использующим Wiggler. Группа энтузиастов этого решения базируется в конференции ARM на сайте
formatting link

Пока! НЕЕ

Reply to
Natopta Eugene

Hello Alex.

12 Feb 04 11:24, you wrote to me:

AB>> В ICE Breaker есть некий коммуникационный канал для обмена AB>> программы, с отладчиком. По идее через него должно быть не так уж AB>> и медленно.

AM> У меня 11-кбайтный загрузчик прошивается в ПЗУ минут 5 (ПЗУ AM> 8-битное).

Hифига себе. ;O

У меня 24-х килобайтная программа зашивается в at29c512 примерно полминуты. Кстати, программа имеет режим загрузчика, последующие загрузки я могу делать через COM-порт. Еще там влезло юзер интерфейс, загрузка данных из устройства через СОМ, менеджер флеш памяти, печать отчетов (самая большая часть).

У тебя загрузчик что - через TCP/IP работает?

AM> То есть на запись каждого байта в ПЗУ нужно выполнить штук AM> 8 разных команд. Запись же во внутреннее ОЗУ можно делать блоками AM> 32-битных слов по ldmia - stmia. Вот только загрузчик надо ужать до AM> размера ОЗУ. :)

AT29C512 можно записывать только страницами. Так что мне пришлось сделать небольшой программатор (полтора десятка команд), который записываю вместе с

128-ю байтами данных во внутреннее ОЗУ и запускаю.

Alexey

Reply to
Alexey Boyko

Hello Alex.

12 Feb 04 11:35, you wrote to Denis Sotchenko:

AM> ICE Braker описан в даташите на ARM. Hо тонкостей там много, я AM> взял готовый ajflash в исходниках и доделал для своих нужд.

А где взял? У меня тоже были кое какие исходники, но я практически все с нуля писал.

Alexey

Reply to
Alexey Boyko

Привет Alexey!

12 Feb 04 13:48, Alexey Boyko писал Alex Mogilnikov:

AM>> ICE Braker описан в даташите на ARM. Hо тонкостей там много, AM>> я взял готовый ajflash в исходниках и доделал для своих нужд.

AB> А где взял? У меня тоже были кое какие исходники, но я практически AB> все с нуля писал.

Взял не то у Интела, не то с сайта LART. LART'овцы интеловскую флешепрошивалку под свой проект немного модифицировали.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Даже лошадь Пржевальского может быть собакой Павлова.

Reply to
Alex Mogilnikov

Привет Alexey!

12 Feb 04 13:40, Alexey Boyko писал Alex Mogilnikov:

AM>> У меня 11-кбайтный загрузчик прошивается в ПЗУ минут 5 (ПЗУ AM>> 8-битное).

AB> Hифига себе. ;O

AB> У меня 24-х килобайтная программа зашивается в at29c512 примерно AB> полминуты.

Хм. Я догадывался, что это уж очень долго, но чтоб настолько...

Можешь примерно описать последовательность операций? Я сейчас посмотрел исходник, там запись байта в память выполняется следующим образом:

- выбор scan chain 1

- загрузка инструкции intest

- загрузка данных: ldm r0,{r0,r1} nop nop address data nop nop nop strb r1,[r0]

- загрузка инструкции restart

- загрузка инструкции intest

Hа каждый байт записываемых данных вся вышеописанная последовательность повторяется 4 раза. Hе представляю, за счет чего можно шить в 20 раз быстрее... Да, ПЗУ у меня 29LV040 от AMD.

AB> Кстати, программа имеет режим загрузчика, последующие AB> загрузки я могу делать через COM-порт.

У меня то же самое - через JTAG ПЗУ шьется один раз в жизни, когда оно еще совсем пустое.

AB> Еще там влезло юзер интерфейс, AB> загрузка данных из устройства через СОМ, менеджер флеш памяти, печать AB> отчетов (самая большая часть).

AB> У тебя загрузчик что - через TCP/IP работает?

Hет, xmodem. По TCP/IP работает уже полная прошивка.

AB> AT29C512 можно записывать только страницами. Так что мне пришлось AB> сделать небольшой программатор (полтора десятка команд), который AB> записываю вместе с 128-ю байтами данных во внутреннее ОЗУ и запускаю.

Я правильно понял, что те самые 28 кбайт за пол минуты ты зашиваешь, помещая страницу данных сначала во внутреннее ОЗУ, а затем запуская на выполнение в нем же тот самый небольшой программатор? Тогда верю, что у тебя в

20 раз быстрее получается...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты знают, что на каждую улицу Пушкина должна быть улица Попкина.

Reply to
Alex Mogilnikov

Hello Alex.

13 Feb 04 15:57, you wrote to me:

AM> Можешь примерно описать последовательность операций? Я сейчас AM> посмотрел исходник, там запись байта в память выполняется следующим AM> образом:

AM> - выбор scan chain 1 AM> - загрузка инструкции intest AM> - загрузка данных: AM> ldm r0,{r0,r1}

У меня ldmia R14, {R0-R12} nop nop ... 12 раз data address nop nop nop stmia R12, {R0-R11} restart

Таким образом я записываю в ОЗУ сразу - 12*4 = 48 байт.

AM> data AM> nop AM> nop AM> nop AM> strb r1,[r0] AM> - загрузка инструкции restart

Перед запуском я устанавливаю в ICE Breaker точку останова на любую инструкцию После запуска жду, пока не войдет в режим программирования.

AB>> У тебя загрузчик что - через TCP/IP работает? AM> Hет, xmodem. По TCP/IP работает уже полная прошивка.

Я имел в виду, что у меня 24К вся программа, а у тебя 11К - загрузчик.

AB>> AT29C512 можно записывать только страницами. Так что мне пришлось AB>> сделать небольшой программатор (полтора десятка команд), который AB>> записываю вместе с 128-ю байтами данных во внутреннее ОЗУ и AB>> запускаю. AM> Я правильно понял, что те самые 28 кбайт за пол минуты ты AM> зашиваешь, помещая страницу данных сначала во внутреннее ОЗУ, а затем AM> запуская на выполнение в нем же тот самый небольшой программатор?

Да, именно так.

AM> Тогда верю, что у тебя в 20 раз быстрее получается...

;)

Сначала я тоже писал по одному байту. Причем не АТ29, а какую-то другую, которая позволяет писать побайтно. Hачал думать, как оптимизировать. Когда поставил AT29C512, Оказалось, что пока я пишу второй байт, у нее срабатывает таймаут, и она ничинает писать страницу. Пришлось идею с кешированием в ОЗУ реализовать, иначе - никак.

Alexey

Reply to
Alexey Boyko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.