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

SIM300 Вопросы по применению

Заказчик принес для макетирования модуль SIM300, дата выпуска, судя по маркировке - начало 2006 года.

Модуль выдает на ATI:

SIMCOM_Ltd

SIMCOM_SIM300M(SST)

Revision:P1008B01SIM300M32_SST_INNO

 

Судя по всему это пилотная инженерная версия модуля после перехода на память SST.

Модуль ведет себя странновато: включать его поверкеем удается, а вот выключить нет.

 

Вопрос: можно ли в него зашить последнюю (1008B15) версию фирмваре, не поменялось ли с тех пор железо?

Или вообще не стоит его мучить и потребовать от заказчика новый модуль?

 

На самой печатной плате маркировка:

SIM300_V2.04(050926)

F164671-7-2M

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно попробовать и обновить, хотя у нас с 15 версией идут модули с платами - "PCB v7.03"

 

Думаю хуже не будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Удалось прошить в этот модуль версию 1008B15SIM300M32_SST34HF3284 предварительно прочитав и сохранив оригинальное содержимое флешки. Сам процесс прошивки прошел нормально, правда оказалось, что в модуле стоит другая память: SST32HF3281

После обновления модуль стал нормально включаться и выключаться поверкеем, стал нормально мигать NETLED. Но модуль перестал реагировать на АТ команды! Проверил на всех скоростях. При этом, из модуля периодически вываливаются строчки на 115200:

FF FF 2B 43 42 43 4E 3A 20 30 2C 39 30 FF FF    ..+CBCN: 0,90..
FF FF 2B 43 42 43 4E 3A 20 30 2C 39 31 FF FF    ..+CBCN: 0,91..

 

Что еще можно предпринять? Как провести какой-нибудь системный сброс модуля?

Может дело в том, что я перепрошивал, не очищая всю флеш?

Распределение памяти, таблиц могло сильно изменится.

Что вообще происходит, когда прошиваешь модуль короткой программой с очисткой всей флешки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня с вот этой прошивкой (вложение) проблем не возникало.

Попробуйте перешить....

Если продолжатся глюки, значит версии плат не совпадают......

У нас идут платы - SIM300_V7.03

 

Если прошить короткой программой с очисткой флешки:

 

1. IMEI заменится на технологический - можно поправить потом в Service tool или прочитать его AT+GSN и изменить на нужный в прошивке и зашить еще раз.

2. Перегенерятся все таблицы - особого криминала не замечено и к фатальным последствиям не приводит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня с вот этой прошивкой (вложение) проблем не возникало. Попробуйте перешить....
Именно этим и это и прошивал первый раз.

 

Попробовал очистить всю флешку, но никаких результатов это не дало - те же глюки, видимо железо отличается :(

 

Далее решил вернуть все обратно, дабы можно было бы хоть отлаживать работу по УАРТу (мои SIM-карты эта версия ПО не видит). С боооольшими матюгами это удалось (спасибо ув. CADiLO, помогли ваши "наводки"). Правда так и не понял, где правильно резать полную прошивку. На цельную говорит что-то типа "некорректные адреса", слишком короткую прошил, но она вышла еле живой :)

В конце концов отрезал только последний кусок с данными, где сериальный номер и IMEI - вроде стало как прежде.

 

Вообщем заказчик послан за новым модулем, целый рабочий день коту под хвост, зато experience-а завались..... B)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как резать рассказываю на примере той версии что выложена выше:

 

смотрим первую строчку

 

0000000000: 00 00 00 01 38 16 1D 01 │ E8 72 9F E5 01 60 A0 E3

 

000000 - старт

01 - разделитель

1D1638 - длина прошивки (но есть хитрость, о ней ниже)

01 - разделитель

 

если стать в конец обрезаной прошивки то там будет такое

 

00001D1620: 00 00 00 00 00 70 29 00 │ 00 00 00 00 00 70 29 00

00001D1630: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00

 

вот это место ищем в полной и обрезаем так чтобы от последнего

70 29 было 17 байт

 

это и будет искомый файл, но длину в заголовок ставим на 7 байт меньше !

 

вобщем если посмотрите куда указывает длина - все станет ясно.

 

и еще - не знаю почему но иногда прошивальщик не берет файл с другим именем,

переименовываем так как дает симком и все начинает работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(мои SIM-карты эта версия ПО не видит).

Если не секрет - какого оператора и когда приобретены? Тут тоже есть пара загадочных карточек, которые SIM300 не видит (а Q2406 видит, и все, что под рукой, телефоны - тоже) - одна SIM-SIM выпуска примерно 2005 г. и одна Билайновская...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

