美文网首页
如何打开openharmony的HDF中的HILOG?

如何打开openharmony的HDF中的HILOG?

作者: xEndLess | 来源:发表于2023-01-15 16:09 被阅读0次

openharmony版本号3.1.1
轻量系统

device/board/fx/bajie/liteos_m/config.gni中board_cflags下加入 "-DLOSCFG_BASE_CORE_HILOG"。


board_cflags += [
    "-Og",
    "-Wall",
    "-fdata-sections",
    "-ffunction-sections",
    "-Wno-missing-braces",
    "-DUSE_HAL_DRIVER",
    "-DSTM32F407xx",
    "-DUSE_FULL_LL_DRIVER",
    "-DLOSCFG_BASE_CORE_HILOG",
]           

hb build -f编译后,出现如下错误。

[OHOS ERROR] In file included from ../../../drivers/framework/include/utils/hdf_log.h:48,
[OHOS ERROR]                  from ../../../device/board/fx/bajie/liteos_m/fs_adapter/littlefs/src/fs_init.c:19:
[OHOS ERROR] ../../../drivers/adapter/khdf/liteos_m/osal/include/hdf_log_adapter.h:35:10: fatal error: hilog/log.h: No such file or directory
[OHOS ERROR]    35 | #include "hilog/log.h"
[OHOS ERROR]       |          ^~~~~~~~~~~~~  
[OHOS ERROR] compilation terminated.

log.h的路径base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog/log.h。
device/board/fx/bajie/liteos_m/fs_adapter/littlefs/BUILD.gn中include_dirs增加路劲base/hiviewdfx/hilog_lite/interfaces/native/kits/。如下图所示。

    include_dirs = [
      "include",
      "//base/hiviewdfx/hilog_lite/interfaces/native/kits/"
        # "//device/board/fangxing/tunnel_box/liteos_m/third_party/SFUD/sfud/inc"
    ]

hb build -f 遇到如下问题.

[OHOS ERROR] /home/xendless/tools/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/11.2.1/../../../../arm-none-eabi/bin/ld: libs/libhilog_static.a(libhilog_static.hiview_log.o): in function `HiLogPrintArgs':
[OHOS ERROR] hiview_log.c:(.text.HiLogPrintArgs+0x86): undefined reference to `HiLogWriteInternal'
[OHOS ERROR] collect2: error: ld returned 1 exit status

device/board/fx/bajie/liteos_m/startup/src/uart.c下增加如下代码。

#define HILOG_IDX               2
int HiLogWriteInternal(const char *buffer, size_t bufLen)
{
    size_t len = bufLen;
    if (!buffer) {
        return -1;
    }
    // because it's called as HiLogWriteInternal(buf, strlen(buf) + 1)
    if (len < HILOG_IDX) {
        return 0;
    }
    if (buffer[len - HILOG_IDX] != '\n') {
        *((char *)buffer + bufLen - 1) = '\n';
    } else {
        len--;
    }

    for (int i = 0; i < bufLen; i++)
    {
        while (LL_USART_IsActiveFlag_TXE(USART1) == 0)
        {
        }
        LL_USART_TransmitData8(USART1, buffer[i]);
    }

    return 0;
}

hb build -f ,未出现错误。运行代码hdf打印信息如下

DeviceManagerStart start ...
E 02500/HDF_LOG_TAG: DeviceManagerStart in
I 02500/devmgr_service: start svcmgr result 0
I 02500/hcs_blob_if: CheckHcsBlobLength: the blobLength: 2920, byteAlign: 1
E 02500/HDF_LOG_TAG: HdfDriverManagerGetDriver:driver st_gpio_driver not found
E 02500/devhost_service_clnt: failed to install driver , ret = -207
I 02500/device_node: launch devnode HDF_PLATFORM_SPI_3
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverBind: entry
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverInit: entry
I 02500/STM32F4XX_SPI_HDF: busNum = 2
I 02500/STM32F4XX_SPI_HDF: csPin = [1 2 3]
I 02500/device_node: launch devnode HDF_PLATFORM_SPI_2
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverBind: entry
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverInit: entry
I 02500/STM32F4XX_SPI_HDF: busNum = 1
I 02500/STM32F4XX_SPI_HDF: csPin = [1 2 3]
I 02500/device_node: launch devnode HDF_PLATFORM_SPI_1
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverBind: entry
I 02500/STM32F4XX_SPI_HDF: HdfSpiDriverInit: entry
I 02500/STM32F4XX_SPI_HDF: busNum = 0
I 02500/STM32F4XX_SPI_HDF: csPin = [1 2 3]
DeviceManagerStart end ...

HDF的hilog打印移植成功。


相关文章

网友评论

      本文标题:如何打开openharmony的HDF中的HILOG?

      本文链接:https://www.haomeiwen.com/subject/vmfacdtx.html