Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

SDK 4.0a

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем kissste, 13 май 2017.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    Нет там никаких потуг для переносимости адресов исполнения. Стоит загрузка значения регистра по адресу со смешением от PC. Константой в регистр произвольное значение не загрузить.
    ---------

    Снимок1509.gif Снимок1510.gif Снимок1511.gif
    Выявлено - мешают какие-то записи в flash. Т.е. без стирания всей Flash падает на протектед.
    Калибровки можно сохранить перед очисткой (всю flash) и потом записать снова (выставив только галки на опциях "* data" и скормив ранее сохраненный FullFlash.bin).
    Но, в базе у проданных модулей кривые настройки в "System data" (9-ый сектор, смешение в Flash 0x9000), и желательно загрузить более подходящие для SPIC к RTL00 из OTA_RTLDuino.bin в RtlDuino/development/rtl87xx/tools at master · pvvx/RtlDuino · GitHub. Там правда прописан пин переключения прошивок (основная/ОТА) на PC_1.
    10-й сектор "Calibration data" содержит настройки WiFi и там есть ваш MAC.

    А бяку надо чинить в исходниках SDK - нефиг ему грузить что попало из Flash в какой-то процедуре AT и сразу в рот :)

    IAR у меня на оф. J-link сразу записал всё правильно. Не знаю с чем вы там боритесь...
     
    Последнее редактирование: 14 июн 2017
  2. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Видимо все же все ради переносимости. Загрузкой значения не ограничиваются, к загруженному прибавляют РС, так переносимость по адресам получается.
    По сути я сейчас борюсь с IARом. Получить от него код, который должен бы исполняться мне удалось только после выкидывания из image2.icf куска:
    Код (Text):
    1. define block SHT$$PREINIT_ARRAY { preinit_array };
    2. define block SHT$$INIT_ARRAY { init_array };
    3. define block CPP_INIT with alignment = 8, fixed order {      
    4.                                                 block SHT$$PREINIT_ARRAY,
    5.                                                 block SHT$$INIT_ARRAY
    6.                                                 };
    7.  
    Тогда получается начало таблицы = конец таблицы = 0
    У вас какая версия IARа смогла все правильно сгенерить?
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    7.50.2
     
  4. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    У меня IAR 8.11.1 Видимо слишком новый, изменили поведение линкера. В опции --cpp_init_routine описание:
    Код (Text):
    1. When using the IAR C/C++ compiler and the standard library, C++ dynamic initialization is handled automatically. In other cases you might need to use this option.
    2. If any sections with the section type INIT_ARRAY or PREINIT_ARRAY are included in your application, the C++ dynamic initialization routine is considered to be needed. By default, this routine is named _ _iar_cstart_call_ctors and is called by the startup code in the standard library. Use this option if you are not using the standard library and require another routine to handle these section types.
    3.  
    Т.е. если есть PREINIT_ARRAY, то будет и вызов конструкторов. Только какой-то переменной, обозначающей конец таблицы, для стандартной _ _iar_cstart_call_ctors не создается, она заменяется на 0 и получается ерунда. Правда при выкидывании секций с init-ами _ _iar_cstart_call_ctors все равно создается, но уже не зависает, т.к. начало и конец таблицы становится 0. В общем, теперь у меня все запустилось в IAR-е:
    Код (Text):
    1. ===> Flash Init                                                                
    2.                                                                                
    3. ===> Flash Init Done, vendor: MXIC                                            
    4.                                                                                
    5. ===> Flash Write, start 0, addr 5, offset 0, count 14872, buf 10003c00        
    6. clear signature                                                                
    7. Write Binary....Done                                                          
    8.                                                                                
    9. <=== Flash Write Done 3a38                                                    
    10.                                                                                
    11. ===> Flash Init                                                                
    12.                                                                                
    13. ===> Flash Init Done, vendor: MXIC                                            
    14. OTA addr is 50000                                                              
    15.                                                                                
    16. ===> Flash Write, start b000, addr 3a38, offset 0, count 260352, buf 10003c00  
    17. Write Binary....Done                                                          
    18. signature 88167923                                                            
    19.                                                                                
    20. <=== Flash Write Done 4a90c                                                    
    21. ===== Enter Image 1.5 ====                                                    
    22. Img2 Sign: RTKWin, InfaStart @ 0x10006051                                      
    23. ===== Enter Image 2 ====                                                      
    24. #interface 0 is initialized                                                    
    25. interface 1 is initialized                                                    
    26.                                                                                
    27. Initializing WIFI ...                                                          
    28. Start LOG SERVICE MODE                                                        
    29.                                                                                
    30. #                                                                              
    31. wext_set_pscan_channel():ioctl[SIOCDEVPRIVATE] error                          
    32. WIFI initialized                                                              
    33.                                                                                
    34. init_thread(53), Available heap 0xd508                                        
    35. #ATS?                                                                          
    36. [ATS?]: _AT_SYSTEM_HELP_                                                      
    37. [ATS?]: COMPILE TIME: 15.06.2017-11:09:45                                      
    38. [ATS?]: SW VERSION: v.3.4.15.06.2017                                          
    39.                                                                                
    40. [MEM] After do cmd, available heap 59744                                      
    41.                                                                                
    42.                                                                                
    43. #
     
  5. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    564
    Симпатии:
    51
    4.0a_critical_patch_iar_8_11_(v01).zip
    от амебы установили ?
     
  6. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Нет. А где его взять? Оно на www.amebaiot.com выложено? Надо будет зарегистрироваться там ...
     
  7. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    564
    Симпатии:
    51
  8. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Зарегистрировался на www.amebaiot.com файл нашел только по названию, там все на китайском. Собственно весь патч - это замена в SDK image2.icf на другой. Тем кто будет запускать SDK с IAR 8.11 (наверное с любым 8.хх) эту замену надо делать обязательно.
     
  9. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Продолжаю возиться с SDK, пытаюсь запустить сервер из примеров. Включил его так:
    #define CONFIG_EXAMPLE_HTTPD 1
    После этого пришлось опции для папки SDRAM изменить, в ней SSL, который мне пока не нужен, но оно в SDRAM направлялось, которой нет, пришлось сделать как у всех в SRAM.
    После этого запускается, но вылетает :
    #interface 0 is initialized
    interface 1 is initialized

    Initializing WIFI ...
    Start LOG SERVICE MODE

    #
    [HTTPD] httpd_server_thread started
    RTL8195A[HAL]: Hard Fault Error!!!!
    RTL8195A[HAL]: R0 = 0x1
    RTL8195A[HAL]: R1 = 0x100648b9
    RTL8195A[HAL]: R2 = 0x0
    RTL8195A[HAL]: R3 = 0x0
    RTL8195A[HAL]: R12 = 0x1
    RTL8195A[HAL]: LR = 0x10024a5b
    RTL8195A[HAL]: PC = 0x4
    RTL8195A[HAL]: PSR = 0x1000000
    RTL8195A[HAL]: BFAR = 0x8
    RTL8195A[HAL]: CFSR = 0x1
    RTL8195A[HAL]: HFSR = 0x40000000
    RTL8195A[HAL]: DFSR = 0x0
    RTL8195A[HAL]: AFSR = 0x0
    RTL8195A[HAL]: PriMask 0x0
    RTL8195A[HAL]: BasePri 0x0
    RTL8195A[HAL]: SVC priority: 0x00
    RTL8195A[HAL]: PendSVC priority: 0xf0
    RTL8195A[HAL]: Systick priority: 0xf0

    Пошаговой отладкой выяснил, что что вылетает тут:
    [​IMG]
    на следующем шаге оказываемся не на 0x10015858 а там:
    [​IMG]
    почему такое происходит мне не понятно. Что может быть причиной?
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    Вы данный пример вместе с "AT" пытаетесь запустить на RTL c 512к?
    После изменения опций для SSL в SDRAM, в map остается:
    mfl_code_to_length 0x30000000 0x14 Data Lc ssl_tls.o [2]
    И в application.map:
    30000000 D SDRAM$$Base
    30000000 d mfl_code_to_length
    30000014 D SDRAM$$Limit
    30000014 D SDRBSS$$Base
    30000014 d supported_init
    30000018 d supported_ciphersuites
    30000034 D SDRBSS$$Limit

    + файл sdram.bin не пустой, а содержит этот блок. При обращении к нему и будет " Hard Fault Error!"
     
    Последнее редактирование: 20 июн 2017
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    Ameba кинули уже версию для GCC:
    Снимок1521.gif

    После скачивания SDK GCC, в каталоге sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\project\realtek_ameba1_va0_example\GCC-RELEASE\ запустил mingw32-make.exe.
    Получил их старую (с прошлого SDK) ошибку:
    ../../../component/soc/realtek/8195a/misc/iar_utility/common/tools/pick: cannot execute binary file

    После исправления которой, всё успешно собралось (см. compile.txt).
    Загрузка в модуль RTL00 c помощью ранее кинутых JLink-RunRAM.bat и правки где брать bin файл:
    Код (Text):
    1. =========================================================
    2.  
    3. ROM Version: 0.3
    4.  
    5. Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)
    6.  
    7. =========================================================
    8. Check boot type form eFuse
    9. SPI Initial
    10. Image1 length: 0x2018, Image Addr: 0x10000bc8
    11. Image1 Validate OK, Going jump to Image1
    12. ===== Enter FLASH-Boot ====
    13. CPU CLK: 83333333 Hz, SOC FUNC EN: 0x11113
    14. Selected Image 1.
    15. Load Flash seg0: 0x0000b010 -> SRAM: 0x10006000, size: 254688
    16. ===== Enter SRAM-Boot 1 ====
    17. CPU CLK: 83333333 Hz, SOC FUNC EN: 0x20111157
    18. Img Sign: RTKWin, Go @ 0x10006051
    19. ===== Enter Image 2 ====
    20. #interface 0 is initialized
    21. interface 1 is initialized
    22.  
    23. Initializing WIFI ...
    24. Start LOG SERVICE MODE
    25.  
    26. #
    27. RTL8195A[Driver]: set ssid [***********]
    28. RTL8195A[Driver]: start auth to **:**:**:**:**:**
    29. RTL8195A[Driver]: auth success, start assoc
    30. RTL8195A[Driver]: association success(res=2)
    31. RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
    32. RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:1
    33. Interface 0 IP address : 192.168.1.122
    34. WIFI initialized
    35.  
    36. init_thread(53), Available heap 0xd090
    37. # ATS?
    38. [ATS?]: _AT_SYSTEM_HELP_
    39. [ATS?]: COMPILE TIME: 2017/06/20-16:03:41
    40. [ATS?]: SW VERSION: v.3.4.20170620
    41.  
    42. [MEM] After do cmd, available heap 58600
    43. #
    Итого - для написания данного сообщения потребовалось больше времени, чем произвести сборку и запуск примера с нуля уже на модуле :).
     

    Вложения:

    • compile.txt
      Размер файла:
      28,3 КБ
      Просмотров:
      8
    Последнее редактирование: 20 июн 2017
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    Внесенные исправления в application.mk:
    Код (Text):
    1. #ifeq ($(findstring CYGWIN, $(OS)), CYGWIN)
    2. PICK = $(AMEBA_TOOLDIR)pick.exe
    3. PAD  = $(AMEBA_TOOLDIR)padding.exe
    4. CHKSUM = $(AMEBA_TOOLDIR)checksum.exe
    5. #else
    6. #PICK = $(AMEBA_TOOLDIR)pick
    7. #PAD  = $(AMEBA_TOOLDIR)padding
    8. #CHKSUM = $(AMEBA_TOOLDIR)checksum
    9. #endif
    В ранее кинутый project.zip, в файл RTL_RunRAM.JLinkScript:
    loadbin application/Debug/bin/ram_2.bin 0x10006000
     
  13. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    564
    Симпатии:
    51
    Со свежим GCC не собирается - конфликт определения структуры timeval
    Это настраивается в lwipopts.h который теперь не в проекте а в sdk.
    Надо перепиливать.
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    SDK 4.0 я уже "перепилил" под свою версию/сборку ещё недели назад. Счас проверяю - 99% уже пашет. Скидывать в открытый доступ пока не собираюсь (только избранным :) ).
    Нужны были только сами бинарные либы собранные не в IAR, а для GCC.
    Телепузикам предполагается использование стандартного SDK 4.0 от Амебы c DAP-Link, без поддержки пустых модулей и RTL871xAF/RTL8711AM. Пущай покупают Dev-Kit от Ameba c RTL8195AM. Иначе у них возникает слишком много хотелок :)
     
    Последнее редактирование: 20 июн 2017
  15. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    @sharikov - вопрос с ST+AP решился:
    Снимок1525.gif
    Качает на полную (MySDK4.0/RTOSDIR=freertos_v9.0.0)
    Это пока единственная польза от SDK4.0, кроме увеличения размера кода :)

    Сборка Web-свалки с какими-то моими тестами на разных SDK (меняется только ссылка на каталог SDK):
    Снимок1526.gif
    SDK4.0 просит больше TCM после старта и естественно отхватывает её уже у обычной SRAM, т.к. все стеки RTOS и запросы TCM уже не лезут.
    Надо дозачистить SDK4.0 от ненужных компонентов, а основные дубли (в основном уровня api WiFi я уже убрал)...
     
    Последнее редактирование: 20 июн 2017
  16. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Моя проблема со странным поведением процессора решилась самопроизвольно, вроде бы делаю все так же, но теперь работает. Прошивка запускается, правда с ошибкой:
    Код (Text):
    1. #                                                                            
    2. wext_set_pscan_channel():ioctl[SIOCDEVPRIVATE] error                        
    3. WIFI initialized
    Причину такого сообщения не нашел. Но по ходу разбирательства я так и не понял как при этом настраивается модуль: как точка доступа (имя/пароль?), или сам подключается (но куда, имя/пароль?), или и то и другое? Где это настраивается?
     
  17. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    SDK идет со стандартным примером "AT". AT командами и настраивается: в директории sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\doc "AN0075 Realtek Ameba-1 at command v2.0.pdf" или "AN0025 Realtek at command.pdf", в зависимости от опций в конфигах (main.h).
     
  18. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Спасибо за подсказку, запустить пример сервера из SDK удалось, хотя ошибку в логе при старте продолжает писать.
    wext_set_pscan_channel():ioctl[SIOCDEVPRIVATE] error
    Теперь сервер желательно развить до более удобного в использовании. В соседней теме указали на два примера серверов, от pvvx и от sharikov. Пытаюсь понять, смогу ли я ими воспользоваться без больших переделок? Настораживает то, что они сделаны под gcc (хотя перевод на IAR вряд ли сложен), и не понятно на базе какой SDK они собираются, т.е. должны ли собраться на SDK 4.0 без серьезных переделок?
     
  19. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.687
    Симпатии:
    1.282
    В базовом SDK ужасный API для WiFi и он имеет массу дублирующих процедур загромождающих малую RAM RTL871xAF, по этому данные примеры сделаны на моей сборке SDK с другим, собственным, API управления WiFi c оптимизацией по ресурсам занимаемой RAM. Так-же оптимизировано ещё многое, чтобы базовые проекты лезли в RTL871xAF. Если скачаете web-свалку, то она уже на переходной солянке с добавками исходников основных частей, заменой RTOS на последнюю версию и имеет всё от SDK 4.0 (выкинуты примеры для "телепузиков" и документация "как мигать светодиодом через WiFi" и далее будет выкинуто всё, что позволяет запустить сборку путем скачивания и нажатия одной кнопки, дабы, как говорят "телепузики" увеличить порог какой-то "входимости").
     
    Последнее редактирование: 22 июн 2017
  20. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    SDK для "телепузиков" - абсурд - ибо очень сложна для понимания
     

Поделиться этой страницей