Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900 Series download Tools Customer
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Димон Безпарольный
В описании SIM900_EAT_GCC_HelloWorld.pdf написано:

Цитата
Перед процессом записи прошивки питание модуля должно быть выключено и ножка PWRKEY (ножка №1) должна иметь низкий логический уровень. Если это условие выполняется, то нажмите кнопу «Start Download» и дождитесь сообщения «Power On/Reset Target» (рис.28).


Но процесс полной прошивки занимает минут 5. Нужно ли постоянно удерживать ножку PWRKEY в нуле или после старта программирования её можно отпустить?

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

Спасибо.

Прошил через обычный порт (9, 10выв) - успех. Прошил через Dubug (27, 28выв) - успех. У меня крыша едет, или так должно быть?
CADiLO
5 минут это наверно при 115200 и СОМ порту. С переходника USB<>COM и скорости 460800 пишется гораздо быстрее.
Ну и это первый раз. Потом не трогая ядро своя программа заливается за пару десятков секунд.

В некоторых версиях флешеров встречается момент когда при отпущеной ножке после стирания модуль не пишется, а пытается рестартовать.
Поэтому лучше удерживать до конца.

Ядро пишется один раз, потом можно его не трогать.

Напоминаю что SIM900R c маркировкой S2-1047R-Z095M уже имеют универсальную прошивку с новейшим ядром ЕАТ и туда шьется только пользовательская прошивка.

SIM900x умеют обновляться через любой порт. Более того, пользовательскую прошивку в указаной выше версии модуля можно скачать с FTP сразу в память модуля и запустить самообновление. Однако ядро таким способом обновить нельзя. Да и незачем sm.gif
Димон Безпарольный
Цитата(CADiLO @ Mar 13 2014, 06:35) *
5 минут это наверно при 115200 и СОМ порту. С переходника USB<>COM и скорости 460800 пишется гораздо быстрее.
Ну и это первый раз. Потом не трогая ядро своя программа заливается за пару десятков секунд.

В некоторых версиях флешеров встречается момент когда при отпущеной ножке после стирания модуль не пишется, а пытается рестартовать.
Поэтому лучше удерживать до конца.

Ядро пишется один раз, потом можно его не трогать.

Напоминаю что SIM900R c маркировкой S2-1047R-Z095M уже имеют универсальную прошивку с новейшим ядром ЕАТ и туда шьется только пользовательская прошивка.

SIM900x умеют обновляться через любой порт. Более того, пользовательскую прошивку в указаной выше версии модуля можно скачать с FTP сразу в память модуля и запустить самообновление. Однако ядро таким способом обновить нельзя. Да и незачем sm.gif

Спасибо за исчерпывающий ответ. Скорость действительно 115200, выше пока задирать не буду. Использую FT232.

У меня теперь другая проблема - не выполняется пользовательский код. Прошивка 1137B01V02SIM900R64_ST_ENHANCE_EAT.cla. Модуль SIM900R.

Заливаю теперь только пользовательскую прошивку. Модуль на AT команды отвечает, а в debug порт ничего не выдает. Использую стандартный пример - GPIO.
CADiLO
Проверьте не отключена ли выдача в дебаг порт. Появится Женя, попрошу его скинуть материалы осеннего семинара, там эти мелочи по ЕАТ все упоминались. Или запросите с FTP "Макрогрупп" - они тоже по ЕАТ проводили и семинар и вебинар.

ftp://ftp.macrogroup.ru/Support/Seminar/w..._07_11_2012.pdf

Вот из их презенташки.

Вывод отладочной информации через Debug port

Fl_EnterDebugMode() – включение вывода

Fl_DebugTrace() – функция выводит отладочную информацию в Debug port (аналог Printf)
Fl_ExitDebugMode() – выключение вывода
Fl_DebugTrace() – вариант хорошо всем знакомого DebugPrint.
Размещая вызов этой в любом месте исполняемого кода можно получить на выходе порта Debug любую строку, массив, переменную или сообщение.

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

Например
ebdat7_01DebugTrace((const char *)"sscanf %d para: %d, %d, %d\r\n", i, p1, p2, p3);
или
ebdat7_01DebugTrace((const char *)"<<<<<<<EAT Task Work Loop begin>>>>>>>");

Если устройство не использует основной UART, можно печатать в него функцией
ebdat9_02SendToSerialPort()

Например
ebdat9_02SendToSerialPort((char *)flEventBuffer.eventData.modemdata_evt.data, flEventBuffer.eventData.modemdata_evt.length);


