DAVE™ Forum Discussions
DAVE™
As part of my learning I am trying to measure ADC conversion time of XMC4200.I used the same SysTick code to measure and got considerably longer time ...
Show More
As part of my learning I am trying to measure ADC conversion time of XMC4200.
I used the same SysTick code to measure and got considerably longer time if DAVE app is used for the ADC compared to directly accessing to the ADC registers.
The codes I used for both cases are below along with the SysTick setup. I measured 137 SysTick cycles with APP version and 15 SysTick cycles with direct access.
Here are my questions:
1. The time with the app is about 9 times longer. Is this normal or am I doing a silly mistake? If this is true, this makes DAVE ADC app almost useless for some applications.
2. I assume the number I get from the SysTick as "delta" is the number of clock cycles, each 12.5ns at 80MHz. Could anyone confirm this please?
3. With ADC app I measured the same, 137 cycles regardless of 8, 10 or 12 bit conversion. Wouldn't we expect some conversion time difference depending on the conversion resolution?
Any help would be greatly appreciated.
Thank you in advance.
YH
//==============================
//Code for the ADC app:
int main(void)
{
DAVE_Init();
t1 = systick_start(); //This parts calculates the time required for start stop
t2 = systick_stop();
calibTime = t1 - t2; //Time required for SysTick start/stop. Measured 42. This is subtracted from the actual measurement later.
while(1U)
{
t1 = systick_start(); //Measurement starts here.
ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0 );
result = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel _A);
t2 = systick_stop(); //Measurement stops here.
delta = t1 - t2 - calibTime; //This is the total conversion time. 137 clock cycles measured.
}
}
//==============================
//==============================
//Code for direct access to registers:
int main(void)
{
DAVE_Init();
t1 = systick_start(); //This parts calculates the time required for SysTick start stop
t2 = systick_stop();
calibTime = t1 - t2; //Time required for SysTick start/stop. Measured 42. This is subtracted from the actual measurement later.
while(1U)
{
t1 = systick_start(); //Measurement starts here.
VADC->BRSMR |= (uint32_t)VADC_BRSMR_LDEV_Msk;
result = VADC_G0->RES[15];
t2 = systick_stop(); //Measurement stops here.
delta = t1 - t2 - calibTime; //This is the total conversion time. 15 clock cycles measured.
}
}
//==============================
//==============================
SysTick initialization code. Same for both measurements.
__STATIC_INLINE uint32_t systick_start(void)
{
SysTick->LOAD = SysTick_LOAD_RELOAD_Msk - 1;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
__NOP();
return((uint32_t)SysTick->VAL);
}
__STATIC_INLINE uint32_t systick_stop(void)
{
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
return((uint32_t)SysTick->VAL);
}
//============================== Show Less
I used the same SysTick code to measure and got considerably longer time if DAVE app is used for the ADC compared to directly accessing to the ADC registers.
The codes I used for both cases are below along with the SysTick setup. I measured 137 SysTick cycles with APP version and 15 SysTick cycles with direct access.
Here are my questions:
1. The time with the app is about 9 times longer. Is this normal or am I doing a silly mistake? If this is true, this makes DAVE ADC app almost useless for some applications.
2. I assume the number I get from the SysTick as "delta" is the number of clock cycles, each 12.5ns at 80MHz. Could anyone confirm this please?
3. With ADC app I measured the same, 137 cycles regardless of 8, 10 or 12 bit conversion. Wouldn't we expect some conversion time difference depending on the conversion resolution?
Any help would be greatly appreciated.
Thank you in advance.
YH
//==============================
//Code for the ADC app:
int main(void)
{
DAVE_Init();
t1 = systick_start(); //This parts calculates the time required for start stop
t2 = systick_stop();
calibTime = t1 - t2; //Time required for SysTick start/stop. Measured 42. This is subtracted from the actual measurement later.
while(1U)
{
t1 = systick_start(); //Measurement starts here.
ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0 );
result = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel _A);
t2 = systick_stop(); //Measurement stops here.
delta = t1 - t2 - calibTime; //This is the total conversion time. 137 clock cycles measured.
}
}
//==============================
//==============================
//Code for direct access to registers:
int main(void)
{
DAVE_Init();
t1 = systick_start(); //This parts calculates the time required for SysTick start stop
t2 = systick_stop();
calibTime = t1 - t2; //Time required for SysTick start/stop. Measured 42. This is subtracted from the actual measurement later.
while(1U)
{
t1 = systick_start(); //Measurement starts here.
VADC->BRSMR |= (uint32_t)VADC_BRSMR_LDEV_Msk;
result = VADC_G0->RES[15];
t2 = systick_stop(); //Measurement stops here.
delta = t1 - t2 - calibTime; //This is the total conversion time. 15 clock cycles measured.
}
}
//==============================
//==============================
SysTick initialization code. Same for both measurements.
__STATIC_INLINE uint32_t systick_start(void)
{
SysTick->LOAD = SysTick_LOAD_RELOAD_Msk - 1;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
__NOP();
return((uint32_t)SysTick->VAL);
}
__STATIC_INLINE uint32_t systick_stop(void)
{
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
return((uint32_t)SysTick->VAL);
}
//============================== Show Less
DAVE™
Thank you whoever fixed my problem.
Could you also delete this post?
Thank you,
YH
Could you also delete this post?
Thank you,
YH
DAVE™
Hi everyone, I've still got the problem that I can't write to a SD-card connected to a XMC1402 via SPI. If I do the first writing (with the sample cod...
Show More
Hi everyone,
I've still got the problem that I can't write to a SD-card connected to a XMC1402 via SPI.
If I do the first writing (with the sample code) everything's fine. The directory will be created and the file incl. content will be written.
But if I try to open this file again later (append-mode) the system hangs in "sdmmc_block_private_spi.c" at line 1517: while (obj->spi_master_handle->runtime->tx_busy == true).
Does somebody have the same problem?
Best regards,
Stefan
switch(u8function)
{
case SD_INIT: if(status == DAVE_STATUS_SUCCESS)
{
/* Register work area */
res = f_mount(&fs, "0:", 1);
if (res == FR_OK)
{
/* Create a new directory */
res = f_mkdir("ZB");
if ((res == FR_OK) || (res == FR_EXIST))
{
/* Create a file as new */
res = f_open(&fil, "ZB/BATT.TXT", FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
if ((res == FR_OK) || (res == FR_EXIST))
{
/* Write a message */
res = f_write(&fil, "Hello, World!\r\n", 15, &bw);
if (res == FR_OK )
{
res = f_lseek(&fil, 0);
/* Read the buffer from file */
res = f_read(&fil, &buff[0], 15, &br);
if(res == FR_OK)
{
/* Go to location 15 */
res = f_lseek(&fil, 15);
if(res == FR_OK)
{
/* Add some more content to the file */
res = f_write(&fil, "\nWelcome to this Card", 20, &bw);
if(res == FR_OK)
{
f_close(&fil);
}
}
}
}
}
}
}
}
break;
case SD_APPEND: __NOP();
//res = f_mount(&fs, "0:", 1);
res = f_open(&fil, "ZB/BATT.TXT", FA_OPEN_APPEND);
if(res == FR_OK)
{
res = f_lseek(&fil, f_size(&fil));
f_printf(&fil, "\nTest");
}
f_close(&fil);
break;
default: break;
} Show Less
I've still got the problem that I can't write to a SD-card connected to a XMC1402 via SPI.
If I do the first writing (with the sample code) everything's fine. The directory will be created and the file incl. content will be written.
But if I try to open this file again later (append-mode) the system hangs in "sdmmc_block_private_spi.c" at line 1517: while (obj->spi_master_handle->runtime->tx_busy == true).
Does somebody have the same problem?
Best regards,
Stefan
switch(u8function)
{
case SD_INIT: if(status == DAVE_STATUS_SUCCESS)
{
/* Register work area */
res = f_mount(&fs, "0:", 1);
if (res == FR_OK)
{
/* Create a new directory */
res = f_mkdir("ZB");
if ((res == FR_OK) || (res == FR_EXIST))
{
/* Create a file as new */
res = f_open(&fil, "ZB/BATT.TXT", FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
if ((res == FR_OK) || (res == FR_EXIST))
{
/* Write a message */
res = f_write(&fil, "Hello, World!\r\n", 15, &bw);
if (res == FR_OK )
{
res = f_lseek(&fil, 0);
/* Read the buffer from file */
res = f_read(&fil, &buff[0], 15, &br);
if(res == FR_OK)
{
/* Go to location 15 */
res = f_lseek(&fil, 15);
if(res == FR_OK)
{
/* Add some more content to the file */
res = f_write(&fil, "\nWelcome to this Card", 20, &bw);
if(res == FR_OK)
{
f_close(&fil);
}
}
}
}
}
}
}
}
break;
case SD_APPEND: __NOP();
//res = f_mount(&fs, "0:", 1);
res = f_open(&fil, "ZB/BATT.TXT", FA_OPEN_APPEND);
if(res == FR_OK)
{
res = f_lseek(&fil, f_size(&fil));
f_printf(&fil, "\nTest");
}
f_close(&fil);
break;
default: break;
} Show Less
DAVE™
hiện giờ, cùng tỷ lệ phương tiện tham gia giao thông xum xuê, xe máy là phương tiện chính ở VN. trong thời gian lắp đặt sẽ luôn nảy sinh các vấn đề hư...
Show More
hiện giờ, cùng tỷ lệ phương tiện tham gia giao thông xum xuê, xe máy là phương tiện chính ở VN. trong thời gian lắp đặt sẽ luôn nảy sinh các vấn đề hư hỏng dù đã bảo dưỡng chăm lo định kỳ, trong số ấy có 1 vài luận điểm liên quan đến IC. nội dung bài viết đó sẽ san sẻ một trong những kinh nghiệm về IC xe máy với cách kiểm tra IC xe máy sống hoặc chết, cùng với đó là những thông báo tương quan đến IC xe máy.
cấu trúc cũng như nguyên tắc hoạt động vui chơi của IC xe máy
+ cấu trúc chung của IC xe máy
IC có rất nhiều loại khác biệt, mỗi loại sẽ có các phần cấu tạo cá biệt. Nhưng nhìn chung thì IC xe sẽ có những bộ phận chính như bộ phận kích lửa cùng một trong những nhiều chủng loại dây: dây kích (thường sẽ có màu xanh lá cây dương kẻ sọc vàng), dây mobin sườn (có màu đen kẻ sọc vàng), dây mass (có màu xanh lá cây lá cây), dây mobin lửa (màu màu đen kẻ sọc màu đỏ), dây tắt máy,... con số dây rất có thể ít hay nhiều hơn tùy vào từng loại IC.
IC trong xe máy được sử dụng hiện nay
IC trong xe máy được dùng giờ đây
+ nguyên lý buổi giao lưu của IC trong xe máy
IC xe máy hoạt động bằng cách đánh lửa để có thể kích hoạt các bộ phận, khối hệ thống điện của xe cho xe vận động với nổ máy. cùng theo với đó IC cũng điều khiển những tia lửa điện từ bugi của xe tiếp nối hoạt động song song cùng tốc độ quay của máy. chính vì thế xe máy nổ được chính là nhờ IC vận động làm ra nổ tại động cơ đốt trong xe, điều này kích cầu pít tông chuyển động và xe lăn bánh.
IC là một bộ phận rất chi là quan trọng vì nó giúp khởi động bộ đề. với các dòng xe tay ga hay nhiều chủng loại xe tay ga nhu cầu nữ không tồn tại cần đạp nổ thì việc không tồn tại IC hoặc IC bị hỏng sẽ không hề khởi động được xe.
Xem thêm: http://camnangmayruaxe.info/trieu-chung-hong-ic-xe-may/
Cách kiểm tra IC xe máy sống hoặc chết
Việc đầu tiên khi muốn kiểm tra IC xe máy bạn nên đo điện trở của cuộn lửa. Mỗi loại xe khác biệt thì điện trở của cuộn lửa cũng không giống nhau. rất có thể đọc, tham khảo những thông số từ nhà sản xuất cung ứng cho từng loại xe. dẫu thế, điểm lưu ý chung của tất cả những dòng xe nếu giá trị điện trở Dưới 200Ω tức là cuộn lửa đã hỏng cùng IC không hoạt động được theo. Nếu cuộn lửa hoạt động bình thường thì khi bật chìa khóa xe lên dây lửa có thể quẹt ra những tia lửa.
Khi đã kiểm tra thấy cuộn lửa thông thường thì thường xuyên trang bị IC vào nhằm kiểm tra. Trước hết cần kiểm tra bộ phóng điện qua sườn. tất cả chúng ta đạp hay đề nổ mà có tia lửa có mặt thì IC vẫn không thay đổi với chuyển động bình thường. Kiểm tra qua dây cao áp cũng là một cách cho chúng ta biết được tình trạng của IC. Khi dây điện này phát ra tiếng lách tách giòn tai với dứt khoát thì tình trạng dây vẫn chính hãng với ứng dụng được. Tia lửa điện này rất có thể phát ra màu ánh tím vì vậy quý khách hàng không nhất thiết phải lo lắng khi thấy hiện tượng này.
ngoài ra nếu bạn có nhu cầu muốn tìm địa chỉ mua dụng cụ rửa xe máy đáng tin cậy chính hãng chất lượng nhất
sau khoản thời gian đã nắm bắt được kết cấu của IC xe máy cùng theo với cách kiểm tra IC xe máy sống hay chết để có thể đi đến Tóm lại cái xe của các bạn có bị hỏng hay là không, có cần mang tới trung tâm sửa chữa thay thế hay tự để có thể tận nhà. nhằm tiết kiệm ngân sách và chi phí thời hạn thì mọi người chỉ cần đem lại shop ngồi đợi, thợ tại chỗ này sẽ tiến hành kiểm tra và thay IC mới nhu cầu xe của các bạn. mặc dù thế bạn có thể mua IC thay tận nơi để tiết kiệm chi phí nếu bạn có đủ đồ vật và kinh nghiệm sửa xe.
Trên đấy là một số hướng dẫn kiểm tra IC xe máy sống hay chết.Nếu quý khách còn bất kì câu hỏi nào vui mắt liên lạc cùng chúng tôi để được đội ngũ hỗ trợ tư vấn viên giải đáp chi tiết cụ thể nhất.
Cám ơn khách hàng đã quan tâm tới dịch vụ!
Xem thêm: http://camnangmayruaxe.info/cach-kiem-tra-ic-xe-may-song-hay-chet/ Show Less
cấu trúc cũng như nguyên tắc hoạt động vui chơi của IC xe máy
+ cấu trúc chung của IC xe máy
IC có rất nhiều loại khác biệt, mỗi loại sẽ có các phần cấu tạo cá biệt. Nhưng nhìn chung thì IC xe sẽ có những bộ phận chính như bộ phận kích lửa cùng một trong những nhiều chủng loại dây: dây kích (thường sẽ có màu xanh lá cây dương kẻ sọc vàng), dây mobin sườn (có màu đen kẻ sọc vàng), dây mass (có màu xanh lá cây lá cây), dây mobin lửa (màu màu đen kẻ sọc màu đỏ), dây tắt máy,... con số dây rất có thể ít hay nhiều hơn tùy vào từng loại IC.
IC trong xe máy được sử dụng hiện nay
IC trong xe máy được dùng giờ đây
+ nguyên lý buổi giao lưu của IC trong xe máy
IC xe máy hoạt động bằng cách đánh lửa để có thể kích hoạt các bộ phận, khối hệ thống điện của xe cho xe vận động với nổ máy. cùng theo với đó IC cũng điều khiển những tia lửa điện từ bugi của xe tiếp nối hoạt động song song cùng tốc độ quay của máy. chính vì thế xe máy nổ được chính là nhờ IC vận động làm ra nổ tại động cơ đốt trong xe, điều này kích cầu pít tông chuyển động và xe lăn bánh.
IC là một bộ phận rất chi là quan trọng vì nó giúp khởi động bộ đề. với các dòng xe tay ga hay nhiều chủng loại xe tay ga nhu cầu nữ không tồn tại cần đạp nổ thì việc không tồn tại IC hoặc IC bị hỏng sẽ không hề khởi động được xe.
Xem thêm: http://camnangmayruaxe.info/trieu-chung-hong-ic-xe-may/
Cách kiểm tra IC xe máy sống hoặc chết
Việc đầu tiên khi muốn kiểm tra IC xe máy bạn nên đo điện trở của cuộn lửa. Mỗi loại xe khác biệt thì điện trở của cuộn lửa cũng không giống nhau. rất có thể đọc, tham khảo những thông số từ nhà sản xuất cung ứng cho từng loại xe. dẫu thế, điểm lưu ý chung của tất cả những dòng xe nếu giá trị điện trở Dưới 200Ω tức là cuộn lửa đã hỏng cùng IC không hoạt động được theo. Nếu cuộn lửa hoạt động bình thường thì khi bật chìa khóa xe lên dây lửa có thể quẹt ra những tia lửa.
Khi đã kiểm tra thấy cuộn lửa thông thường thì thường xuyên trang bị IC vào nhằm kiểm tra. Trước hết cần kiểm tra bộ phóng điện qua sườn. tất cả chúng ta đạp hay đề nổ mà có tia lửa có mặt thì IC vẫn không thay đổi với chuyển động bình thường. Kiểm tra qua dây cao áp cũng là một cách cho chúng ta biết được tình trạng của IC. Khi dây điện này phát ra tiếng lách tách giòn tai với dứt khoát thì tình trạng dây vẫn chính hãng với ứng dụng được. Tia lửa điện này rất có thể phát ra màu ánh tím vì vậy quý khách hàng không nhất thiết phải lo lắng khi thấy hiện tượng này.
ngoài ra nếu bạn có nhu cầu muốn tìm địa chỉ mua dụng cụ rửa xe máy đáng tin cậy chính hãng chất lượng nhất
sau khoản thời gian đã nắm bắt được kết cấu của IC xe máy cùng theo với cách kiểm tra IC xe máy sống hay chết để có thể đi đến Tóm lại cái xe của các bạn có bị hỏng hay là không, có cần mang tới trung tâm sửa chữa thay thế hay tự để có thể tận nhà. nhằm tiết kiệm ngân sách và chi phí thời hạn thì mọi người chỉ cần đem lại shop ngồi đợi, thợ tại chỗ này sẽ tiến hành kiểm tra và thay IC mới nhu cầu xe của các bạn. mặc dù thế bạn có thể mua IC thay tận nơi để tiết kiệm chi phí nếu bạn có đủ đồ vật và kinh nghiệm sửa xe.
Trên đấy là một số hướng dẫn kiểm tra IC xe máy sống hay chết.Nếu quý khách còn bất kì câu hỏi nào vui mắt liên lạc cùng chúng tôi để được đội ngũ hỗ trợ tư vấn viên giải đáp chi tiết cụ thể nhất.
Cám ơn khách hàng đã quan tâm tới dịch vụ!
Xem thêm: http://camnangmayruaxe.info/cach-kiem-tra-ic-xe-may-song-hay-chet/ Show Less
DAVE™
Hi there,I have a Dave project which generates code and compiles with Dave 4.4.2, but it doesn't use the latest App versions which I have installed.Fo...
Show More
Hi there,
I have a Dave project which generates code and compiles with Dave 4.4.2, but it doesn't use the latest App versions which I have installed.
For example, it uses UART v4.1.10 instead of the current v4.1.12, CAN_NODE v4.1.14 instead of v4.1.20, and so on.
When I try to upgrade all Apps ("DAVE Project Upgrade, APPs Upgrade" => new project Project_Upgraded_0), I get an error ("Solver Error while setting the GUI value to APP!").
Of course, I could remove Apps, e.g. the UART, and add them in the new project again with the old version. But isn't it that in this case I would have to input the pin numbers and other settings again?
Maybe I should not upgade all Apps in one step. Therefore I would like to know:
Is it possible to upgrade just single Apps, instead of all of them in one step?
Regards,
Joachim Show Less
I have a Dave project which generates code and compiles with Dave 4.4.2, but it doesn't use the latest App versions which I have installed.
For example, it uses UART v4.1.10 instead of the current v4.1.12, CAN_NODE v4.1.14 instead of v4.1.20, and so on.
When I try to upgrade all Apps ("DAVE Project Upgrade, APPs Upgrade" => new project Project_Upgraded_0), I get an error ("Solver Error while setting the GUI value to APP!").
Of course, I could remove Apps, e.g. the UART, and add them in the new project again with the old version. But isn't it that in this case I would have to input the pin numbers and other settings again?
Maybe I should not upgade all Apps in one step. Therefore I would like to know:
Is it possible to upgrade just single Apps, instead of all of them in one step?
Regards,
Joachim Show Less
DAVE™
Hello,In the DAVE 4 CAN_NODE App, I can only assign 32 MO Buffers, but it seems to be possible according to the reference manual of the XMC4500 to use...
Show More
Hello,
In the DAVE 4 CAN_NODE App, I can only assign 32 MO Buffers, but it seems to be possible according to the reference manual of the XMC4500 to use all 64 MO Buffers in any configuration one wishes between the 3 CAN NODES.
Why is this limited in the DAVE App and how to get around it?
Thanks. Show Less
In the DAVE 4 CAN_NODE App, I can only assign 32 MO Buffers, but it seems to be possible according to the reference manual of the XMC4500 to use all 64 MO Buffers in any configuration one wishes between the 3 CAN NODES.
Why is this limited in the DAVE App and how to get around it?
Thanks. Show Less
DAVE™
I'm using the CAN_NODE app in my code. I ran across the MULTICAN_CONFIG app, but can't find why to one over the other.It appears that MULTICAN_CONFIG ...
Show More
I'm using the CAN_NODE app in my code. I ran across the MULTICAN_CONFIG app, but can't find why to one over the other.
It appears that MULTICAN_CONFIG can deal with Gateway mode.
I'm not using Gateway mode, but do use multiple CAN nodes (up to 6 on the XMC4700). Show Less
It appears that MULTICAN_CONFIG can deal with Gateway mode.
I'm not using Gateway mode, but do use multiple CAN nodes (up to 6 on the XMC4700). Show Less
DAVE™
Before starting the PWMSP002 App with API call 'PWMSP002_Start', the direct and inverted output pins sit in the 'Passive Level state (in my case low)....
Show More
Before starting the PWMSP002 App with API call 'PWMSP002_Start', the direct and inverted output pins sit in the 'Passive Level state (in my case low).
When I stop the PWMSP002 App with API call 'PWMSP002_Stop' the direct and inverted output pins remain in their last known state which I believe is dependent on the timer value and compare register. In my case the outputs remain high which is not desirable.
Is there a method for stopping the PWM and ensuring the outputs return to their 'Passive level' states ?
I am considering making and breaking the signal connections in code instead of fixing them using the App configuration tab so I can reset the output pins directly from code once I have stopped the Apps but I would rather use API calls if possible.
Any help would be greatly appreciated.
Best regards
Aaron Show Less
When I stop the PWMSP002 App with API call 'PWMSP002_Stop' the direct and inverted output pins remain in their last known state which I believe is dependent on the timer value and compare register. In my case the outputs remain high which is not desirable.
Is there a method for stopping the PWM and ensuring the outputs return to their 'Passive level' states ?
I am considering making and breaking the signal connections in code instead of fixing them using the App configuration tab so I can reset the output pins directly from code once I have stopped the Apps but I would rather use API calls if possible.
Any help would be greatly appreciated.
Best regards
Aaron Show Less
DAVE™
Hi Infineon,after update gcc to 9-2019-q4-major, app HTTP_SERVER V4.0.18 compiles with error:static declaration of 'strnstr' follows non-static declar...
Show More
Hi Infineon,
after update gcc to 9-2019-q4-major, app HTTP_SERVER V4.0.18 compiles with error:
static declaration of 'strnstr' follows non-static declaration
at file httpd.c (/DAVE/Generated/HTTP_SERVER) line 447.
Compiler set to ISO 2014 C++ with GNU Extensions (c++ source code).
gcc 4.9.3 compiles without error (same settings).
Best Regards
Wolfgang Show Less
after update gcc to 9-2019-q4-major, app HTTP_SERVER V4.0.18 compiles with error:
static declaration of 'strnstr' follows non-static declaration
at file httpd.c (/DAVE/Generated/HTTP_SERVER) line 447.
Compiler set to ISO 2014 C++ with GNU Extensions (c++ source code).
gcc 4.9.3 compiles without error (same settings).
Best Regards
Wolfgang Show Less