вот это место ищем в полной и обрезаем ...

...

это и будет искомый файл, но длину в заголовок ставим на 7 байт меньше !

...

и еще - не знаю почему но иногда прошивальщик не берет файл с другим именем, переименовываем так как дает симком и все начинает работать.

Немного вас поправлю насчет "01 - разделитель". Это не разделитель, а 4-х байтный адрес из адресного пространства проца модуля, куда физически подключена флеш. Флеш расположена по адресам 0x01000000...0x013FFFFF. Соответственно первые 8 байт прошивки - адреса, куда нужно прошивать. (Когда я сначала написал 00 00 00 01 38 16 1D 00, флешер выдал длину 0xFF1D1638)

 

И почему на 8 байт больше, тоже понятно - первые 8 байт файла с адресами служебные, к прошивке не относятся.

 

С именами файлов проблем не было, хотя имена были произвольными. Периодически сбивался процесс прошивки в момент старта загрузчика из ОЗУ модуля (с различными ошибками), но если этот момент проскакивал, дальше все шло без проблем. Я правда списываю эти сбои на то, что у меня модуль и COM порт подключены на различные УАРТы МК, и я просто программно транслирую уровни на TX, RX.

 

А вот вопрос насчет маркера конца прошивки: это 100% известно или просто "пока все прошивки заканчивались так"?

 

Если не секрет - какого оператора и когда приобретены?
Думаю, что у меня проблема не с карточками, а с версией ПО модуля. Я в первом посте писал, что версия В01 (первая). Работа этого модуля вообще мало похожа на то, что написано в теперешней документации :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с поправкой согласен, просто в данном контексте так проще было показать что и где чикать в "длинной" прошивке....

ну вроде как поленился при объяснении лишние клавиши нажать. :-))))))

 

в серии прошивок 1008 все имели такую концовку.

в новой серии - 1604- уже другая концовка....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще вопрос по железу: "процедура безопасного умирания"

Есть какие неофициальные рекомендации SIMCOMа или опыт практикующей общественности на тему:

Какие уровни сигналов на управляющих ногах PWRKEY, DTR и RTS наиболее безопасны в момент аварийного пропадания питания.

А то информации мало и она противоречива.

Допустим, DTR и RTS подключены через драйверы с подтяжкой к VEXT. В начале пропадания питания их лучше поставить в пассивное (high) состояние или без разницы? Вроде проскакивали сообщения, что при DTR low->high модуль быстро прекращает передачу. Или нет?

 

По поводу PWRKEY:

- с одной стороны, в FAQ написано "If you pull down PWRKEY PIN to GND directly, the module will power on and power off automatically when the module’s working voltage below 3.3V. This will damage the module.

- с другой стороны, при прошивании флешки, PWRKEY зажат в нуле и остается на земле после программирования и в момент снятия питания. И ничего страшного не происходит.

Мне чего-то кажется, что PWRKEY нужно подтягивать к VBAT и переключать в High в начале пропадения VBAT. Какие мнения?

 

И какие АТ команды можно послать (если, конечно, успеешь :) ) при обнаружении пропадания питания. Например, в момент передачи данных по GPRS?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Если напряжение ниже 3,3 В, модуль будет выключаться и включаться автоматически... может быть, они не совсем правы (такое может быть разве что при отсутствии супервизора питания!). Другое дело, если напряжение "плавает", то выше 3,3 В, то ниже. Выключился - напряжение повысилось - включился, начал искать сеть, напряжение просело - выключился. Какой-то гистерезис там, конечно, должен быть (нужно посмотреть внимательнее в доках или измерить), но его при повышенном внутреннем сопротивлении источника питания (например, старая батарея) может оказаться недостаточно.

А из GPRS быстро выйти вряд ли получится...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"процедура безопасного умирания" от состояния не ногах не зависит.

фокус в блочной перезаписи флешки SST - именно она в момент пропадания питания может потереть сама себя......

 

Powkey подтянут к Vbat внутри модуля и во внешнем резисторе не нуждается.

 

>>>>>- с другой стороны, при прошивании флешки, PWRKEY зажат в нуле и остается на земле после программирования и в момент снятия питания. И ничего страшного не происходит

 

так в режиме програмирования ничего кроме лоадера и не крутится в памяти, таблицы не перезаписываются и модуль свою флешину в качестве NVRAM не использует....

и выйдет он из этого режима или по таймауту - если комп не послал байт запроса на перепрошивку или после удачной перешивки выключением Vbat

