Перейти к содержанию
    

VladislavS

Свой
  • Постов

    1 240
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Сообщения, опубликованные VladislavS


  1. Что-то я не вижу где в даташите сказано, что на XIN32 можно подавать внешний клок. Про XIN сказано. Так что, похоже это неправильно. Но если и пробовать, то не так как вы делать. XOUT32 я бы оставил неподключенным или 15 пФ на землю. Уровень входного сигнала ограничить до 0,5 В и подавать через 1 мкФ.

  2. Надо отдать должное 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 прямо на ассемблере.

  3. Просветление потихоньку приходит. Спасибо. С частотами разобрался. FLASH пашет как милая, SDRAM сейчас буду запускать.

     

    А нет случайно примера как в IAR написать команды включения кэшей? Что-то пока не приходит просветление по поводу:

     

    CP15 registers can only be accessed in privileged mode by:

    • MCR (Move to Coprocessor from ARM Register) instruction

  4. С вопросом номер 3 разобрался сам. Был невнимателен и не заметил, что Flashloader работает не на частоте PLLB, а на частоте PLLB/16. А это всего лишь 6 МГц. Кстати, наверное надо в макросе флэшлоадера прописать тактироваться от (Main Clock)/4 . Так можно будет шить на системах, где PLLB не заводится.

  5. Только начал работать с 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

  6. Отвечу на первый вопрос. Смотри страницу 261 doc1768.pdf Цитирую:

     

    Then, at the 16th falling edge of Slow Clock, the bit MAINRDY

    in CKGR_MCFR (Main Clock Frequency Register) is set and the counter stops counting. Its value can be read in the MAINF field of CKGR_MCFR and gives the number of Main Clock cycles during 16 periods of Slow Clock, so that the frequency of the crystal connected on the Main Oscillator can be determined.

     

    Вкратце, там сказано, что после запуска(и стабилизации частоты) основного генератора в течении 16 периодов низкочастотного генератора считаются такты основного генератора. Это значение можно прочитать и вычислить частоту подключенного кварца.

     

    PLLи такого механизма не имеют. Их частоты, как впрочем и все остальные, задаются коэффициентами деления/умножения которые в любой момент можно считать. Но смысл в этом небольшой, так как кроме вас их туда записать никто не мог.

     

    Что касается частот USB. Похоже, единственный вариант правильно затактировать USB это настроить PLLB на 96 МГц и установить бит USB_96M, чтобы на USB подавалась частота 48 МГц.

×
×
  • Создать...