• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MBED на RTL

pvvx

Активный участник сообщества
Проверялось на Win7 x 64.
Устанавливаем Python27, git, CLI:
GitHub - ARMmbed/mbed-cli: ARM mbed Command Line Interface
Ставим тестовый пример: First application on mbed CLI - mbed OS 5 Handbook

Скачиваем ARM mbed OS для RTL и распаковываем в директорию blinky\mbed-os-example-blinky\mbed-os.
Запускаем компиляцию:
Код:
E:\RTL87xx\mbed-os-master\blinky\mbed-os-example-blinky>mbed compile -m REALTEK_RTL8195AM -t GCC_ARM
Building project mbed-os-example-blinky (REALTEK_RTL8195AM, GCC_ARM)
Scan: .
Scan: FEATURE_BLE
Scan: FEATURE_COMMON_PAL
Scan: FEATURE_LWIP
Scan: FEATURE_UVISOR
Scan: FEATURE_ETHERNET_HOST
Scan: FEATURE_LOWPAN_BORDER_ROUTER
Scan: FEATURE_LOWPAN_HOST
Scan: FEATURE_LOWPAN_ROUTER
Scan: FEATURE_NANOSTACK
Scan: FEATURE_NANOSTACK_FULL
Scan: FEATURE_THREAD_BORDER_ROUTER
Scan: FEATURE_THREAD_END_DEVICE
Scan: FEATURE_THREAD_ROUTER
Scan: FEATURE_STORAGE
Scan: env
Scan: mbed
+------------------------+-------+-------+-------+
| Module                 | .text | .data |  .bss |
+------------------------+-------+-------+-------+
| Fill                   |    68 |     0 |     9 |
| Misc                   | 35445 |  2180 |   428 |
| hal                    |   238 |     0 |     0 |
| platform               |   690 |     4 |    13 |
| rtos                   |    38 |     4 |     4 |
| rtos/rtx               |  5809 |    20 | 10966 |
| targets/TARGET_Realtek |  2696 |     0 |  1968 |
| Subtotals              | 44984 |  2208 | 13388 |
+------------------------+-------+-------+-------+
Allocated Heap: unknown
Allocated Stack: unknown
Total Static RAM memory (data + bss): 15596 bytes
Total RAM memory (data + bss + heap + stack): 15596 bytes
Total Flash memory (text + data + misc): 47192 bytes

Image: .\BUILD\REALTEK_RTL8195AM\GCC_ARM\mbed-os-example-blinky.bin
Получаем бинарники для прошивки или загрузки в RAM.
Чтобы мигал красный светодиод на RTL00 модуле, исправить код:
Код:
#include "mbed.h"
DigitalOut led1(PA_4);
// main() runs in its own thread in the OS
int main()  {
    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}
 
Последнее редактирование:

pvvx

Активный участник сообщества
Пример с WiFi:
Код:
#include "mbed.h"
#include "TCPSocket.h"
#include "RTWInterface.h"

RTWInterface wifi;
TCPSocket socket;

int main() {
    printf("\r\nExample network-socket HTTP client\n\n");
 
    // Brings up the network interface
    wifi.connect("SSID", "PASWORD", NSAPI_SECURITY_WPA_WPA2);
    const char *ip = wifi.get_ip_address();
    const char *mac = wifi.get_mac_address();
    printf("IP address is: %s\r\n", ip ? ip : "No IP");
    printf("MAC address is: %s\r\n", mac ? mac : "No MAC");

    // Open a socket on the network interface, and create a TCP connection to mbed.org
    socket.open(&wifi);
    socket.connect("developer.mbed.org", 80);

    // Send a simple http request
    char sbuffer[] = "GET / HTTP/1.1\r\nHost: developer.mbed.org\r\n\r\n";
    int scount = socket.send(sbuffer, sizeof sbuffer);
    printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);

    // Recieve a simple http response and print out the response line
    char rbuffer[64];
    int rcount = socket.recv(rbuffer, sizeof rbuffer);
    printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);

    // Close the socket to return its memory and bring down the network interface
    printf("\r\nDisconnect\r\n");
    socket.close();
    wifi.disconnect();
}