обрыв процеса записи не приведет к краху, просто придется залить прошивку заново - начальный загрузчик сидит в защищенной памяти в чипсете и шанс затереть его - нулевой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привезли мне новый модуль SIM300Z (P1008B15). Поигрался с ним немного, вроде бы все, что проверил, соответствует документации.

Но вот возникли вопросы, связанные с передачей данных при помощи GPRS.

 

Как я понял, процесс установления соединения состоит из нескольких этапов:

- Регистрация в сети GSM;

- Подключение к сервису GPRS (AT+CGATT=1);

- Активация PDP контекста с получением PDP адреса от мобильной сети;

- Установление TCP или UDP соединения.

 

Так вот, меня удивило наличие множества различных команд, которые частично дублируют друг друга. Получается, что установить соединение можно различными путями.

 

Так работает (AT+CGATT=1 даже можно и опустить, к GPRS само подключается):

TE: AT+CGATT=1
ME: OK                          (STATE: IP INITIAL)
TE: AT+CIPCSGP=1,"APN","USER","PASS"
ME: OK                          (STATE: IP INITIAL)
TE: AT+CIPSTART="TCP","xx.xx.xx.xx","PORT"
ME: OK
ME: CONNECT OK                  (STATE: CONNECT OK)

 

И так работает:

TE: AT+CSTT="APN","USER","PASS" (+CGATT: 0    STATE: IP INITIAL)
ME: OK                          (+CGATT: 0    STATE: IP START)
TE: AT+CIICR
ME: OK                          (+CGATT: 1    STATE: IP GPRSACT)
TE: AT+CIFSR
ME: xx.xx.xx.xx                 (+CGATT: 1    STATE: IP STATUS)
TE: AT+CIPSTART="TCP","xx.xx.xx.xx","PORT"
ME: OK
ME: CONNECT OK                  (+CGATT: 1    STATE: CONNECT OK)

 

А вот со стандартными командами

AT+CGDCONT - Define PDP Context

AT+CGACT - PDP Context Activate Or Deactivate

какие-то непонятки. Такое впечатление, что это бутафория, неработающие заготовки.

PDP контекстов можно определить целых 10! Они пишуться и читаются. Можно их активировать и деактивировать. Только на работу с GPRS это никак не отражается. И точка доступа (APN) при активации контекста стеку TCP/IP не становится известной. :(

Вот так не работает:

ME initial state:               (+CGATT: 0    STATE: IP INITIAL)
TE: AT+CGDCONT=1,"IP","APN"
ME: OK                          (+CGATT: 0    STATE: IP INITIAL)
TE: AT+CGACT=1,1
ME: OK                          (+CGATT: 1    STATE: IP INITIAL)
TE: AT+CIPSTART="TCP","xx.xx.xx.xx","PORT"
ME: OK
ME: CONNECT FAIL
ME: STATE: IP IND
ME: +PDP: DEACT                 (+CGATT: 1    STATE: PDP DEACT)

 

И вот, в связи со всем этим, вопросы:

1. Зачем нужно такое разнообразие команд и вариантов?

2. Команда AT+CGACT в SIM300 действительно не до конца реализована, или я чего-то не понял?

Мне казалось, что при активации PDP контекста сразу должна настраиваться APN и сетью выделяться PDP адрес.

3. Где можно посмотреть описание состояний GPRS соединения (AT+CIPSTATUS)? Смысл части состояний понятна из названий, но остальные - полная загадка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот со стандартными командами

AT+CGDCONT - Define PDP Context

AT+CGACT - PDP Context Activate Or Deactivate

какие-то непонятки. Такое впечатление, что это бутафория, неработающие заготовки.

PDP контекстов можно определить целых 10! Они пишуться и читаются. Можно их активировать и деактивировать. Только на работу с GPRS это никак не отражается. И точка доступа (APN) при активации контекста стеку TCP/IP не становится известной. :(

+CGDCONT действует для "классического" соединения со стороны компа через ATD*99#. Собственно, после ATD*99 еще можно как-то указать и номер контекста, вот тут-то эти 10 штук и заработают.

 

Насколько настройки "внешнего" dial-upного gprs-а влияют на "внутренний" стек модуля - вопрос темный. Похоже, что настройки не пересекаются, и лучше подобрать работающую последовательность команд для твоей задачи экспериментально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно, после ATD*99 еще можно как-то указать и номер контекста, вот тут-то эти 10 штук и заработают.

ATD*99***<№контекста>#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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