Например TDA7294

Форум РадиоКот :: Просмотр темы - AT91SAM9260-ek + ULINK2 + KEIL
Форум РадиоКот
https://radiokot.ru/forum/

AT91SAM9260-ek + ULINK2 + KEIL
https://radiokot.ru/forum/viewtopic.php?f=59&t=79599
Страница 1 из 2

Автор:  путешественник [ Ср окт 24, 2012 15:54:06 ]
Заголовок сообщения:  AT91SAM9260-ek + ULINK2 + KEIL

Всем доброго времени суток.
Есть отладочная плата AT91SAM9260-ek и программатор ULINK2. В Кеиле открыл прилагающийся к нему же (KEIL) файл проекта для работы с этой платой, мигание пользовательским светодиодом. Программирование происходит без проблем. После сброса платы, светодиод мигать не начинает...
Стал разбираться. Попробовал загрузить через SAM-BA бинарник (шел на диске к плате), все как описано в инструкции сделал, и все заработало - светодиоды мигают. попробовал проект в Keil - не работает. Стал смотреть дальше. Через Терминал посмотрел что выдает плата: RomBOOT > и на этом все. Я так полагаю что при подаче питания загружается первичный загрузчик BootStap, не находит исполнительного кода и останавливается. Собственно вопрос, как сделать что бы в KEIL после программирования сразу запускалась программа? прога грузится в SDRAM.
Заранее спасибо!

Автор:  coredumped [ Ср окт 24, 2012 16:47:11 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Попробуйте скомпиленный Вами бинарник загрузить через SAM-BA Если лыжи поедут - значит неправильно настроен ULINK. Если нет - то внимательно проверьте опции проекта - адрес запуска, настройка частоты итп. Проблема может быть где угодно. В конце концов у Вас отладчик в руках - запустите отладку и пошагово смотрите, что происходит.

Автор:  путешественник [ Чт окт 25, 2012 13:21:58 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Проверил в режиме отладки в реальном времени, все работает, диод мигает! В общем ситуация такая (как я понял), что бы запустить программу в автоматическом режиме при подаче питания, нужно загрузить ее в DataFlash, а потом в терминале указать адрес начального запуска, т.е. там где прошита программа. Делал ли кто-нибудь, что бы программа запускалась в автомате по указанному адресу? В сети нашел как это сделать, но что-то боязно так экспериментировать.

Автор:  SII [ Чт окт 25, 2012 13:42:26 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Если в датафлэшку, начиная с её нулевого адреса, записан правильный образ программы, то загрузчик, намертво зашитый в сам процессор, считает этот образ во внутреннюю память проца и запустит его. Какой именно образ считается правильным, описано в документации на процессор (там, насколько помню, определённым образом должна быть оформлена таблица векторов прерываний, т.е. первые восемь слов образа). Если же образ в датафлэшке оказывается неправильным, то загрузчик пытается найти подходящий образ на других устройствах (только, подозреваю, нигде не сможет из-за бага в самом загрузчике; во всяком случае, насколько помню, в 9261 именно так дело и обстояло). Вот подробностей, извините, не помню -- дело с 9261 имел года 2 назад, если не больше...

Прошивкой неправильных образов в датафлэшку Вы ничего не испортите (ну, кроме возможности загрузить линух или что там шло прошитым заранее), так что экспериментировать можно смело.

Автор:  путешественник [ Чт окт 25, 2012 16:21:20 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

SII, если не ошибаюсь, вы программируете в KEIL. Подскажите пожалуйста, что и где в нем изменить в настройках загрузчика, что бы программа записывалась по адресу скажем не 0х20000000 (этот адрес установлен в проекте по умолчанию) в SDRAM, а по любому другому, например 0x10000000 (EBI CS0) или 0x40000000 (NAND FLASH) ?
Я пробовал в настройках менять 0х20000000 на 0х10000000 и 0х40000000, но при прошивке выскакивает ошибка, что невозможно записать в ARM926EJ-S.
И еще, в описании к МК указано, что если REMAP = 0 и BMS = 0 то идет загрузка с EBI_NCS0 (т.е. с адреса 0х10000000)
А на плате есть перемычка BMS, и если я все правильно понял, то она и указывает BMS = 0 или 1. А вот где и как поменять или посмотреть чему равно REMAP?

Автор:  Satyr [ Чт окт 25, 2012 16:42:26 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Так дебагер это просто устройство на шине. он умеет писать и читать в позиции по памяти.
Флешки он писать не умеет. Но можно написать хитрый скрипт, который управляя через отладчик NAND контроллером таки чтото сможет положить в память, а из нее записать в НАНД -))))))
Но оно надо ?

