Posts by CodeRunner

    I think I am getting closer. I figured out how to enable individual Embedded Studio Pro includes and libraries in the project options. Now when I build the app the linker can't seem to link to the libraries. Is there a linker option or possible path issue with my project that is causing the linker not to find symbols from Embedded Studio Pro?

    1> Linking Start_STM32H745_Nucleo_M4.elf
    1>
    1> Diagnostics:
    1> error: undefined symbol: IP_GetPTPClock
    1> error: undefined symbol: IP_Log
    1> error: undefined symbol: IP_Panic
    1> error: undefined symbol: IP_WEBS_X_SampleConfig
    1> error: undefined symbol: IP_Warn
    1> error: undefined symbol: OS_AssertCPUInISRMode
    1> error: undefined symbol: OS_COM_GetNextChar
    1> error: undefined symbol: OS_COM_OnRx
    1> error: undefined symbol: OS_COM_OnTx
    1> error: undefined symbol: OS_EVENT_Create
    1> error: undefined symbol: OS_EVENT_Delete
    1> error: undefined symbol: OS_EVENT_GetBlocked
    1> error: undefined symbol: OS_EVENT_GetTimed
    1> error: undefined symbol: OS_EVENT_Set
    1> error: undefined symbol: OS_EnterRegionFunc
    1> error: undefined symbol: OS_Global
    1> error: undefined symbol: OS_INFO_GetVersion
    1> error: undefined symbol: OS_InitCalled
    1> error: undefined symbol: OS_Init_VFP
    1> error: undefined symbol: OS_MUTEX_Create
    1> error: undefined symbol: OS_MUTEX_GetValue
    1> error: undefined symbol: OS_MUTEX_LockBlocked
    1> error: undefined symbol: OS_MUTEX_Unlock
    1> error: undefined symbol: OS_Running
    1> error: undefined symbol: OS_SEMAPHORE_GiveMax
    1> error: undefined symbol: OS_Status
    1> error: undefined symbol: OS_SwitchFromInt
    1> error: undefined symbol: OS_TASKEVENT_GetTimed
    1> error: undefined symbol: OS_TASKEVENT_Set
    1> error: undefined symbol: OS_TASK_AddTerminateHook
    1> error: undefined symbol: OS_TASK_CreateEx_D
    1> error: undefined symbol: OS_TASK_Create_D
    1> error: undefined symbol: OS_TASK_Delay
    1> error: undefined symbol: OS_TASK_IsTask
    1> error: undefined symbol: OS_TASK_LeaveRegion
    1> error: undefined symbol: OS_TASK_SetName
    1> error: undefined symbol: OS_TASK_SetPriority
    1> error: undefined symbol: OS_TASK_Terminate
    1> error: undefined symbol: OS_TICK_Handle
    1> error: undefined symbol: OS_TIME_ConfigSysTimer
    1> error: undefined symbol: OS__Start
    1> error: undefined symbol: WebsSample_Application

    Thanks. I just received my "licensed" PTP source and Embedded Studio Pro activation yesterday. I had been working from an evaluation PTP demo for the STM32H743 eval board that I received a long time ago. I will work on updating everything to the most recent libraries and source and will reply with the results.

    Some additional info. I'm running the web server on the Cortex M4 core of an STM32H745 duo core processor. I don't think that should make a difference but I'd thought I'd mention it.

    With uploading a 10-byte text file using Upl.htm (non-Ajax) I get this response in the web browser: Upload of "----------------------------4426402082890354833656916082%0D%0AContent-Disposition%3A%20form-data%3B%20name%3D%22Data%22%3B%20filename%3D%22Upload.txt%22%0D%0AContent-Type%3A%20text%2Fplain%0D%0A%0D%0A123456789A%0D%0A-----------------------------4426402082890354833656916082--%0D%0A" not successful!

    With uploading a 3 kilobyte file and using the Upl_AJAX.htm page a message box pops up in the browser that shows the device ip address and "OnError". I also get the InBuffer too small for POST data warning in the Embedded Studio debug terminal.

    261:972 Webserver Child - WebS: Get /Upl_AJAX.htm
    266:754 PTPClient - Not synced
    271:299 Webserver Child - WebS: Get /Upload.cgi
    271:300 Webserver Child - *** Warning *** WebS: InBuffer too small for POST data.

    Hi Oliver,

    Yes "IP_WEBS_AddUpload()" is uncommented. I set a breakpoint and the function appears to execute.

    Regards,

    Jim

    //
    // Assign file system
    //
    //_pFS_API = &IP_FS_ReadOnly; // To use a a real filesystem like emFile replace this line.
    _pFS_API = &IP_FS_emFile; // Use emFile
    IP_WEBS_AddUpload(); // Enable upload
    //
    // Configure buffer size.
    //
    IP_MEMSET(&BufferSizes, 0, sizeof(BufferSizes));
    BufferSizes.NumBytesInBuf = WEBS_IN_BUFFER_SIZE;
    BufferSizes.NumBytesOutBuf = IP_TCP_GetMTU(_IFaceId) - 72; // Use max. MTU configured for the last interface added minus worst case IPv4/TCP/VLAN headers.
    // Calculation for the memory pool is done under assumption of the best case headers with - 40 bytes.
    BufferSizes.NumBytesParaBuf = WEBS_PARA_BUFFER_SIZE;
    BufferSizes.NumBytesFilenameBuf = WEBS_FILENAME_BUFFER_SIZE;
    BufferSizes.MaxRootPathLen = WEBS_MAX_ROOT_PATH_LEN;
    //
    // Configure the size of the buffers used by the Webserver child tasks.
    //
    IP_WEBS_ConfigBufSizes(&BufferSizes);

    Hello,

    I have an order in process for Embedded Studio Pro so I don't have paid support quite yet but will soon. In the meantime, I have a question concerning file uploads with the emWeb Server. It seems that the WebS InBuffer might need to be as large as the file that I am uploading? When I upload about a 3KByte file I get the log below that the InBuffer is too small for POST data. When I upload a 10 byte text file it appears to work better with no InBuffer warning but the file is not actually saved to the file system when checked running the FTP Server separately (probably a different issue?). What would be the proper way to upload files up to a maximum of 1 Megabyte using emWeb? The goal would be for customers to upload new firmware files. I thought maybe using the IP_RxTask might help but I still get the error. Best Regards.


    4:807 MainTask - INIT: embOS/IP init started. Version 3.31a
    4:807 MainTask - *********************************************************************
    4:807 MainTask - * embOS/IP Configuration *
    4:807 MainTask - *********************************************************************
    4:807 MainTask - * IP_DEBUG: 2
    4:807 MainTask - * Memory added: 24576 bytes
    4:808 MainTask - * Buffer configuration:
    4:808 MainTask - * 12 buffers of 256 bytes
    4:808 MainTask - * 6 buffers of 1516 bytes
    4:808 MainTask - * TCP Tx/Rx window size per socket: 4380/4380 bytes
    4:808 MainTask - * Number of interfaces added: 1
    4:808 MainTask - * Interface #0 configuration:
    4:808 MainTask - * Type: ETH
    4:808 MainTask - * MTU: 1500
    4:808 MainTask - * HW addr.: 00:22:C7:FF:FF:FF
    4:809 MainTask - * IPv4 static addr.: 10.135.246.111
    4:809 MainTask - *********************************************************************
    4:829 MainTask - INIT: Link is down
    4:829 MainTask - DRIVER: Found PHY with Id 0x2000 at addr 0x0
    4:830 MainTask - INIT: Init completed
    4:830 IP_Task - INIT: IP_Task started
    4:830 IP_RxTask - INIT: IP_RxTask started
    6:829 IP_Task - LINK: Link state changed: Full duplex, 100MHz
    6:830 PTPClient - Correction applied onto state "uncalibrated": 1551196467s, 917091479ns
    6:830 PTPClient - Not synced
    6:831 IP_WebServer - WEBS: Using a memory pool of 10996 bytes for 2 connections.
    7:207 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:0222:C7FF:FEFF:FFFF added to IFace: 0
    11:830 PTPClient - Not synced
    16:830 PTPClient - Not synced
    21:830 PTPClient - Not synced
    26:830 PTPClient - Not synced
    28:900 Webserver Child - WebS: Get /Upload.cgi
    28:901 Webserver Child - *** Warning *** WebS: InBuffer too small for POST data.

    //
    // Webserver buffer sizes from WEBS_Conf.h
    //
    #define WEBS_IN_BUFFER_SIZE 2920 // Buffer size should be at least 256 bytes.
    #define WEBS_OUT_BUFFER_SIZE 1460 // Buffer size can be decreased. To small buffers will result in a
    // lack of performance and decreases the quality of service.
    // Default is max. MTU(1500 bytes) - best case IPv4/TCP headers (40 bytes).
    #define WEBS_PARA_BUFFER_SIZE 512 // Required for dynamic content parameter handling.
    #define WEBS_FILENAME_BUFFER_SIZE 64


    //
    // Maximum allowed root path length of the Web server
    // in multiples of a CPU native unit (typically int).
    // If the root path of the Web server is the root of
    // your media you can comment out this define or set
    // it to zero.
    // Example:
    // For the root path "/httpdocs" the define needs
    // to be set to at least 9 . As this is not a multiple
    // of an int, set it to 12.
    //
    #define WEBS_MAX_ROOT_PATH_LEN 24 /*12*/

    //Defines from TASK Start Code
    //
    // Web server and IP stack
    //
    #define MAX_CONNECTIONS 2
    #define BACK_LOG 20
    #define MAX_CONNECTION_INFO 10
    #define IDLE_TIMEOUT 1000 // Timeout [ms] after which the connection will be closed if no new data is received.
    #define SERVER_PORT 80
    #define CHILD_ALLOC_SIZE 5498 // NumBytes required from memory pool for one connection. Should be fine tuned according
    // to your configuration using IP_WEBS_CountRequiredMem() .


    #ifndef STACK_SIZE_SERVER
    #define STACK_SIZE_SERVER (2200 + APP_TASK_STACK_OVERHEAD)
    #endif


    #ifndef TASK_STACK_SIZE_WEBSERVER_TASK
    #define TASK_STACK_SIZE_WEBSERVER_TASK (2048 + APP_TASK_STACK_OVERHEAD)
    #endif

    Thanks for your reply. It is an unpaid project at this point in time. We are testing and evaluating the Segger Tools/Middleware for a commercial product but have not purchased as of yet. I have been learning the Segger Tools with an STM32H745 dual-core processor but it is a challenge developing/debugging code for 2 cores. I wanted to test the STM32H723 as a slightly faster single core option.

    Hello,

    I was wondering if it was possible to configure IP over USB and also an Ethernet port driver simultaneously? It appears that IP_AddEtherInterface can be used for multiple interfaces but I wasn't sure if it could work with IP over USB? If both interfaces can be used simultaneously are there any negative consequences?

    Hello,

    I am currently evaluating the Embedded Studio Pro Cortex-M ide, libraries and the PTP Client. I have had good success working with the PTP Client by itself. Today I tried adding a Webserver task and was unable to get the Webserver to respond until I moved the PTP Task start code from here:


    to Here (below). Is this acceptable? Are there any consequences with starting the PTP Client later in the IP/Ethernet setup process?

    Thanks for the update. It would be really nice to use mailbox and queues between cores. Will the embOS SMP implementation be a separate product or will the features be integrated into embOS? If all goes well I am planning on purchasing Embedded Studio Pro Cortex M Edition so I am hoping that the new features would be included in that package.

    Does Embos have an equivalent of the FreeRTOS message_buffer.h library for Multicore Messaging? I am evaluating Embos with the STM32H745 processor for a company project and would like to transfer messages between the 2 cores while using Embos. I came across an ST/FreeRTOS example called "FreeRTOS_AMP_Dual_RTOS" for the STM32H745 nucleo/discovery boards and would like this same functionality using Embos. Is this functionality available? If so, is there an example? If not, what steps do I need to do to implement dual core messaging using Embos?

    Does Segger have any examples or notes for the recommended way to develop/debug code for dual core processors in Embedded Studio? I am working with the STM32H745ZI processor and would like some guidance. I initially imported an ST STM32H745 Nulceo dual core GPIO example but it did not link the firmware to the right address spaces. I separated the CM4 and CM7 imported code into two projects in one solution and changed the flash/ram address space for each one. That seems to work but I'm wondering if it is the proper way to develop for dual core?

    For debugging, are there any tips on debugging dual core processors? Is it possible to view registers from both cores during a debug session or can I only see the registers for the core being debugged?

    Best Regards!