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

Alex2172

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Alex2172

  • Звание
    Местный
    Местный

Контакты

  • ICQ
    Array

Посетители профиля

1 548 просмотров профиля
  1. Судя по осциллограмам флешка в ответ на запрос статуса возращает b10110100, что означает готовность флешки, кристал AT45DB321, защиты нет. Не понятно зачем 2000 раз переспрашивать статус, если статус говорит о готовности флешки. Может быть RM9200 на самом деле не умеет работать с флешкми типа AT45DB321, вроде на отладочных платах не ставят AT45DB321, хотя и заявлена возможность работы с AT45DB321. Также судя по осциллогамам обращение к SDRAM не происходит на этапе загрузки из DataFlash (шина данных в Hi-Z, хотя шина адреса дергается, имхо так и должно быть).
  2. Забудем на время про RomBoot. Исходные данные: Есть AT91RM9200+AT45DB321, во флешке уже прошит образ микропрограмки (ассемблерный код приводил выше), которая просто зажигает светодиод. Все. Ни чего больше не нужно для того чтобы загрузить из DataFlash в SRAM - ни SDRAM, ни RomBoot. Про ограничение в 12 кБ я прекрасно помню. Странно то, что программка размером в 4 кБ уже не запускается (она нормально загружается из DataFlash, это видно по осцилографу, но ей не передается управление, а управление передается в DBGU). При этом точно такая же програмка, но без хвоста из "B InitReset" (размером например <2 кБайт) прекарсно загружается. Хвост может состоять из NOP-ов, это не важно. Важно то что если размер образа превышает 2,5-4 кБайт, то образ считывается но ему не передается управление. А если меньше 2.5 кБайт, то ему нормально передается управление. Четкой границы (когда программа перестает загружаться) найти не удалось. При размере образа примерно 4 кБайт, получилась такая ситуевина, что программа то нормально запускается, то не запускается. Это видимо связано с тем что время считывания из Флэшки варируется незначительно (это видно по осциллографу). Т.е. во время загрузки из флэшки в SRAM происходит какое то событие (прерывание или таймаут таймера), после которого алгоритм загрузчика (тот что зашит в ROM) решает не передавать управление программе считанной в SRAM а перейти в DBGU. Я очень прошу, посмотрите кто может - ткните осциллографом на чип-селект DataFlash на готовой отладочной плате: интересует сколько времени выполняется загрузка из флэшки, и сколько из этого времени тратится на определение готовности флэшки (когда сразу после старта проц. периодически запрашивает байт статуса). У меня это время занимает 10-30 мс, может быть это слишком много. Спасибо На шине SPI я вижу следующую картинку: 1. После ресета через 100 мс проц. кидает клоки на 40 байтовых интервалов (видимо чтение первых 8 векторов) 2. В течение 20 мс с периодом 10 мкс проц кидает клоки на 2 байтовых интервала (видимо запрос байта статуса) 3. В течение 0,75мкс*РазмерОбраза проц кидает клоки для чтения образа из DataFlash ...Не понятно зачем он так много запрашивает байт статуса (пункт 2).
  3. Не понял логики. Может упустил чего. При старте процессора если BMS=1, пограмма в ROM пытается загрузить данные из DataFlash во внутреннюю SRAM. SDRAM не принимает в этом участие. Происходит следующее (насколько я понимаю процесс): 1. После ресета программа из ROM (внутренний загрузчик) пытается несколько раз прочитать байт статуса DataFlash (этот процесс занимает примерно 10-30 мс). 2. После того как байт статуса успешно прочитан, начинается чтение последовательности байт из DataFlash, считываются первые 8 векторов, проверяется их валидность, интерпретируется размер образа и геометрия флэшки; если все в норме, то продолжает считывать весь образ из DataFlash в SRAM. Этот процесс длится примерно 0,75мкс*КолвоБайт. 3. После чтение происходит ремап и передача прыжок на нулевой адрес, должно начаться выполнение программы закачанной в SRAM. Но этого не происходит если размер образа >2.5-4 кБайт, управление передается в DBGU (в терминал передается CCCC....). Да, SDRAM используется при записи образа в DataFlash ромбутом, но ведь я успешно читаю образ из флэшки, образ не поврежден. Если бы образ был поврежден, то либо первые 8 векторов были бы считаны не правильно (что не позволило бы загрузить данные из DataFlash), либо при передаче управления битой программе процессор вошел бы в клинч. Я ведь упростил по макисмуму програмку. B InitReset ; reset undefvec B InitReset ; Undefined Instruction swivec B InitReset ; Software Interrupt pabtvec B InitReset ; Prefetch Abort dabtvec B InitReset ; Data Abort rsvdvec B InitReset ; reserved irqvec B InitReset fiqvec B InitReset ; FIQ InitReset ; зажигаем лампочку mov r0,#0x80 mov r1,#0 STR r0,[r1,#-0xa00] STR r0,[r1,#-0x9f0] STR r0,[r1,#-0x9cc] dloop B dloop ; бесконечный цикл B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset B InitReset ... Если дописать "B InitReset" в конец программы так, чтобы было более 2.5-4кБайт, то образ считывается полностью из флэшки, но лампочка не загорается, а управление передается DBGU, а не считанной в SRAM программе. Если образ оставить <2.5кБ, то после загрузки из флэшки в SRAM лампочка успешно загорается.
  4. Есть платка: AT91RM9200 + AT45DB321 Проблема в том что, если в DataFlash лежит образ программы меньше 2.5-4 кБайт, то она успешно загружаентся из DataFlash. Если образ программы >4..5 кБайт (например RomBoot = 11кБайт), то программа загружается из DataFlash, но ей не передается управление (это видно потому что после загрузки программы из DataFlash все равно крутится внутрянняя программа из ROM и выдает СССС..., т.е. DBGU приглашает загрузить программу через XMODEM) Например если в DataFlash сохранен RomBoot: Осциллограф показывает что грузятся все 11 кБайт, т.е. 0x14 вектор (размер прорграммы и конфигурация DataFlash) считался правильно, но управление ромбуту не передалось. Читая данные DataFlash (с помощью того же RomBoot например, но загруженного через XMODEM) - видно, что образ RomBoot'а в DataFlash - не поврежден (тупо сравнивал считанные из DataFlash данные и то что содержится в RomBoot.bin). Если в DataFlash сохранить микропрограмку, которая просто зажигает лампочку и уходит в бесконечный цикл - такая програмка загружается из DataFlash. Но! Если к этой програмке в конец приписать 5-10 кБайт NOP-ов, то она загружается из DataFlash, но ей НЕ передается управление!!!! Менял DataFlash было AT45DB321C, поставил AT45DB321B - не помогло. На SPI шине ни чего больше не висит. Помогите пожалуйста разобраться, мозги уже кипят.
  5. 1. В compile редактируете пути 2. Если вы под виндой, то запускаете из командной строки sh compile (sh идет с WinArm например) 3. Если при компиляции сругнулась на puts, putchar добавляете флаги -fno-builtin-printf (там где $GCC main.cpp -c -Iinclude -Os -fno-builtin-printf) Вроде так. Уважаемые коллеги, прошу помощи (второй день бьюсь)!!! Проблема в том, что romboot не грузится из DataFlash. Мои действия: 1. Через XMODEM загружаю в SRAM romboot 2. Выполняю "1 c0000000", и загружаю romboot в DataFlash 3. Рестартую, но при этом romboot из DataFlash не стартует. При более детальном рассмотрении вижу: 1. В DataFlash лежит нормальный образ начиная с адреса 0xC0000000: - первые 8 вектора - B либо LDR как и положено - шестой вектор корректный 2. Осциллограф показывает, что после рестарта происходит следующее: - несколько раз (в теч. 15-20 мс) запрашивается статус DataFalsh - потом наблюдается считывание образа из DataFlash (судя по кол-ву байт считывается весь образ) - управление похоже не передается считанному образу - через несколько сот милисекунд стартует DBGU (XMODEM) Поскольку видно, что считывается правильное кол-во байт из DataFlash, то можно сделать вывод что первые 8 векторов считываются корректно. Но управление не передаюется считанной программе по окончанию загрузки из DataFlash, а передается обратно в DBGU (XMODEM). Не понятно почему. :( ЗЫ: покапался еще нмного, урезал программу на асме до минимума (зажигает LED и уходит в deadloop), в таом виде программа загружается из DataFlash, значит управление все же успешно переходит загруженной программе, ладно буду дальше сам разбираться чего там в RomBoot понаписано, что приводит к глюку.
  6. Судя по дате поста, Вы уже сделали выбор. На чем остановились при выборе?
  7. Хорошие ресурсы по теме: http://www.gsmpager.spb.ru/download.html http://www.netbeans.org/kb/50/tutorial-tc65-odd.html Проектных успехов Всем!!!
  8. Проблема решилась следующим образом: (1) поменял модем у поставщика на модем с новой прошивкой (Rev. 2.00) (2) сконфигурировал командой at^scfg вывод отладочной инфы в ASC0 (чего нельзя было сделать в Rev 1.041) Теперь при запуске at^sjra=a:/helloworld.jar отладочная инфа теперь выводится на теримнал at^sjra=a:/helloworld.jar OK Constructor startApp Hello World destroyApp(true) ВНИМАНИЕ разработчикам: требуйте от поставщика указать в счете версию прошивки Rev 2.00. Если не потребуете, то возможно поставщик постарается продать старую версию 1.041 (модем со старой версией невозможно перепрошить на версию 2.00) Успехов Всем!!!
  9. Правильно ли я понимаю, что Вы отказались от вывода инфы посредством system.out.println в ASC1 и используете свои функции для вывода отладочной информации в терминал через ASC0? Вы бы очень помогли, если бы кинули в мою сторону ваш пример типа HelloWorld. Спасибо. :beer:
  10. Помогите плз запустить HelloWorld, горит проект. Копирую в модуль файлы *.jar и *.jad на диск TC65, запускаю командой at^sjra=..., в ответ приходит Ок, но ни какая системная инфа не выводится в терминал функциями system.out.println(). Настроил отладчик, запускаю, все нормально до сообщения >>> Starting Debug Agent ... <<< в консоле Eclipse. А дальше не понятно как отлаживать, не доступны средства отладки Execute, Inspect и т.д. В представительстве сименс ответили, что необходимо иметь релиз 02.00, у меня релиз 01.041 (продали партнеры сиеменс). Релиз ни как не обновить. Получается что мы либо выбросили деньги на ветер (связались с сиеменс), либо все таки существуют какие-то средства отладки для релиза 01.041?
  11. Спасибо dezzer, иногда доп.ключевые слова упрощают поиск.
  12. И ссылка где все качали SMTK www.siemens-mobile.com/developer не работает :(
  13. На сколько понял, CD с софтом для разработки собственных программ не входит в комплект поставки TC65/TC65T. Поставщик сказал, что поищет но врядли найдет. На фтп не оказалось. Где его можно скачать? Спасибо
  14. Я оч.прошу тех у кого есть OpenAT посмотрите в примерах должен быть TELEMETRY (опрос цифрового входа) с какой макс. частотой можно опрашивать цифровой вход? Сам бы посмотрел, но качать почти 100МБ по диал-ап или покупать CD за 6000руб не зная понадобится ли он - проблематично . Спасибо.
  15. Здравствуйте, только начал знакомится с этим зверем (Q2406), OpenAT исчо не качал/покупал (на этапе определения а стоит ли оно того), посему вопрос к тем, кто уже его освоил... Можно ли организовать счетные входы на GPIO (либо полингом по таймеру, либо прерываниями)? Какую максимальную частоту при этом можно померить с какой точностью? Спасибо
×
×
  • Создать...