И еще - работая с примерами не копируйте строчки, особенно из PDF. Очень часто в описаниях стоят не те кавычки что требуются.
Димон Безпарольный
Цитата(CADiLO @ Mar 13 2014, 07:13) *
Fl_EnterDebugMode() – включение вывода

Вот как раз функции Fl_EnterDebugMode() нет в примере GPIO. Идет сразу вывод:

Цитата
ebdat7_01DebugTrace((const char *)"\r\n<<<Entry Customer Task Work>>>\r\n");


Щас прочитаю про эту функцию, добавлю, отпишусь.

Спасибо.

Bellissimo!

Добавил: ebdat7_00EnterDebugMode();
Получил в терминале:
Цитата
<<<Entry Customer Task Work>>>
Sprintf 9 : 3, 4, 4
sscanf 3 para: 9, 3, 4
<<<<<<<EAT Task Work Loop begin>>>>>>>eat1_02GetEvent ineat1_02GetEvent OUTdefualt Event: 10
eat1_02GetEvent infl_MultiTaskPrio5eat1_02GetEvent OUTdefualt Event: 10
eat1_02GetEvent ineat1_02GetEvent OUTEVENT_MODEMDATAOUTPUTDATA TYPE: 0x0eat1_02GetEvent ineat1_02GetEvent OUTeat1_02GetEvent ineat1_02GetEvent OUTdefualt Event: 10
eat1_02GetEvent ineat1_02GetEvent OUTdefualt Event: 10
eat1_02GetEvent ineat1_02GetEvent OUTEVENT_MODEMDATAOUTPUTDATA TYPE: 0x0eat1_02GetEvent ineat1_02GetEvent OUTEVENT_MODEMDATAOUTPUTDATA TYPE: 0x0eat1_02GetEvent ineat1_02GetEvent OUTeat1_02GetEvent in


Это какими же надо быть идиотами, чтобы поставлять нерабочие примеры.

Огромное всем спасибо за терпение к моим глупым вопросам.
CADiLO
Не-не, примеры рабочие, однако некоторые вещи там просто не включены из расчета что не всем нужны.
Ну а документация - так мы все ее досконально читаем только когда другие варианты не сработали sm.gif

SIM900 еще не так много доков. Вот например тот же SIMCom_3G_EBDAT_Application Notе - 140 страниц только кратких описаний API.
А полный .chm документ вообще зачитаться можно sm.gif

Так для примера оглавление 3G EAT. Это не считая что под всем этим еще и LUA можно запустить.

CODE

Contents
1. Introduction 12
1.1 Features: 12

2. SOFTWARE ARCHITECTURE 13
2.1 Software Organization 13
2.2 Embedded AT Library Information 13
2.3 AT Commands 14

3. Embedded AT Custom Libraries 15

3.1 os library 15
3.1.1. ebdat_os_printdir 15
3.1.2. ebdat_os_print 15
3.1.3. ebdat_os_gettick 16
3.1.4. ebdat_os_mktime 16
3.1.5. ebdat_os_localtime 16
3.1.6. ebdat_os_gmtime 17
3.1.7. ebdat_os_time 17
3.1.8. ebdat_os_strftime 17
3.1.9. ebdat_os_mem_alloc 18
3.1.10. ebdat_os_mem_realloc 18
3.1.11. ebdat_os_mem_free 19
3.1.12. ebdat_os_autodog 19
3.1.13. ebdat_os_assert_okts 20
3.1.14. ebdat_os_negate_okts 20
3.1.15. ebdat_os_get_usb_mode 20
3.1.16. ebdat_os_set_portmode 21
3.1.17. ebdat_os_get_portmode 21
3.1.18. ebdat_os_get_cscs 21
3.1.19. ebdat_os_set_cscs 22

3.2 thread library 22
3.2.1. ebdat_create_thread 22
3.2.2. ebdat_suspend_thread 23
3.2.3. ebdat_resume_thread 24
3.2.4. ebdat_kill_thread 24
3.2.5. ebdat_thread_running 24
3.2.6. ebdat_thread_suspended 25
3.2.7. ebdat_thread_get_current_index 25
3.2.8. ebdat_set_thread_priority 26
3.2.9. ebdat_set_current_thread_priority 26
3.2.10. ebdat_get_thread_priority 27
3.2.11. ebdat_get_current_thread_priority 27
3.2.12. ebdat_thread_sleep 27
3.2.13. ebdat_enter_crit_sect 28
3.2.14. ebdat_leave_crit_sect 28
3.2.15. ebdat_signal_clean 28
3.2.16. ebdat_signal_notify 29
3.2.17. ebdat_signal_wait 29

3.3 event library 30
3.3.1. ebdat_set_evt 30
3.3.2. ebdat_wait_evt 30
3.3.3. ebdat_peek_evt 32
3.3.4. ebdat_clear_evts 32
3.3.5. ebdat_evt_set_evt_priority 33
3.3.6. ebdat_evt_get_evt_priority 33
3.3.7. ebdat_evt_set_evt_owner_thread_idx 33
3.3.8. ebdat_evt_get_evt_owner_thread_idx 34
3.3.9. ebdat_evt_set_evt_as_ignored 34
3.3.10. ebdat_evt_is_evt_ignored 35
3.3.11. ebdat_get_evt_count_in_queue 35
3.3.12. ebdat_delete_spec_evt_with_params_from_queue 36
3.3.13. ebdat_evt_filter_add 36
3.3.14. ebdat_evt_filter_delete 37

3.4 timer library 37
3.4.1. ebdat_starttimer 37
3.4.2. ebdat_stoptimer 38

3.5 sio library 38
3.5.1. ebdat_sio_send 38
3.5.2. ebdat_sio_recv 39
3.5.3. ebdat_sio_enable_recv 39
3.5.4. ebdat_sio_clear 40
3.5.5. ebdat_sio_exclrpt 40

3.6 efs library 40
3.6.1. ebdat_efs_creat 40
3.6.2. ebdat_efs_open 41
3.6.3. ebdat_efs_close 41
3.6.4. ebdat_efs_read 42
3.6.5. ebdat_efs_write 42
3.6.6. ebdat_efs_ftruncate 42
3.6.7. ebdat_efs_lseek 43
3.6.8. ebdat_efs_stat 43
3.6.9. ebdat_efs_fstat 44
3.6.10. ebdat_efs_lstat 44
3.6.11. ebdat_efs_tell 45
3.6.12. ebdat_efs_get_opened_filesize 45
3.6.13. ebdat_efs_file_exist 45
3.6.14. ebdat_efs_dir_exist 46
3.6.15. ebdat_efs_delete_file 46
3.6.16. ebdat_efs_rmdir 47
3.6.17. ebdat_efs_mkdir 47
3.6.18. ebdat_efs_get_filesize 47
3.6.19. ebdat_efs_truncate_file 48
3.6.20. ebdat_efs_lsdir 48
3.6.21. ebdat_efs_lsfile 49

3.7 atctl library 49
3.7.1. ebdat_atctl_setport 49
3.7.2. ebdat_atctl_send 50
3.7.3. ebdat_atctl_recv 50
3.7.4. ebdat_atctl_clear 50

3.8 ftp library 51
3.8.1. ebdat_ftp_simpput 51
3.8.2. ebdat_ftp_simpget 52
3.8.3. ebdat_ftp_simplist 53

3.9 smtp library 55
3.9.1. ebdat_smtp_config 55
3.9.2. ebdat_smtp_set_from 55
3.9.3. ebdat_smtp_set_rcpt 56
3.9.4. ebdat_smtp_set_subject 57
3.9.5. ebdat_smtp_set_body 57
3.9.6. ebdat_smtp_set_body_charset 58
3.9.7. ebdat_smtp_set_file 58
3.9.8. ebdat_smtp_send 59

3.10 mms library 59
3.10.1. ebdat_mms_accquire_module 59
3.10.2. ebdat_mms_release_module 59
3.10.3. ebdat_mms_set_mmsc 60
3.10.4. ebdat_mms_get_mmsc 60
3.10.5. ebdat_mms_set_protocol 61
3.10.6. ebdat_mms_get_protocol 61
3.10.7. ebdat_mms_set_edit 62
3.10.8. ebdat_mms_set_title 62
3.10.9. ebdat_mms_get_title 63
3.10.10. ebdat_mms_attach_file 63
3.10.11. ebdat_mms_attach_file_from_memory 64
3.10.12. ebdat_mms_add_receipt 65
3.10.13. ebdat_mms_delete_receipt 65
3.10.14. ebdat_mms_list_receipts 66
3.10.15. ebdat_mms_save_attachment 66
3.10.16. ebdat_mms_save 67
3.10.17. ebdat_mms_load 67
3.10.18. ebdat_mms_get_attach_info 68
3.10.19. ebdat_mms_list_attach_info 68
3.10.20. ebdat_mms_get_delivery_date_info 69
3.10.21. ebdat_mms_read_attachment 70
3.10.22. ebdat_mms_send 70
3.10.23. ebdat_mms_recv 71