Автор:  путешественник [ Чт окт 25, 2012 16:56:31 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Кстати, в KEIL нашел вот это окно (файлик приложил). там в раскрывающемся списке есть выбор между внутренней памятью и SDRAM. а как добавить еще например NANDFlash или CompactFlash?

Этот параметр влияет на то, по какому адресу будет записываться программа или нет?

Вложения:
Комментарий к файлу: внутренняя память или SDRAM
keil.JPG [104.12 KiB]
Скачиваний: 873

Автор:  путешественник [ Чт окт 25, 2012 17:16:03 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Satyr писал(а):
Флешки он писать не умеет.


т.е. получается он пишет только в SDRAM...

и тогда получается что нужно переменные REMAP и BMS настроить на загрузку EBI_CS0 (адрес 0х10000000) и по этому адресу записать мою прогу, так?

или переменные REMAP и BMS настроить на загрузку EBI_CS0 (адрес 0х10000000) и по этому адресу записать загрузчик, который будет грузить мою прогу (и настроить его на загрузку с нужного адреса), а ее записать по адресу 0х20000000 (SDRAM) или так?

или я вообще все не так понимаю?

Автор:  Satyr [ Чт окт 25, 2012 18:08:40 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

путешественник писал(а):
т.е. получается он пишет только в SDRAM...

Неправильно. Пишет он в шину.
А уж кто на конкретном адресе и есть ли вобще он не ведает.

В случае SDRAMа по ту сторону контроллер SDRAM'а. Не будет он проинициализированн - не будет по тому адресу никакого SDRAMа, будет адресное пространство вникуда

Автор:  coredumped [ Чт окт 25, 2012 19:42:37 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Я так понял - знаний=0.
У AT91SAM9260 своей flash нет. Если на плате стоит flash с CFI, то код из нее запустить можно, но в подобных системах чаще используется другой метод - запускается bootstrap из ROM контроллера, который ищет по порядку возможные методы загрузиться (читайте даташит). Те, он по очереди просматривает все возможные подключенные хранилища (Serial flash, EEPROM итд). Как только находится подходящий имидж, он перегружается в RAM и выполняется. Поэтому адрес запуска в настройках линкера - это адрес начала RAM. Настоятельно советую изучить документацию на bootstrap и даташит на камень. И еще, насчет отладчика (Ulink/JLink/etc) и записи flash - отладчик ничего во flash не пишет. Алгоритм следующий - отладчик загружает в память и выполняет специальную программу-флешер, которая и производит запись во flash.
Я именно с AT91SAM9260 дело не имел, но обычно имеется целая куча примеров, шаблонов-скелетов с подробным описанием что и как делать. На демоплатах могут стоять джамперы или конфигурационные перемычки, положение которых определяет метод загрузки камня.
Если не разберетесь, то киньте ссылку на кит, который у вас не хочет работать, вместе разберемся.

Автор:  путешественник [ Чт окт 25, 2012 19:48:46 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

что-то я уже запутался наверное...
1. после подачи питания терминальная программа выдает ответ платы: RomBOOT>
в приложенном файле (карта памяти) я нахожусь в месте обведенном красным овалом, верно?
2. в самбе я "разрешаю" SDRAM и пишу туда программу, по адресу 0х20000000 и она помещается в место обведенное красным квадратом, верно?
3. в той-же самбе когда я пытаюсь "разрешить" DataFlash (CS0 или CS1) плата отвечает что ее нету!?
4. в аннотации справа вверху сказано, что в зависимости от REMAP и BMS выбирается загрузка в ROM, EBI_NCS0 или SRAM (приложил во втором файле) верно?
4. если так, то где эти REMAP и BMS установить?

прошу прощения если вопросы глупые, просто понимаю что я чего-то не понимаю, а чего не понимаю не пойму. :)

Вложения:
внутренняя память.JPG [28.79 KiB]
Скачиваний: 850
память.JPG [52.19 KiB]
Скачиваний: 452

Автор:  путешественник [ Чт окт 25, 2012 22:58:28 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

С ARM раньше дел не имел, только AVR и то писал проги на Алгоритм билдере. Кеил изучал. но это было давно и с С51 и КР580ВВ52 (кажись так назывался).

coredumped, плата работает-светодиоды мигают, с этим вроде разобрался. Сейчас не могу понять как сделать что бы моя прога грузилась автоматически, после подачи питания.
отладочная плата у меня Атмеловская, фирменная AT91SAM9260-ek Evalution kit.
документацию на проц изучаю, а вот на bootstrap нет такой, завтра поищу, спасибо за совет.

Автор:  coredumped [ Пт окт 26, 2012 09:02:05 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Скачайте атмеловский софтпак http://www.atmel.com/Images/at91sam9260-ek.zip , распакуйте. Там в корне есть index.html - почитайте статью про bootstrap, хоть какое-то объяснение как работает ЭТО у Атмела. Надо признать, что дока на ARM у Atmel - полное говно, но имеем то, что имеем. У Keil есть в составе флешер для загрузки в датафлеш, можете попробовать.
В меню Keil: Flash->Configure Flash Tools... Закладка Utilities выбираем "Use target driver for flash programming", выбираем наш отладчик (у вас Ulink) жмем кнопку Settings - получаем окно Flash download setup. Жмем Add и выбираем из списка AT91SAM9x25 ATD25DF321 и пробуем заливать во флешку. Я бы сам порверил, но подобных девкитов под рукой нет. На работе валяется где-то AT91SAM9G20 - но я туда попаду через неделю, не раньше. Этим у нас другой чел занимался с год назад, щас забросил за ненадобностью. Но если упретесь совсем, найду и сам проверю. Чип хоть и другой, но идеология в плане загрузки, одинаковая.
Еще советую почитать на стартеркитовском форуме http://www.starterkit.ru/html/index.php ... orum&cat=5 - там ребята с подобными проблемами бьются.
И еще один полезный ресурс http://www.at91.com/linux4sam/bin/view/ ... 1Bootstrap

Автор:  SII [ Пт окт 26, 2012 10:29:44 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

путешественник, KEIL, да и любой другой подобный инструмент через программатор может "дотянуться" только до внутренней памяти контроллера или внешнего ОЗУ (в последнем случае сначала производится настройка контроллера памяти, чтобы это самое ОЗУ уже работало). Чтобы добраться до такой памяти, через программатор выполняется простая команда типа "прочитай ячейку" или "запиши ячейку".

Программирование датафлэшки идёт по-другому, поскольку с точки зрения процессора (а значит, и программатора) она не является массивом ячеек памяти (подключена-то через SPI). Сначала через программатор в ОЗУ "заливается" небольшая программка, которая и будет писать данные в датафлэшку, а потом в оставшееся свободное место ОЗУ порциями записывается информация для датафлэшки, а уже загруженная программка эти данные "шьёт" в датафлэшку. Кстати говоря, примерно то же самое, вероятно, происходит и при записи во внутреннюю флэш-память МК, где она есть (я просто не разбирался, как именно идёт этот процесс): ведь писать в тамошние ячейки, как в обычное ОЗУ, невозможно, надо выполнять ещё всякие другие манипуляции, не всегда описанные в документации.

У KEIL есть набор "алгоритмов" для программирования разных контроллеров, т.е. тех самых мелких программок для работы как с внутренней флэш-памятью, так и внешней (о них выше писал coredumped, когда указывал, где их выбирать). Однако не факт, что они будут в наличии в конкретной версии MDK. У меня сейчас стоит 4.54, и что-то я не вижу там внешние датафлэшки...

Автор:  Satyr [ Пт окт 26, 2012 10:36:06 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

SII писал(а):
Кстати говоря, примерно то же самое, вероятно, происходит и при записи во внутреннюю флэш-память МК, где она есть (я просто не разбирался, как именно идёт этот процесс):

Да.
собсно, в том же IARе можно посмотреть собсными глазами.
например, C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\config\flashloader\ST\FlashSTM32F10xxxRAM4K.out - лоадер нашего любимого "АРМ за 1$" :)))

Перед загрузкой и запуском флешлодера, дебагер непосредственной записью в регистры переферии инициализирует МК скриптом.
в вышеупомянутом случае FlashSTM32F10xxx.mac

Если памяти дофига и чтоб ускорить загрузку больших приложений и съэкономить ресурс флеша, можно написать свои лодеры, скрипты.
Я lpc178x с прогой в 256кб отлаживаю... из внешнего SDRAMа, куда прога грузится заметно шустрее, чем во флеш.

Автор:  путешественник [ Пт окт 26, 2012 13:20:33 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

coredumped, спасибо за ссылки, изучаю. Сходил по последней ссылке, сделал как там описано, но при инициализации dataflash, ответ от платы:
DATAFLASH::Init 0
-I- DATAFLASH::Init 0 (trace level : 3)
-I- Loading applet isp-dataflash-at91sam9260.bin at address 0x20000000
-E- Script error: Error Initializing DataFlash Applet (Can't detect known device)
(AT91-ISP v1.11) 3 %

Автор:  SII [ Пт окт 26, 2012 17:32:46 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Пара причин возможных проблем, сразу пришедших в голову:

1. Возможно, на Вашей плате какой-нибудь перемычкой выбирается, загружать из датафлэшки или с СД-карты (где-то вроде встречал подобное решение). Если такая возможность имеется, надо убедиться, что перемычка замкнута так, чтобы давать доступ именно к датафлэшке.

2. Возможно, слишком древняя версия прошивалки, а на плате стоит новая датафлэшка, вот её и не опознаёт и не знает, как с ней работать...

Автор:  путешественник [ Пт окт 26, 2012 17:57:23 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

перемычек несколько, но только одна выбирает загрузку через:
Enables boot on the NCS0 или Enables boot on the internal ROM
пробовал и так и так.
по второму пункту, "прошвалку" (сам-ба) взял с диска, который шел с платой. сам-ба версии 2.7. датафлеш atmel 45DB642D-CNU

Автор:  путешественник [ Пн окт 29, 2012 12:01:05 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

отладочная плата почему-то перестала определяться самбой через usb :(
перед этим я попробовал загрузить bootstrap в нандфлэш и у меня все получилось, нандфлэш проинициализировалась и бинарник записался. но после этого плата перестала определяться самбой по USB....
подскажите, почему и как сделать что-бы плата по usb пределялась самбой?

Автор:  coredumped [ Пн окт 29, 2012 20:37:56 ]
Заголовок сообщения:  Re: AT91SAM9260-ek + ULINK2 + KEIL

Все правильно. Она будет видеться самбой, когда выполняется загрузчир из ROM. Те, если бутлоадеру не удалось загрузить какое-либо приложение, он переходит в режим DFU и плата видится по USB. Короче, пока работает бутлоадер - плата видится как "SAMBA чета-там", когда бутлоадер запустил вашу программу - тут уже ваша программа определяет, как будет работать USB (host/device/OTG...)

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/