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

prof2005

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

920 просмотров профиля
  1. К сожалению, предыдущий пост оказался ошибочный. В реале, линкер вставлял код бинарника совсем не туда куда хотелось, а работало потому что код загрузчика уже был прописан ранее. После полного стирания чипа, разумеется, все перестало работать. Пришел к другому варианту инжектирования кода бинарника в код проекта, только пришлось использовать дополнительную утилиту конвертирования bin в массив данных asm. Сам же код trampoline_uc3.s82 выглядит следующим образом: #include "trampoline_uc3.h" RSEG SSTACK:DATA:NOROOT(2) // This must be linked @ 0x80000000 if it is to be run upon reset. RSEG RESET:CODE:NOROOT(1) PUBLIC __trampoline __trampoline: // Здесь был переход на собственнй код: //rjmp program_start //...теперь вставлен код бутлоадера DFU: #include "at32uc3a3-isp.s82" ORG PROGRAM_START_OFFSET program_start: // Initialize the stack pointer. lddpc sp, ??SPS // Jump to the C runtime startup routine. lddpc pc, ??cmain // Constant data area. ALIGN 2 ??SPS: DC32 SFE(SSTACK) & ~3 EXTERN ?main ??cmain: DC32 ?main END где файл at32uc3a3-isp.s82 получен путем конвертирования: bin2asm.exe at32uc3a3-isp.bin at32uc3a3-isp.s82 В настройках проекта для линкера также указывается точка входа в код: Entry symbol имеет значение __trampoline Желаю всем успехов! bin2asm.7z
  2. Поделюсь своим опытом добавления кода DFU в проект на IAR'е. В настройках проекта указывается bin-образ загрузчика для линкера: Project Options\Linker\Config\Raw binary image, где заполняются поля: File - вводится имя файла; Symbol - имя объекта в проекте, например __DFU_ISP; Segment - имя сегмента, где располагается код, должен быть CODE; Align - выравнивание, равно 4. На этой же закладке указывается точка входа в код: Entry symbol имеет значение __trampoline В проект добавляется стартовый код из ASF с небольшой модификацией, файл trampoline_uc3.s82: #include "trampoline_uc3.h" RSEG SSTACK:DATA:NOROOT(2) // This must be linked @ 0x80000000 if it is to be run upon reset. RSEG RESET:CODE:NOROOT(1) PUBLIC __trampoline __trampoline: // Здесь был переход на собственнй код: //rjmp program_start //...теперь вставлен код бутлоадера DFU: EXTERN ?__DFU_ISP ORG PROGRAM_START_OFFSET program_start: // Initialize the stack pointer. lddpc sp, ??SPS // Jump to the C runtime startup routine. lddpc pc, ??cmain // Constant data area. ALIGN 2 ??SPS: DC32 SFE(SSTACK) & ~3 EXTERN ?main ??cmain: DC32 ?main END После данных операций, загрузчик будет шиться вместе с основной программой в процесс отладки, и также будет имплантирован в прошивку программы. Удачи!
  3. CADiLO, примного благодарен! Замена прошивки на 1137B01SIM900M64_ST_ENHANCE действительно помогло решить данную проблему. Проверил на всех симках, все шлет и принимает :)
  4. Спасибо! Буду пробовать, о результате отпишусь...
  5. На счет обновления, конечно было бы здорово, но прошивки у меня нет (покупались модули как тестовые образцы в кол-ве нескольких штук, я да же не знаю у какого поставщика), т.о. приходится обращаться за помощью сюда... 1,2) Питание выполнено от Li-ion аккумулятора, далее от него же питается МК через LDO-стабилизатор на 3.3В. Согласование уровней сделано на 74LV07A. У модуля стоит тантал с керамикой, согласно даташиту. 3) С симкой вроде все тоже самое что и в даташите только без защитных диодов, полагаю криминала в этом нет. Симка стоит у модуля. По схеме: в реале за место сигнала RI сделан STATUS, иначе было невозможно определить состояние модуля. Смущает больше всего то, что не работает именно с данной симкой :( , поэтому "железячные" проблемы маловероятны.... Попробовал - не помогло...
  6. Добрый день! Решил использовать данный девайс, задача простая прием-посылка SMS. Все вроде хорошо, все работает, но столкнулся с такой проблемой: поставили новую симку MTS RED Energy_News_Pay, и при попытке послать SMS модуль наглухо виснет, помогает только ресет. Т.е., как это выглядит: AT+CMGF=1 OK AT+CSCS="GSM" OK at+csmp? +CSMP: 17,167,0,141 OK AT+CMGS="+7xxxxxxxxxx" > ABC <Ctrl-Z> и все, уходит в аут... Пробовал через команду "AT+CMSS" - эффект тотже. Вставлю другую симку, ту же МТС или TELE2, шлет все норм. Прошивка: Revision:1137B09SIM900M64_ST Модуль: S2-1040S-Z091U да, с симкой все впорядке, с телефона все шлет, также пробовал в другом SIM900 со старой прошивкой B03, тоже шлет. Буду благодарен за помощь!
×
×
  • Создать...