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

SDK 4.0a

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

  1. kissste

    kissste Читатель

    Сообщения:
    51
    Симпатии:
    16
    Последнее редактирование: 13 май 2017
    A_D, Creep, Simon и ещё 1-му нравится это.
  2. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    Количество примеров увеличилось в разы (example, application, ...).
    Заменена/добавлена старая либа polarssl-1.3.8 -> mbedtls-2.4.0
    Есть HTTPDS (SSL)...
    Глобально, для RT871xAx/8195 ничего сверх нового нет. Модули с RTL871xBx ещё не пришли и нет в широком свободном доступе для покупки...
    Но Итого - близиться долгожданная свобода: мне пора заканчивать начальную поддержку моей сборки SDK для RTL :) Теперь этим смогут заняться другие... (пора искать что-то новое)
     
  3. IKSIK67

    IKSIK67 Новичок

    Сообщения:
    37
    Симпатии:
    0
    Не могли бы подсказать, я не совсем разобрался с SDK. Скачал sdk-ameba-v4.0a_without_NDA.zip, там есть какие-то примеры, но не смог найти саму среду?...:confused: или здесь все работает как-то не так?.. o_OЧто надо сделать после скачивания среды, что бы начать писать код и заливать его в микроконтроллер?
     
  4. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    1) Скачиваете SDK, разворачиваете архив.
    2) Выбираете sdk-ameba-v4.0a_without_NDA\project\realtek_ameba1_va0_example\EWARM-RELEASE\Project.eww или sdk-ameba-v4.0a_without_NDA\project\realtek_amebaz_va0_example\EWARM-RELEASE\Project.eww и запускается IAR Embedded Workbench IDE.
    Снимок1495.gif
    3) Жмете в нем make и проект собирается.
    4) Выбираете программатор Jlink
    Снимок1496.gif Снимок1497.gif
    5) Программируете модуль или производите отладку...
     
    KomX нравится это.
  5. IKSIK67

    IKSIK67 Новичок

    Сообщения:
    37
    Симпатии:
    0
    Благодарю)
     
  6. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
  7. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
  8. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    А всё равно не собирается в рабочий вариант с GCC. Там либы созданы в IAR, с его прибамбасами.
    Если и собирается, то вылетает на netdev_open()...
    -------
    Пока дела с GCC обстоят так GCC libraries in ameba-sdk-v.4.0 missing – Realtek IoT/Arduino Solution
    Там ищут в старой либе lib_wlan.a функцию rtw_if_wifi_thread(), а оно всё есть в Ameba Arduino lib_wlan.a :) Но это делу не помогает, хотя и собирается и всё работает. Жирная бага - низкая скорость работы (трафик приема-передачи) на SoftAP, когда включен режим SoftAP + Station, всё равно не исправляется. Так-же не исправляется долгое подключение Station модуля к внешнему роутеру*.
    Т.е. смысла данная версия SDK не несет, кроме очередного номерка.

    *Если покрутить частоту системного таймера, то напиханные паузы уменьшаются и скорость полного цикла подключения Station модуля с выдачей IP от роутера доходит до 0.3..0.5 сек от старта питания. А в текущем виде - для сборки на IAR это 1.2..1.8 сек, а на GCC или Arduino - 2...3 сек. Зачем там Амебщики накрутили задержек по каждому поводу в циклах опроса от 100 мс для GCC в либах - неизвестно.
    Можно покрутить и вызовы задержек из lib_wlan.a патчами внешних процедур - выходит та-же история, но это портит другие дела. В общем Ameba делает Амебу из модуля :)
     
    Последнее редактирование: 2 июн 2017
  9. sharikov

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

    Сообщения:
    601
    Симпатии:
    52
    с этого места подробнее пожалуйста.

    Приведите тестовый пример. Проверю. У меня SoftAP + Station на данный момент основной режим работы (ну так сложилось по разным причинам)

    На работе к древнему usb свистку подключается через раз на 3-5-тый. По логам свисток в половине случаев дает отлуп а в половине тупо не хватает таймаута. Дома на относительно свежем Keenetic giga II подключается влет. Предполагаю что таймауты увеличивали для совместимости с зоопарком AP.
     
  10. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    А чего подробнее? Берете либу от lib_wlan.a Arduino/hardware_v2/variants/rtl8710 at master · Ameba8195/Arduino · GitHub и вперед. Она создана Ameba в одно время с SDK4.0a, а сам SDK выложен позже, но с кодом либы на IAR.
    Записываете web-свалку в модуль. Включаете SoftAP + Station, идете на страницу:
    Снимок1498.gif
    И качаете файл c http://rtl871x0/protect2/ram.bin?start=0x10000000&stop=0x20000000
    и с http://rtl871x1/protect2/ram.bin?start=0x10000000&stop=0x20000000
    Сравниваете:
    Снимок1499.gif Снимок1500.gif
    Свисток или даже если сделать подключение от одного роутера
    Снимок1502.gif
    итого не меняют. Проверено на нескольких разных роутерах и свистках (включая и MiFi :)), на Arduino и "AT" прошивке - итог один - тормозит AP в режиме AP+ST. Скорее всего она опрашивается каким-то пулом, в данном режиме (AP+ST), т.к. задержки передачи пакетов после запроса (приема) в TCP всегда более 0.01 сек. Station то при этом пашет нормально... Кроме тормоза там ещё потребление вылетает за нормы - это явный баг. Предположить как он создан выходит только если выключать передатчик с задержкой после передачи пакета или типа того...
    Т.е. это сделано "логике вопреки". Наверно специально - иначе не понять Амебнутых :) SoftAP то должна быть всегда активна и следить за каналом согласно спецификациям...
    Не - они там от балды. Как "рука написала". Замена на более короткие наоборот улучшает дело с первым соединением. (пробовал патчить часть lib_wlan.a)
    Бага у AP тоже есть - она видимо как-то криво инициализируется у Ameba и первое соединение после инициализации WiFi часто неудачное. Ну это ещё одна бага. В Arduino, если не запросить WiFi.status() перед иницализацией AP, то она вообще там не работает. :)

    Про глупости с задержками при соединении модуля к AP было описано и даны примеры замеров в том году Тестирование и модификация RTL SDK для автономных устройств.
    На IAR с кодом SDK 3.4a или SDK4.0a соединение с выдачей IP происходит на 1200 шаге RTOS (шаг 1 ms от старта), а любая прошивка с любым SDK на GCC - от 2 сек минимум.
    Если при старте задать ход таймера RTOS в 2 раза быстрее (он об этом не уведомлен :)), то и соединение реально происходит в 2 раза быстрее.

    Диагноз простой - кто-то в Ameba занимается вредительством - не желает использования в open-source, а только с проприетарным ПО компиляторов. Это влияет и на их Arduino - там ситуация аналогична - встроенные тормоза везде.
    Так-же все дополнительные режимы, типа "WiFi моста" Амебнутые вырезали из драйвера WiFi в SDK. При включении в них он сообщает кодом отсутствия реализации в ПО, хотя драйвер стандартный с интерфейсом управления как для всех чипов RTL под Андроид и *nix (Standard Wireless Extensions ver 22. Wireless-Extensions (WE или Wext) являются расширениями, добавленными в ядро около 1997 )
     
    Последнее редактирование: 4 июн 2017
  11. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Почему-то не удается запустить этот SDK. Есть модуль (RTL00), J-Link (сделанный из ST-Link-а), IAR (из последних). Открываю проект, компилирую, пытаюсь запустить отладку, пишет:
    [​IMG]
    Пропускаю (диска D: у меня вообще нет). В конце Debug log пишет:
    Wed Jun 07, 2017 19:49:52: Could not go to 'main'.
    Модуль после этого на АТ команды реагировать перестает, при передергивании питания встроенный светодиод загорается и гаснет. С помощью флэшера модуль реанимируется (зашиваю заранее прочитанную, родную прошивку). Куда смотреть? Что я делаю не так? То, что в SDK кругом 8195, а у меня 8710 не влияет?
     
  12. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    Чтобы запустить, можно и проще, с помощью JLink.exe.
    Распаковываете вложенный файл в sdk-ameba-v4.0a_without_NDA\project\realtek_ameba1_va0_example\EWARM-RELEASE, исправляете в bat путь к Jlink.exe и вперед...
    Но не забывайте желательный провод на RESET модуля. Без него Jtag/ST-Link работает ужасно - вручную дергать не очень...
     

    Вложения:

    • project.zip
      Размер файла:
      4,1 КБ
      Просмотров:
      9
    Последнее редактирование: 7 июн 2017
  13. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Правильно ли я понял метод: скрипт дергает сброс, пишет в ОЗУ ram1_r.bin (что это?), пишет в ОЗУ ram_2.bin (собственно это часть из того, что IAR создал), опять дергает сброс, пишет что-то в какой-то регистр, запускает процессор в работу. Т.е. во флэш программа при этом не попадает, и как будет работать отладка в IAR-е не понятно, вероятно не будет?
     
  14. sharikov

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

    Сообщения:
    601
    Симпатии:
    52
    Правильно.
    8710AF программу исполняет из ОЗУ поэтому содержимое флэш ему до лампочки. Загрузчик ram1_r.bin при старте копирует прошивку из флэш в озу , после этого флэш становится ненужной (ну только для вебдиска или настроек). Пишут в "какой-то регистр" чтобы сказать загрузчику что копировать не надо - программу уже залили по jtag.
     
  15. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    Альтернативный boot.
    Записать в Flash тоже можно другой программой, хоть JFlash.exe, если кинуть к ней скрипт с форума...
    Отладка работает в самом IAR.
    По вашей картинке он пишет, что нет исходника ram_lib.c, т.к. код из бинарной библиотеки, как и многие другие файлы, например исходники ROM-BIOS... SDK же without_NDA, т.е. часть исходников закрыта.
     
  16. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Продолжаю разбираться почему у меня не завелся этот SDK на RTL00. Приделал отладочный порт, посмотрел что там, узнал, что оказывается программа падает еще до запуска main.
    Код (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: 0x3a18, Image Addr: 0x10000bc8                                
    11. Image1 Validate OK, Going jump to Image1                                      
    12. BOOT from Flash:YES                                                          
    13. ===== Enter Image 1 ====                                                      
    14.                                                                              
    15. load NEW fw 0                                                                
    16. Flash Image2:Addr 0xb000, Len 260352, Load to SRAM 0x10006000                
    17. No Image3                                                                    
    18. Img2 Sign: RTKWin, InfaStart @ 0x10006051                                    
    19. ===== Enter Image 2 ====                                                      
    20. RTL8195A[HAL]: Hard Fault Error!!!!                                          
    21. RTL8195A[HAL]: R0 = 0x20                                                      
    22. RTL8195A[HAL]: R1 = 0x0                                                      
    23. RTL8195A[HAL]: R2 = 0x1000da9d                                                
    24. RTL8195A[HAL]: R3 = 0x0                                                      
    25. RTL8195A[HAL]: R12 = 0x1c                                                    
    26. RTL8195A[HAL]: LR = 0x16477                                                  
    27. RTL8195A[HAL]: PC = 0x0                                                      
    28. RTL8195A[HAL]: PSR = 0x20000200                                              
    29. RTL8195A[HAL]: BFAR = 0x8                                                    
    30. RTL8195A[HAL]: CFSR = 0x20000                                                
    31. RTL8195A[HAL]: HFSR = 0x40000000                                              
    32. RTL8195A[HAL]: DFSR = 0x0                                                    
    33. RTL8195A[HAL]: AFSR = 0x0                                                    
    34. RTL8195A[HAL]: PriMask 0x0                                                    
    35. RTL8195A[HAL]: BasePri 0x0                                                    
    36. RTL8195A[HAL]: SVC priority: 0x00                                            
    37. RTL8195A[HAL]: PendSVC priority: 0x00                                        
    38. RTL8195A[HAL]: Systick priority: 0x00                                        
    39.  
    Пошаговой отладкой выяснил, что падение происходит тут:
    Код (Text):
    1. 1001f458 <__iar_cstart_call_ctors>:
    2. 1001f458:       b510            push    {r4, lr}
    3. 1001f45a:       4604            mov     r4, r0
    4. 1001f45c:       4904            ldr     r1, [pc, #16]   ; (1001f470 <__iar_cstart_call_ctors+0x18>)
    5. 1001f45e:       4479            add     r1, pc
    6. 1001f460:       310e            adds    r1, #14
    7. 1001f462:       4804            ldr     r0, [pc, #16]   ; (1001f474 <__iar_cstart_call_ctors+0x1c>)
    8. 1001f464:       4478            add     r0, pc
    9. 1001f466:       300c            adds    r0, #12
    10. 1001f468:       f000 f81a       bl      1001f4a0 <__call_ctors>
    11. 1001f46c:       4620            mov     r0, r4
    12. 1001f46e:       bd10            pop     {r4, pc}
    13. 1001f470:       effe0b90        .word   0xeffe0b90
    14. 1001f474:       fffe8a1c        .word   0xfffe8a1c
    15.  
    точнее тут:
    Код (Text):
    1. 1001f4a0 <__call_ctors>:
    2. 1001f4a0:       b538            push    {r3, r4, r5, lr}
    3. 1001f4a2:       4604            mov     r4, r0
    4. 1001f4a4:       460d            mov     r5, r1
    5. 1001f4a6:       42ac            cmp     r4, r5
    6. 1001f4a8:       d005            beq.n   1001f4b6 <__call_ctors+0x16>
    7. 1001f4aa:       6820            ldr     r0, [r4, #0]
    8. 1001f4ac:       1820            adds    r0, r4, r0
    9. 1001f4ae:       4780            blx     r0
    10. 1001f4b0:       1d24            adds    r4, r4, #4
    11. 1001f4b2:       42ac            cmp     r4, r5
    12. 1001f4b4:       d1f9            bne.n   1001f4aa <__call_ctors+0xa>
    13. 1001f4b6:       bd31            pop     {r0, r4, r5, pc}
    14.  
    На адресе 1001f4ae в R0 какой-то левый адрес (0x0001776F), там программа благополучно валится.
    Вопрос, может кто сталкивался с подобным? В каком направлении искать причину?
     
  17. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    Не описаны условия. Валится при после прошивки или при отладке с непрописанными установками в 9 и 10 секторе Flash, опции отладки и т.д...
    Гадать это никто не будет.
     
  18. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Валится после прошивки, при исполнении. Прошивал Вашим скриптом, прошивал из IARа, результат одинаковый. Прошивка в модуль заливается нормально. Проблема в том, что нагенерил IAR, или какое-то искажение при подготовке ram_2.bin. Поиск по инету пока дал только то, что процедура __iar_cstart_call_ctors - это вызов конструкторов классов при начальной инициализации. По идее, классов в программе нет, этой функции не должно быть совсем, или она должна сразу вернуться. Но у меня ей дается какой-то список с левыми адресами. Опции в проекте ни какие не менял, все так как было установлено в SDK. Честно говоря пока не знаю какие они вообще бывают. Надеялся что все запустится без разбирательств.
    Код, созданный IARом, у меня вообще вызывает удивление. Такой способ загрузки адреса таблицы:
    Код (Text):
    1. 1001f462:       4804            ldr     r0, [pc, #16]   ; (1001f474 <__iar_cstart_call_ctors+0x1c>)
    2. 1001f464:       4478            add     r0, pc
    3. 1001f466:       300c            adds    r0, #12
    4. ...
    5. 1001f474:       fffe8a1c        .word   0xfffe8a1c
    Должно получиться 10007е92?
    Такой способ извлечения и использования адреса из таблицы (R4 до этого загружен из R0):
    Код (Text):
    1. 1001f4aa:       6820            ldr     r0, [r4, #0]
    2. 1001f4ac:       1820            adds    r0, r4, r0
    3. 1001f4ae:       4780            blx     r0
    Это все с целью получения переносимого по адресам кода?
     
  19. pvvx

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

    Сообщения:
    9.095
    Симпатии:
    1.303
    А как предполагаете написать код короче на ARM?

    И ram_2.bin не записывается в Flash. Он должен быть обрамлен заголовками для записи во flash.
    Счас гляну, что там может быть не так и как сделать правильно...
     
  20. Alexey_new

    Alexey_new Новичок

    Сообщения:
    34
    Симпатии:
    0
    Если нужна переносимость, то вряд ли смогу лучше. Но зачем переносимость по адресам? Вроде бы адрес загрузки известен заранее. Ну пусть будет так, переносимость не вредит. А с этой таблицей у меня IAR явно что-то не то генерит. Если начальный адрес таблицы 10007е92 можно понять, то конец таблицы:
    Код (Text):
    1. 1001f45c:       4904            ldr     r1, [pc, #16]   ; (1001f470 <__iar_cstart_call_ctors+0x18>)
    2. 1001f45e:       4479            add     r1, pc
    3. 1001f460:       310e            adds    r1, #14
    4. ...
    5. 1001f470:       effe0b90        .word   0xeffe0b90
    Получается 00000002, это явно не то.
    Спасибо за поддержку! Буду пытаться разобраться, но если сможете мне помочь буду очень признателен.
     

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