VladislavS 39 20 июня, 2005 Опубликовано 20 июня, 2005 · Жалоба Только начал работать с ARM и сразу на AT91RM9200. До этого имел дело c ATMega128. Потихоньку начал разбираться. Сначала во внутренней RAM простенькие программы запускал, шупал настройки и проникался масштабом бедствий. Потом дошло дело до Flashloader. Два дня отладчика и он заработал. В эттаче FlashLoader для AT91RM9200 + AM29LV160DB(T) с исходниками. Может кому полезно будет. Ну и попутно вопросы созрели: 1. Помогите разобраться с тактовыми частотами. PLLB = 96 МГц c выходом 48 для USB это понятно. Все остальное буду тактировать от PLLA. Какую MCK надо подать на Memory Controller, если на нем подключено AM29LV160DB 70 нc и SDRAM с CL=2 при 100 МГц. 2. Тактовая на SDRAM равна MCK? Тогда что лучше в плане производительности a) Процессор на 180 МГц и SDRAM на 90 МГц б) Процессор на 100 Мгц и SDRAM на 100 МГц Код будет исполняться из SDRAM. 3. Не совсем понял с времянкой работы FLASH на SMC. Во флэшлоадере MCK у меня 96 МГц c PLLB и все настройки SMC по умолчанию. Как это вяжется с 70 нc скоростью микросхемы AM29LV160D? Похоже, я что-то не понимаю. 4. Стоит ли стэк помещать во внутренней RAM процессора, а не в SDRAM. Получу ли я прибавку в скорости. Как к этому отнесется кэш? FL_AT91RM9200_AM29LV160D.RAR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 20 июня, 2005 Опубликовано 20 июня, 2005 · Жалоба С вопросом номер 3 разобрался сам. Был невнимателен и не заметил, что Flashloader работает не на частоте PLLB, а на частоте PLLB/16. А это всего лишь 6 МГц. Кстати, наверное надо в макросе флэшлоадера прописать тактироваться от (Main Clock)/4 . Так можно будет шить на системах, где PLLB не заводится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSG 0 21 июня, 2005 Опубликовано 21 июня, 2005 · Жалоба 1. Помогите разобраться с тактовыми частотами. PLLB = 96 МГц c выходом 48 для USB это понятно. Все остальное буду тактировать от PLLA. Какую MCK надо подать на Memory Controller, если на нем подключено AM29LV160DB 70 нc и SDRAM с CL=2 при 100 МГц. 2. Тактовая на SDRAM равна MCK? Тогда что лучше в плане производительности a) Процессор на 180 МГц и SDRAM на 90 МГц б) Процессор на 100 Мгц и SDRAM на 100 МГц Код будет исполняться из SDRAM. 3. Не совсем понял с времянкой работы FLASH на SMC. Во флэшлоадере MCK у меня 96 МГц c PLLB и все настройки SMC по умолчанию. Как это вяжется с 70 нc скоростью микросхемы AM29LV160D? Похоже, я что-то не понимаю. 4. Стоит ли стэк помещать во внутренней RAM процессора, а не в SDRAM. Получу ли я прибавку в скорости. Как к этому отнесется кэш? Ответ на первый и попутно на второй вопросы - с точки зрения производительности лучше : a) Процессор на 200 МГц и SDRAM на 100 МГц, но т.к производитель нормирует максимальную частоту работы на внешней шине всего лишь 80 Мhz, то есть ещё 2 варианта: б) Процессор на 209 МГц и SDRAM на 70(209/3) МГц; в) Процессор на 160 МГц и SDRAM на 80 МГц. ВЫбирай сам. Ответ на третий вопрос - нужно внимательно посмотреть на значение МСК и настройки SMC для нужного nCS. Ответ на четвертый вопрос - по моему мнению стэк стоит помещать во внутренней RAM процессора, а не в SDRAM, работать будет быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 21 июня, 2005 Опубликовано 21 июня, 2005 · Жалоба Просветление потихоньку приходит. Спасибо. С частотами разобрался. FLASH пашет как милая, SDRAM сейчас буду запускать. А нет случайно примера как в IAR написать команды включения кэшей? Что-то пока не приходит просветление по поводу: CP15 registers can only be accessed in privileged mode by: • MCR (Move to Coprocessor from ARM Register) instruction Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSG 0 21 июня, 2005 Опубликовано 21 июня, 2005 · Жалоба Случайно примера как в IAR написать команды включения кэшей у меня нет, а то что касается включения и настройки кэш-памяти - можно посмотреть как это делается в Linux. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 21 июня, 2005 Опубликовано 21 июня, 2005 · Жалоба Надо отдать должное IAR за исчерпывающую документацию. Для включения кэша (вообще для доступа к CP15) можно пользоваться функцией __MCR void __MCR(__ul coproc, __ul opcode_1, __ul src, __ul CRn, __ulCRm, __ul opcode_2); Generates a coprocessor write instruction (MCR). Так как это надо делать в режиме ARM, то гораздо проще оказалось прописать все в cstartup.s79 прямо на ассемблере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvj 0 16 сентября, 2005 Опубликовано 16 сентября, 2005 · Жалоба А можно что-нибудь по-проще? Не понимаю как его (flashloader) использовать - сам пока только "лампочками мигаю" и тестирую (пишу/читаю) SDRAM. Гружусь Xmodemом (виглер бастует). Вот... А записать/прочитать флэш (такой же) ой как хочется. Об kernele конечно не может быть и речи, пока... Не нашёл в этом loaderе даже обращения к SMC. Ткните ПОЖАЛУЙСТА куда копать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 16 сентября, 2005 Опубликовано 16 сентября, 2005 · Жалоба Для того чтобы использовать этот FlashLoader надо подключиться по J-TAG. Не важно чем Wiggler подойдет. С его помощью можно flash прошить. Подробнее смотри EWARM User Guide страницу 232. Там все подробно. Для X-Modem это решение не идет. Подойдет вот это http://www.ucrouter.ru/download/AT91RM9200-29lv160d.bin Собственно там еще много чего интересного есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvj 0 21 сентября, 2005 Опубликовано 21 сентября, 2005 · Жалоба Для того чтобы использовать этот FlashLoader надо подключиться по J-TAG. Не важно чем Wiggler подойдет. С его помощью можно flash прошить. Подробнее смотри EWARM User Guide страницу 232. Там все подробно. Читал. Между делом и флэш раскочегарил - пишу, читаю, стираю. Но т.к. слишком зелёный в этом деле (начал вот читать уже с первых страниц) - непонял что конкретно подсовывать в качестве пути в диалог Override default flash loader path? FlashAT91RM9200_AM29LV160.d79? выдаёт ошибку "Overlapping address ranges" И в перспктиве осталось неясным как выполнить этот самый пункт первый "C-SPY downloads the flash loader into target RAM" ? PS> А как вообще IAR с Wigglerом совмещать надо? схема с двумя буферами и ресетами (SRst инвентирован), IAR_4.30 Я как-то пару раз вошёл в debug (CtrlD) режим без проблем. А теперь никак: "Check that all cables are connected and power is OK" Настройки wigglerа не менял, изменение последних (скорость и ресет) результатов недаёт. А OCD Commander работает... Здесь промелькала тема что IAR4.11 c Wigglerом не дружит. Ну блин это же не значит что савсем несовместим! Между прочим, насколько я теперь вспоминаю я перезапустил IAR с другим проектом. И теперь он Wiggler не видит :angry2: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 21 сентября, 2005 Опубликовано 21 сентября, 2005 · Жалоба В меню настройках Debuger надо указать Use macro file на файл .mac, а на вкладке Download галку Use flashloader. И потом добавить запись с указанием файлв d79. В параметрах указать стартовый адрес flash. Дополнительно можно задать параметры --erasechip чтобы стереть весь чип перед записью или --eraseonly чтобы только стереть чип без записи. Кстати, на подходе новая версия с поддержкой DataFlash на SPI. На выходных дотестирую и выложу. В связи с этим вопрос к спецам возник. Я хочу сделть команду, которая позволит прописать в вектора прерываний данные, чтобы BootLoader распознал прошивку как загрузочную. Что делать с 6-м вектором понятно - там рамер прошивки и параметры flash, которые определяются на автомате. А как бытьс остальными векторами? Если они не прописаны, что туда записать? Есть идея просто 0-й продублировать. Прокатит ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSG 0 22 сентября, 2005 Опубликовано 22 сентября, 2005 · Жалоба Мы просто меняли в редакторе нех-значение 6 байта и всё работало. В принципе и у тебя должно получиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 сентября, 2005 Опубликовано 22 сентября, 2005 · Жалоба Вопрос не в том чтобы загрузиться, это я как раз умею и без hex-редактора. Вопрос в том чтобы FlashLoader делал поправки на автомате. Для того чтобы прошивка загрузилась из SPI надо выполнить два условия: 1) Шестой вектор содержит информацию о размере кода и типе Flash 2) Все остальные вектора команду перехода. Если с первым все понятно - никаких вольностей, все до бита определено, то ко второму вопросу можно подойти творчески. - ничего не менять. Это правильней всего, пусть программист сам все определит в программе. - если какие-то вектора пустуют, то их можно насильно прописать. Это упростит жизнь новичкам, которые еще не весь даташит наизусть знают. Только хочется сделать это максимально правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvj 0 23 сентября, 2005 Опубликовано 23 сентября, 2005 · Жалоба Такие дела: Wiggler глючит - отложил пока, в использование Embedded srvcов не въехал. Написал свой загрузчик по XModemу в SDRAM оттуда во флэш - в начало 0го сектора. Загружаю(во флэш) тестовый .bin с добавлеными вперёд 32 байтами. В шестой вектор пишу размер всего кода. Пробовал как Little так BigEndian (в отношении первых 32 бойтов). Также пробовал перекл. флэш в 8бит (пин у неё ByteModeSelect). Не грузит с флэша и всё :angry2: Подскажите мож чё нетак делаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 23 сентября, 2005 Опубликовано 23 сентября, 2005 · Жалоба Еще раз внимательно прочти страницу 88 и особенно 89 даташита doc1768.pdf. Лучше чем там написано объяснить трудно. Вкратце - шестрой вектор содержит ИНФОРМАЦИЮ О ТИПЕ МИКРОСХЕМЫ Flash и РАЗМЕР КОДА для загрузки. А остальные вектора команды LDR или B. И все будет грузится. Кстати, эти 32 байта не добавляются, а являются частью кода, так что лучше скомпилировать код сразу как надо. Только не советую проводить опыты без JTAG, а то как только оно начнет грузиться из SPI, то про загрузку по XModem можно забыть. Разве что NPCS0 отключить джампером. Ну или предварительно загрузчик в параллельную флэш прописать и дергать BMS в случае чего. Ну и про Embedded Services - все работает. Причем, точно так как написано в даташите. Надо только не забывать проверять статус занятости микросхемы перед выполнением каких-либо действий с ней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvj 0 23 сентября, 2005 Опубликовано 23 сентября, 2005 · Жалоба Кстати, эти 32 байта не добавляются, а являются частью кода, так что лучше скомпилировать код сразу как надо. догадывался, но я то ожидал увидеть вектора в начале .bin'а, а там только первый есть, остальные - нули. Может покажете свой cstartup.s79 - ведь цивильно вектора вписываются туда как я понял из EWARM_CompilerReference.pdf (а не hex редактором). Кстати надоли тоогда что менять в.xcl ? Впринципе же эти директивы о содержимом табдицы векторов можно в любой имеющийся в проекте .s79 засунуть? Сам то я пользуюсь пока тест проектом от тов. Bender'а: там был в OBJ директории cstartup.r79 - я его потёр - ничё неизменилось. Теперь про шестой вектор. В шите говориться об установках для dataFlash. Но у меня то обычная 29LV160 от EBI через SMC. SPI нету. А стр. 95 п.7.3.3.5 упоминается размер кода в шестом векторе. Благодарю всех за исчерпывающие ответы особенно что-нибудь про этот cstartup. Как-то сам теперь удивляюсь что позади работа c 51ми TUSB3210 и 7C68013(EZ-FX2, USB2.0 поднимал - детский сад, как теперь вижу) на Keilе, а вот удалось прожить не вдаваясь в подробности cstartup'ов - ,были там какие-то - ну хрен с ними - и так работало... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться