Page 1 of 2
Differences between the old and new versions of Chibios
Posted: Thu Apr 17, 2025 4:17 pm
by blackberryer
I just ported to the latest chibios version and have documented a lot of diffs, like the one below,I simply set the ‘_base_object_methods’ to 0, will there be a problem
Code: Select all
#define _base_sequential_stream_methods \
/* Stream write buffer method.*/ \
size_t (*write)(void *instance, const uint8_t *bp, size_t n); \
/* Stream read buffer method.*/ \
size_t (*read)(void *instance, uint8_t *bp, size_t n); \
/* Channel put method, blocking.*/ \
msg_t (*put)(void *instance, uint8_t b); \
/* Channel get method, blocking.*/ \
msg_t (*get)(void *instance); \
Code: Select all
#define _base_sequential_stream_methods \
_base_object_methods \
/* Stream write buffer method.*/ \
size_t (*write)(void *instance, const uint8_t *bp, size_t n); \
/* Stream read buffer method.*/ \
size_t (*read)(void *instance, uint8_t *bp, size_t n); \
/* Channel put method, blocking.*/ \
msg_t (*put)(void *instance, uint8_t b); \
/* Channel get method, blocking.*/ \
msg_t (*get)(void *instance);
Re: Differences between the old and new versions of Chibios
Posted: Thu Apr 17, 2025 8:40 pm
by Giovanni
Hi,
Not enough information, where do you have a problem with changes?
Giovanni
Re: Differences between the old and new versions of Chibios
Posted: Sun Apr 20, 2025 3:23 pm
by blackberryer
Giovanni wrote:Hi,
Not enough information, where do you have a problem with changes?
Giovanni
Because when I was porting F405, it took a lot of time, and I couldn't compile it properly;
So I switched to the new version of chibios, and finally it was successfully compiled, and the basic functions were implemented, but the I2S data was received incorrectly;
So I tried to test the new version of chibios with F303, and I2S also received unsuccessfully;
One thing that is certain: the F303 has fine I2S data on older versions of chibios;
So I'm comparing the differences between the old and new versions now to see if I can solve the problem of I2S data receiving errors
Re: Differences between the old and new versions of Chibios
Posted: Sun Apr 20, 2025 3:25 pm
by blackberryer
Giovanni wrote:Hi,
Not enough information, where do you have a problem with changes?
Giovanni
Or see if I can fix the F405 compilation error on older versions, here's the error I reported when compiling older versions
Code: Select all
ChibiOS/os/hal/src/hal_serial_usb.c: In function 'sduRequestsHook':
ChibiOS/os/hal/src/hal_serial_usb.c:323:19: error: request for member 'bmRequestType' in something not a structure or union
323 | if ((usbp->setup.bmRequestType & USB_RTYPE_TYPE_MASK) == USB_RTYPE_TYPE_CLASS) {
| ^
ChibiOS/os/hal/src/hal_serial_usb.c:324:24: error: request for member 'bRequest' in something not a structure or union
324 | switch (usbp->setup.bRequest) {
| ^
make: *** [ChibiOS/os/common/startup/ARMCMx/compilers/GCC/rules.mk:216: build/obj/hal_serial_usb.o] Error 1
Looking at the error it seems to be connected to USBv1 and the F405 should be using OTGv1,I'm confused by this error and don't know how to fix it
Re: Differences between the old and new versions of Chibios
Posted: Sun Apr 20, 2025 4:11 pm
by Giovanni
Hi,
The F4 uses OTGv1
Code: Select all
# Drivers compatible with the platform.
include $(CHIBIOS)/os/hal/ports/STM32/LLD/ADCv2/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/CANv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/CRYPv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/DACv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/DMAv2/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/EXTIv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/GPIOv2/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/I2Cv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/MACv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/OTGv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/QUADSPIv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/RTCv2/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SPIv1/driver_v2.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SDIOv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/SYSTICKv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/TIMv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/USARTv1/driver.mk
include $(CHIBIOS)/os/hal/ports/STM32/LLD/xWDGv1/driver.mk
Are you using custom build files? you should explain your setup or it is impossible to try to help.
Giovanni
Re: Differences between the old and new versions of Chibios
Posted: Sun Apr 20, 2025 4:47 pm
by blackberryer
Just now, I disabled USB, successfully compiled the old version, it runs successfully on F405, I2S data is fine,and i confirmed the compilation option, it's OTGv1
Code: Select all
Compiler Options
arm-none-eabi-gcc -c -mcpu=cortex-m4 -O2 -ggdb -fomit-frame-pointer -falign-functions=16 -ffast-math -fsingle-precision-constant -ffunction-sections -fdata-sections -fno-common -flto -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wall -Wextra -Wundef -Wstrict-prototypes -Wa,-alms=build/lst/ -DCORTEX_USE_FPU=TRUE -DARM_MATH_CM4 -DVERSION="" -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -MD -MP -MF .dep/build.d -I. -IChibiOS/os/license -IChibiOS/os/common/startup/ARMCMx/compilers/GCC -IChibiOS/os/common/startup/ARMCMx/devices/STM32F4xx -IChibiOS/os/common/ext/CMSIS/include -IChibiOS/os/common/ext/CMSIS/ST/STM32F4xx -IChibiOS/os/rt/include -IChibiOS/os/common/oslib/include -IChibiOS/os/common/ports/ARMCMx -IChibiOS/os/common/ports/ARMCMx/compilers/GCC -IChibiOS/os/hal/osal/rt -IChibiOS/os/hal/include -IChibiOS/os/hal/ports/common/ARMCMx -IChibiOS/os/hal/ports/STM32/STM32F4xx -IChibiOS/os/hal/ports/STM32/LLD/ADCv2 -IChibiOS/os/hal/ports/STM32/LLD/CANv1 -IChibiOS/os/hal/ports/STM32/LLD/DACv1 -IChibiOS/os/hal/ports/STM32/LLD/DMAv2 -IChibiOS/os/hal/ports/STM32/LLD/EXTIv1 -IChibiOS/os/hal/ports/STM32/LLD/GPIOv2 -IChibiOS/os/hal/ports/STM32/LLD/I2Cv1 -IChibiOS/os/hal/ports/STM32/LLD/MACv1 -IChibiOS/os/hal/ports/STM32/LLD/OTGv1 -IChibiOS/os/hal/ports/STM32/LLD/RTCv2 -IChibiOS/os/hal/ports/STM32/LLD/SDIOv1 -IChibiOS/os/hal/ports/STM32/LLD/SPIv1 -IChibiOS/os/hal/ports/STM32/LLD/TIMv1 -IChibiOS/os/hal/ports/STM32/LLD/USARTv1 -IChibiOS/os/hal/ports/STM32/LLD/xWDGv1 -IChibiOS/os/hal/lib/streams main.c -o main.o
but I'm currently using the code of the old version of CHIBOS, I can't use OTGv1
One difference I see between the old and the new is USBDriver :
old version
Code: Select all
bool sduRequestsHook(USBDriver *usbp) {
if ((usbp->setup.bmRequestType & USB_RTYPE_TYPE_MASK) == USB_RTYPE_TYPE_CLASS) {
switch (usbp->setup.bRequest) {
case CDC_GET_LINE_CODING:
usbSetupTransfer(usbp, (uint8_t *)&linecoding, sizeof(linecoding), NULL);
return true;
case CDC_SET_LINE_CODING:
usbSetupTransfer(usbp, (uint8_t *)&linecoding, sizeof(linecoding), NULL);
return true;
case CDC_SET_CONTROL_LINE_STATE:
/* Nothing to do, there are no control lines.*/
usbSetupTransfer(usbp, NULL, 0, NULL);
return true;
default:
return false;
}
}
return false;
}
lastet version
Code: Select all
bool sduRequestsHook(USBDriver *usbp) {
if ((usbp->setup[0] & USB_RTYPE_TYPE_MASK) == USB_RTYPE_TYPE_CLASS) {
switch (usbp->setup[1]) {
case CDC_GET_LINE_CODING:
usbSetupTransfer(usbp, (uint8_t *)&linecoding, sizeof(linecoding), NULL);
return true;
case CDC_SET_LINE_CODING:
usbSetupTransfer(usbp, (uint8_t *)&linecoding, sizeof(linecoding), NULL);
return true;
case CDC_SET_CONTROL_LINE_STATE:
/* Nothing to do, there are no control lines.*/
usbSetupTransfer(usbp, NULL, 0, NULL);
return true;
default:
return false;
}
}
return false;
}
Re: Differences between the old and new versions of Chibios
Posted: Mon Apr 21, 2025 2:57 pm
by blackberryer
it's a lot of work to compare the differences between the whole version, so,just now I switched to a chibios version, and everything is still working fine at the moment, temporarily solving the problem
Re: Differences between the old and new versions of Chibios
Posted: Mon Apr 21, 2025 6:10 pm
by Giovanni
Hi,
You should align to newer versions, it is hard to keep track of all changes over the year, it can be done but it takes time.
Giovanni
Re: Differences between the old and new versions of Chibios
Posted: Tue Apr 22, 2025 3:30 pm
by blackberryer
Giovanni wrote:Hi,
You should align to newer versions, it is hard to keep track of all changes over the year, it can be done but it takes time.
Giovanni
I'm using an older version for the time being and migrating to the latest version once the issue is resolved
Now I notice that sdSetBaudrate is missing, what did it change to?
Re: Differences between the old and new versions of Chibios
Posted: Tue Apr 22, 2025 6:07 pm
by Giovanni
Hi,
It never had such a function, you are probably using some customized driver.
Giovanni