warning: array subscript 'uint32_t {aka unsigned int}[0]' is partly outside array bounds of 'uint8_t[1]' {aka 'unsigned char[1]'}I

I added the following function to convert an uint8_t array to uint32_t. But west build with warning: array subscript 'uint32_t {aka unsigned int}[0]' is partly outside array bounds of 'uint8_t[1]' {aka 'unsigned char[1]'} [-Warray-bounds]
574 | *regVal = spiData2Uint32(rxBufU8);

uint32_t spiData2Uint32(const uint8_t* pData) {
    uint32_t data32[4];
    for (int i=0; i<4; i++) {
        data32[i] = *(pData + i);
    }    
    
    const uint32_t ui = data32[3] << 16 |
                        data32[2] << 8  |
                        data32[1];

    return ui;
}

C:\ncs\v2.4.0\nrf\samples\minimal_log_adc>west build -b custom_nrf5340_cpuapp
-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc
-- CMake version: 3.20.5
-- Using NCS Toolchain 2.4.0 for building. (C:/ncs/toolchains/31f4403e35/cmake)
-- Found Python3: C:/ncs/toolchains/31f4403e35/opt/bin/python.exe (found suitable exact version "3.8.2") found components: Interpreter
-- Cache files will be written to: C:/ncs/v2.4.0/zephyr/.cache
-- Zephyr version: 3.3.99 (C:/ncs/v2.4.0/zephyr)
-- Found west (found suitable version "1.0.0", minimum required is "0.7.1")
-- Board: custom_nrf5340_cpuapp
-- Found host-tools: zephyr 0.16.0 (C:/ncs/toolchains/31f4403e35/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.0 (C:/ncs/toolchains/31f4403e35/opt/zephyr-sdk)
-- Found Dtc: C:/ncs/toolchains/31f4403e35/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found BOARD.dts: C:/ncs/v2.4.0/nrf/boards/arm/custom_nrf5340/custom_nrf5340_cpuapp.dts
-- Found devicetree overlay: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/custom_nrf5340_cpuapp.overlay
-- Generated zephyr.dts: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build/zephyr/dts.cmake
Parsing C:/ncs/v2.4.0/zephyr/Kconfig
Loaded configuration 'C:/ncs/v2.4.0/nrf/boards/arm/custom_nrf5340/custom_nrf5340_cpuapp_defconfig'
Merged configuration 'C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/prj.conf'
Configuration saved to 'C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build/zephyr/.config'
Kconfig header saved to 'C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build/zephyr/include/generated/autoconf.h'
-- Found GnuLd: c:/ncs/toolchains/31f4403e35/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe (found version "2.38")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/ncs/toolchains/31f4403e35/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
CMake Warning at C:/ncs/v2.4.0/zephyr/CMakeLists.txt:838 (message):
  No SOURCES given to Zephyr library: lib__libc__common

  Excluding target from build.


-- Configuring done
-- Generating done
-- Build files have been written to: C:/ncs/v2.4.0/nrf/samples/minimal_log_adc/build
-- west build: building application
[1/191] Generating include/generated/version.h
-- Zephyr version: 3.3.99 (C:/ncs/v2.4.0/zephyr), build: v3.3.99-ncs1
[58/191] Building C object CMakeFiles/app.dir/src/adc.c.obj
../src/adc.c: In function '_ad7124Uint8ToStatus':
../src/adc.c:543:1: warning: no return statement in function returning non-void [-Wreturn-type]
  543 | }
      | ^
../src/adc.c: In function '_ad7124RegRead':
../src/adc.c:574:15: warning: implicit declaration of function 'spiData2Uint32' [-Wimplicit-function-declaration]
  574 |     *regVal = spiData2Uint32(rxBufU8);
      |               ^~~~~~~~~~~~~~
