Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    Use of bmi160.h API with PIC Microcnotroller

    Highlighted
    Member

    Use of bmi160.h API with PIC Microcnotroller

    Hello, i'm new of this forum, i try to use the API of "bmx160.h" files with an 8-bit microcntroller in C- language but there is a declaretion of an array inside a function that needed dinamic allocation of memory.

    In the file attached the array is named "uint8_t temp_buf[temp_len];" and the dimension of array "temp_len" is a parameter passed to the function.
    The compiler give me this error: "BMX160_drivers/bmi160.c:1369:21: error: variable length arrays are not supported" .

    Does anyone know what needs to be done to make the compiler allocate memory?

    Thank you!

     

    6 REPLIES 6
    Highlighted
    Member

    Re: Use of bmi160.h API with PIC Microcnotroller

    I was about to create thread with same error. in BMI085 API, i get two errors while compiling, by dynamicly alocating array in wrong way.

    static int8_t get_regs(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, struct bmi08x_dev *dev)
    {
    int8_t rslt = BMI08X_OK;
    uint16_t index;
    uint32_t temp_len = len + dev->dummy_byte;
    uint8_t temp_buff[temp_len]; //Error[Pe028]:temp_len expression must have a constant value

    Highlighted
    Member

    Re: Use of bmi160.h API with PIC Microcnotroller

    Hello Kilohercas, thank you for your post.
    I tried to identify the maximum number of registers that the array could contain: the registers of the BMX160 device are 126, for safety I added 16 bytes so I declared that vector as "static uint8_t temp_buf [142];" this allows it to compile but i have yet to try if it works. Has anyone ever tried to do it this way?

    Highlighted
    Member

    Re: Use of bmi160.h API with PIC Microcnotroller

    in C, you can do like this:

    uint8_t *pointer;
    pointer = malloc(temp_len * sizeof(uint8_t ));

    I guess it's right way to do it.

    Highlighted
    Member

    Re: Use of bmi160.h API with PIC Microcnotroller

    I have discovered that can't use malloc () and free () on 8-bit microcontrollers family as describe in the page of compiler manual attached. Now i think to migrate an 32-bit Microchip microcontroller to obtain more memory space.
    Thanks anyway

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist