реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SIM900 Series download Tools Customer, Вопрос по алгоритму программирования
Димон Безпарольн...
сообщение Mar 13 2014, 02:25
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



В описании SIM900_EAT_GCC_HelloWorld.pdf написано:

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


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

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

Спасибо.

Прошил через обычный порт (9, 10выв) - успех. Прошил через Dubug (27, 28выв) - успех. У меня крыша едет, или так должно быть?

Сообщение отредактировал Димон Безпарольный - Mar 13 2014, 02:09
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Mar 13 2014, 03:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



5 минут это наверно при 115200 и СОМ порту. С переходника USB<>COM и скорости 460800 пишется гораздо быстрее.
Ну и это первый раз. Потом не трогая ядро своя программа заливается за пару десятков секунд.

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

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

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

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


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Mar 13 2014, 04:03
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(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.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Mar 13 2014, 04:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Проверьте не отключена ли выдача в дебаг порт. Появится Женя, попрошу его скинуть материалы осеннего семинара, там эти мелочи по ЕАТ все упоминались. Или запросите с 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. Очень часто в описаниях стоят не те кавычки что требуются.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Mar 13 2014, 04:24
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(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


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

Огромное всем спасибо за терпение к моим глупым вопросам.

Сообщение отредактировал Димон Безпарольный - Mar 13 2014, 04:30
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Mar 13 2014, 04:49
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Не-не, примеры рабочие, однако некоторые вещи там просто не включены из расчета что не всем нужны.
Ну а документация - так мы все ее досконально читаем только когда другие варианты не сработали 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


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Mar 13 2014, 07:16
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Примеры рабочие, но нигде не сказано что в каждый пример нужно вставлять ebdat7_00EnterDebugMode();

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

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

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


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

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

Примеры уж больно замысловатые...

Сообщение отредактировал Димон Безпарольный - Mar 13 2014, 09:03
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016