3.11 sms library 71
3.11.1. ebdat_sms_ready 71
3.11.2. ebdat_sms_cpms 72
3.11.3. ebdat_sms_get_csmp 72
3.11.4. ebdat_sms_set_csmp 73
3.11.5. ebdat_sms_get_cnmi 73
3.11.6. ebdat_sms_set_cnmi 74
3.11.7. ebdat_sms_get_csca 74
3.11.8. ebdat_sms_set_csca 75
3.11.9. ebdat_sms_get_csdh 75
3.11.10. ebdat_sms_set_csdh 75
3.11.11. ebdat_sms_get_cmgf 76
3.11.12. ebdat_sms_set_cmgf 76
3.11.13. ebdat_sms_modify_msg_tag 76
3.11.14. ebdat_sms_delete_msg 77
3.11.15. ebdat_sms_get_next_msg_ref 77
3.11.16. ebdat_sms_write_pdu_msg 78
3.11.17. ebdat_sms_write_txt_msg 78
3.11.18. ebdat_sms_send_pdu_msg 79
3.11.19. ebdat_sms_send_txt_msg 80
3.11.20. ebdat_sms_decode_pdu_sms 81
3.11.21. ebdat_sms_cmss 85

3.12 voice call library 85
3.12.1. ebdat_voice_call_initiate 85
3.12.2. ebdat_voice_call_end 86
3.12.3. ebdat_voice_call_answer_call 86
3.12.4. ebdat_voice_call_answer_all 87
3.12.5. ebdat_voice_call_list 87
3.12.6. ebdat_voice_call_get_state 88
3.12.7. ebdat_voice_call_send_dtmf 88
3.12.8. ebdat_voice_call_chld 89
3.12.9. ebdat_voice_call_id2seq 89
3.12.10. ebdat_voice_call_seq2id 89

3.13 phonebook library 90
3.13.1. ebdat_pb_ready 90
3.13.2. ebdat_pb_get_storage_info 90
3.13.3. ebdat_pb_write 91
3.13.4. ebdat_pb_read 91
3.13.5. ebdat_pb_findname 92
3.13.6. ebdat_pb_findphone 92

3.14 pin library 93
3.14.1. ebdat_pin_get_remain_info 93
3.14.2. ebdat_pin_verify 93
3.14.3. ebdat_pin_change 94
3.14.4. ebdat_pin_unblock 94
3.14.5. ebdat_pin_enable 95

3.15 LUA library 95
3.15.1. ebdat_lua_register_api_handler 95
3.15.2. ebdat_lua_deregister_api_handler 96
3.15.3. ebdat_lua_set_evt 96
3.15.4. ebdat_lua_signal_notify 97
3.15.5. ebdat_lua_set_ready 97

3.16 network library 98
3.16.1. ebdat_network_get_creg 98
3.16.2. ebdat_network_get_cgreg 98
3.16.3. ebdat_network_get_cnsmod 98
3.16.4. ebdat_network_get_csq 99

3.17 socket library 99
3.17.1. ebdat_ps_open_ps_network 99
3.17.2. ebdat_ps_close_ps_network 100
3.17.3. ebdat_ps_release_ps_netlib 100
3.17.4. ebdat_dns_get_host_entry 101
3.17.5. ebdat_sock_create 101
3.17.6. ebdat_sock_connect 102
3.17.7. ebdat_sock_close 102
3.17.8. ebdat_sock_send 102
3.17.9. ebdat_sock_recv 103
3.17.10. ebdat_sock_sendto 103
3.17.11. ebdat_sock_recvfrom 104
3.17.12. ebdat_sock_bind 104
3.17.13. ebdat_sock_listen 105
3.17.14. ebdat_sock_accept 105
3.17.15. ebdat_sock_setsockopt 106
3.17.16. ebdat_sock_getsockopt 106
3.17.17. ebdat_sock_get_sock_name 107
3.17.18. ebdat_sock_async_select 107
3.17.19. ebdat_sock_async_deselect 108