Код:
E:\RTL87xx\mbed-os-master\blinky\mbed-os-example-blinky>mbed compile -m REALTEK_RTL8195AM -t GCC_ARM
Building project mbed-os-example-blinky (REALTEK_RTL8195AM, GCC_ARM)
Scan: .
Scan: FEATURE_BLE
Scan: FEATURE_COMMON_PAL
Scan: FEATURE_LWIP
Scan: FEATURE_UVISOR
Scan: FEATURE_ETHERNET_HOST
Scan: FEATURE_LOWPAN_BORDER_ROUTER
Scan: FEATURE_LOWPAN_HOST
Scan: FEATURE_LOWPAN_ROUTER
Scan: FEATURE_NANOSTACK
Scan: FEATURE_NANOSTACK_FULL
Scan: FEATURE_THREAD_BORDER_ROUTER
Scan: FEATURE_THREAD_END_DEVICE
Scan: FEATURE_THREAD_ROUTER
Scan: FEATURE_STORAGE
Scan: env
Scan: mbed
+------------------------+--------+-------+-------+
| Module                 |  .text | .data |  .bss |
+------------------------+--------+-------+-------+
| Fill                   |    373 |    13 |    55 |
| Misc                   | 198015 |  8253 | 36869 |
| drivers                |     52 |     0 |     0 |
| features/FEATURE_LWIP  |  35651 |    81 | 37784 |
| features/netsocket     |   4782 |    85 |    60 |
| hal                    |    186 |     0 |     0 |
| platform               |   1460 |     4 |   269 |
| rtos                   |    213 |     4 |     4 |
| rtos/rtx               |   8269 |    20 | 10967 |
| targets/TARGET_Realtek |  21488 |    12 |  2644 |
| Subtotals              | 270489 |  8472 | 88652 |
+------------------------+--------+-------+-------+
Allocated Heap: unknown
Allocated Stack: unknown
Total Static RAM memory (data + bss): 97124 bytes
Total RAM memory (data + bss + heap + stack): 97124 bytes
Total Flash memory (text + data + misc): 278961 bytes

Image: .\BUILD\REALTEK_RTL8195AM\GCC_ARM\mbed-os-example-blinky.bin
Лог с RTL00:
Код:
===== Enter SRAM-Boot 1 ====
CPU CLK: 83333333 Hz, SOC FUNC EN: 0x20111157
Img Sign: RTKWin, Go @ 0x10006049
Initializing WIFI ...
WIFI initialized
WIFI is already running
Example network-socket HTTP client
RTL8195A[Driver]: set ssid [********]
RTL8195A[Driver]: start auth to **:**:**:**:**:**
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=1)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2
IP address is: 192.168.1.122
MAC address is: 00:f8:87:11:00:12
sent 45 [GET / HTTP/1.1]
recv 64 [HTTP/1.1 301 Moved Permanently]
Disconnect
ioctl[SIOCGIWESSID] ssid = NULL, not connected
Вложение с исходником и файлами для примера запуска кода в RAM через Jtag (для упрощенного запуска скопировать файлы в папку mbed-os-example-blinky, и исправить путь в батниках к JLink.exe).
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
MBED Patch для RTL8710AF связанный со стартом CPU из ROM-BIOS на 83MHz.
Если требуется переключить на 166MHz или другую частоту -> см. rtl8195a_init.c
 

Вложения

mikush

New member
Какие действия нужно совершить над сгенерированном elf файлом, что бы можно было загрузить в rtl для дебага.
пробовал как в hello world, обезьянничаю так как ни чего не понимаю в этом :confused:
-DBinFileName="\"Debug/EmbeddedProject15.bin\"" rtl8710_flash_boot.S -o flash.elf -DSeg1StartAddr=268460056
ругается rtl8710_flash_boot.S(37): error : invalid constant (10006018) after fixup
268460056 - адрес .text , дергаю со пиновского скрипта, который шаманит и делает ram_2_prepend.bin
 

pvvx

Активный участник сообщества
Какие действия нужно совершить над сгенерированном elf файлом, что бы можно было загрузить в rtl для дебага.
пробовал как в hello world, обезьянничаю так как ни чего не понимаю в этом :confused:
Не могу помочь, т.к. пока не пользуюсь DAP-Link и отладкой. (к текущим макеткам подключен полный Jtag и SWD) Отладку вписываю прямо в СИ коде с выводом в терминал - так процесс отладки проходит у меня быстрее при загрузке приложения в RAM, чем ковыряться в отладчике в регистрах CPU и либах без исходников...
 
Сверху Снизу