../src/adc.c: In function '_ad7124RegIdRead':
../src/adc.c:604:63: warning: passing argument 3 of '_ad7124RegRead' from incompatible pointer type [-Wincompatible-pointer-types]
  604 |     if (_ad7124RegRead(AD7124_REG_ADDR_ID, AD7124_REG_LEN_ID, id) < 0) {
      |                                                               ^~
      |                                                               |
      |                                                               uint8_t * {aka unsigned char *}
../src/adc.c:546:78: note: expected 'uint32_t *' {aka 'unsigned int *'} but argument is of type 'uint8_t *' {aka 'unsigned char *'}
  546 | static int _ad7124RegRead(const uint8_t regAddr, const size_t len, uint32_t* regVal) {
      |                                                                    ~~~~~~~~~~^~~~~~
../src/adc.c: At top level:
../src/adc.c:826:12: warning: '_ad7124RegGainWrite' defined but not used [-Wunused-function]
  826 | static int _ad7124RegGainWrite(const ad7124_gain_idx_t idx, const uint32_t gain) {
      |            ^~~~~~~~~~~~~~~~~~~
../src/adc.c:815:12: warning: '_ad7124RegOffsetWrite' defined but not used [-Wunused-function]
  815 | static int _ad7124RegOffsetWrite(const ad7124_offset_idx_t idx, const uint32_t offset) {
      |            ^~~~~~~~~~~~~~~~~~~~~
../src/adc.c:796:12: warning: '_ad7124RegFilterWriteFs' defined but not used [-Wunused-function]
  796 | static int _ad7124RegFilterWriteFs(const ad7124_filter_idx_t idx, const uint16_t fs) {
      |            ^~~~~~~~~~~~~~~~~~~~~~~
../src/adc.c:776:12: warning: '_ad7124RegConfigWritePga' defined but not used [-Wunused-function]
  776 | static int _ad7124RegConfigWritePga(const ad7124_config_idx_t idx, const ad7124_config_pga_t pga) {
      |            ^~~~~~~~~~~~~~~~~~~~~~~~
../src/adc.c:764:12: warning: '_ad7124RegConfigWrite' defined but not used [-Wunused-function]
  764 | static int _ad7124RegConfigWrite(const ad7124_config_idx_t idx, const ad7124_config_t cfg) {
      |            ^~~~~~~~~~~~~~~~~~~~~
../src/adc.c:745:12: warning: '_ad7124RegAdcCtrlWriteMode' defined but not used [-Wunused-function]
  745 | static int _ad7124RegAdcCtrlWriteMode(const ad7124_op_mode_t mode) {
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/adc.c:736:12: warning: '_ad7124RegCommsWrite' defined but not used [-Wunused-function]
  736 | static int _ad7124RegCommsWrite(const uint32_t regVal) {
      |            ^~~~~~~~~~~~~~~~~~~~
../src/adc.c:721:12: warning: '_ad7124RegWriteMask' defined but not used [-Wunused-function]
  721 | static int _ad7124RegWriteMask(const uint8_t regAddr, unsigned int mask, unsigned int val, unsigned int len) {
      |            ^~~~~~~~~~~~~~~~~~~
../src/adc.c:687:12: warning: '_ad7124RegGainRead' defined but not used [-Wunused-function]
  687 | static int _ad7124RegGainRead(const ad7124_gain_idx_t idx, uint32_t* regVal) {
      |            ^~~~~~~~~~~~~~~~~~
../src/adc.c:677:12: warning: '_ad7124RegOffsetRead' defined but not used [-Wunused-function]
  677 | static int _ad7124RegOffsetRead(const ad7124_offset_idx_t idx, uint32_t* regVal) {
      |            ^~~~~~~~~~~~~~~~~~~~
../src/adc.c:627:24: warning: '_ad7124U32ToConfig' defined but not used [-Wunused-function]
  627 | static ad7124_config_t _ad7124U32ToConfig(const uint32_t val) {
      |                        ^~~~~~~~~~~~~~~~~~
../src/adc.c:579:12: warning: '_ad7124RegStausRead' defined but not used [-Wunused-function]
  579 | static int _ad7124RegStausRead(ad7124_status_t* status) {
      |            ^~~~~~~~~~~~~~~~~~~
../src/adc.c:506:17: warning: '_ad7124GetRegFilterFS' defined but not used [-Wunused-function]
  506 | static uint16_t _ad7124GetRegFilterFS(const ad7124_power_mode_t mode, const int fAdc) {
      |                 ^~~~~~~~~~~~~~~~~~~~~
../src/adc.c:500:14: warning: '_ad7124GetF3dB' defined but not used [-Wunused-function]
  500 | static float _ad7124GetF3dB(const int fAdc) {
      |              ^~~~~~~~~~~~~~
In function '_ad7124RegRead',
    inlined from '_ad7124RegIdRead' at ../src/adc.c:604:9,
    inlined from '_ad7124RegIdCheck' at ../src/adc.c:614:9,
    inlined from 'ad7124Init' at ../src/adc.c:848:9:
../src/adc.c:574:13: warning: array subscript 'uint32_t {aka unsigned int}[0]' is partly outside array bounds of 'uint8_t[1]' {aka 'unsigned char[1]'} [-Warray-bounds]
  574 |     *regVal = spiData2Uint32(rxBufU8);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../src/adc.c: In function 'ad7124Init':
../src/adc.c:613:13: note: object 'id' of size 1
  613 |     uint8_t id;
      |             ^~
[181/191] Linking C executable zephyr\zephyr_pre0.elf

[185/191] Linking C executable zephyr\zephyr_pre1.elf

[191/191] Linking C executable zephyr\zephyr.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:       43684 B         1 MB      4.17%
             RAM:       10360 B       448 KB      2.26%
        IDT_LIST:          0 GB         2 KB      0.00%

Parents Reply Children
Related