3.18 bsocket library 108
3.18.1. ebdat_bpsnetwork_open 108
3.18.2. ebdat_bpsnetwork_close 109
3.18.3. ebdat_bpsnetwork_status 109
3.18.4. ebdat_bpsnetwork_dorm 109
3.18.5. ebdat_bpsnetwork_resolve_dns 110
3.18.6. ebdat_bpsnetwork_local_ip 111
3.18.7. ebdat_bpsnetwork_primary_dns 111
3.18.8. ebdat_bpsnetwork_change_primary_dns 112
3.18.9. ebdat_bpsnetwork_secondary_dns 112
3.18.10. ebdat_bpsnetwork_change_secondary_dns 113
3.18.11. ebdat_bpsnetwork_get_mtu 113
3.18.12. ebdat_bpsnetwork_config_keepalive_parameter 114
3.18.13. ebdat_bpsnetwork_config_tcp_retran_parameter 114
3.18.14. ebdat_bpsnetwork_config_dns_timeout_parameter 115
3.18.15. ebdat_bsock_create 115
3.18.16. ebdat_bsock_connect 116
3.18.17. ebdat_bsock_close 116
3.18.18. ebdat_bsock_send 117
3.18.19. ebdat_bsock_recv 117
3.18.20. ebdat_bsock_sendto 118
3.18.21. ebdat_bsock_recvfrom 118
3.18.22. ebdat_bsock_bind 119
3.18.23. ebdat_bsock_listen 119
3.18.24. ebdat_bsock_accept 120
3.18.25. ebdat_bsock_select 120
3.18.26. ebdat_bsock_deselect 121
3.18.27. ebdat_bsock_keepalive_socket 122
3.18.28. ebdat_bsock_get_sock_name 122

3.19 gps library 123
3.19.1. ebdat_gps_start 123
3.19.2. ebdat_gps_stop 123
3.19.3. ebdat_gps_get_fix_info 124
3.19.4. ebdat_gps_get_nema_info 124
3.19.5. ebdat_gps_set_mode 124
3.19.6. ebdat_gps_get_mode 125
3.19.7. ebdat_gps_delete_info 125

3.20 gpio library 126
3.20.1. ebdat_gpio_config 126
3.20.2. ebdat_gpio_out 126
3.20.3. ebdat_gpio_get 127
3.20.4. ebdat_gpio_func_set 127
3.20.5. ebdat_gpio_isr_set 127
3.20.6. ebdat_gpio_debounce_set 128

3.21 spi library 128
3.21.1. ebdat_spi_init 128
3.21.2. ebdat_spi_set_clk_info 129
3.21.3. ebdat_spi_set_cs 129
3.21.4. ebdat_spi_set_frequency 130
3.21.5. ebdat_spi_set_param 130
3.21.6. ebdat_spi_write_data 131
3.21.7. ebdat_spi_write_uint32_data 131
3.21.8. ebdat_spi_write_reg 131
3.21.9. ebdat_spi_read_reg 132

3.22 pm library 132
3.22.1. ebdat_pm_auto_pwr_off_set 132
3.22.2. ebdat_pm_auto_pwr_off_get 133
3.22.3. ebdat_pm_enable_low_voltage_alarm 133
3.22.4. ebdat_pm_disable_low_voltage_alarm 133
3.22.5. ebdat_pm_enable_auto_pwr_on 134
3.22.6. ebdat_pm_disable_auto_pwr_on 134
3.22.7. ebdat_pm_enable_auto_pwr_off 134
3.22.8. ebdat_pm_disable_auto_pwr_off 135

3.23 misc hardware library 135
3.23.1. ebdat_adc_read 135
3.23.2. ebdat_vaux_set 136
3.23.3. ebdat_vaux_get 136
3.23.4. ebdat_vaux_switch 136
3.23.5. ebdat_vaux_get_state 137
3.23.6. ebdat_i2c_read 137
3.23.7. ebdat_i2c_write 138

4. Setup Developing Environment 139

4.1 Install developing tools 139

4.2 Burn customer developed application to the module 139
Appendix 140
A Related Documents 140
B Terms and Abbreviations 140
Димон Безпарольный
Примеры рабочие, но нигде не сказано что в каждый пример нужно вставлять ebdat7_00EnterDebugMode();

А без этого пример ничего не делает. Т.е. не видно вообще что он что - то делает. Замечательно. Хотя бы вставили вызов и закомментировали.

Дальше - хуже. Пытаюсь разобраться почему не работает в этом примере (GPIO) ветвь:

Цитата
case EVENT_TIMER:
ebdat7_01DebugTrace((const char *)"EVENT_TIMER");
break;


С таймером разобрался. Ни инициализации, ни начального запуска не было.

Может кто подскажет, как проще поймать внешнее событие на GPIO??

Примеры уж больно замысловатые...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.