STM32F407移植OpenHarmony笔记4

上一篇写到make menuconfig报错,继续开整。

make menuconfig需要/device/soc/*下面有对应的Kconfig文件。
直接去gitee下载stm32的配置文件拿来参考用。
先提取Kconfig文件,后面再添加其它文件。https://gitee.com/openharmony/device_soc_st/tree/OpenHarmony-v3.2-Beta5/icon-default.png?t=N7T8https://gitee.com/openharmony/device_soc_st/tree/OpenHarmony-v3.2-Beta5/

soc下的目录结构如下: 

└── soc
    └── st
        ├── Kconfig.liteos_m.defconfig
        ├── Kconfig.liteos_m.series
        ├── Kconfig.liteos_m.soc
        └── stm32f4xx
            ├── Kconfig.liteos_m.defconfig.series
            ├── Kconfig.liteos_m.defconfig.stm32f4xx
            ├── Kconfig.liteos_m.series
            └── Kconfig.liteos_m.soc

Kconfig.liteos_m.soc会在菜单里添加st这个SOC_COMPANY
还会扫描子目录下的Kconfig.liteos_m.soc,
在stm32f4xx子目录下面的这个文件又向菜单添加SOC_STM32F407

Kconfig.liteos_m.series扫描子目录下的同名文件,
在stm32f4xx子目录里的这个文件又向菜单添加SOC_SERIES_STM32F4xx


再次测试make menuconfig还是会报错:

warning: <choice> (defined at arch/arm/Kconfig:34) defined with type unknown

根据错误提示并找不到问题在哪,
最后发现Makefile需要/vendor/demo/hello/kernel_configs/debug.config文件,空文件就行。

进入Platform选择 Soc和stm32f407。

Compat菜单下,选择newlibc 

配置完菜单后,配置保存在.config,并生成config.h文件,
同时还会向/vendor/demo/hello/kernel_configs/debug.config写入一部分配置内容。


再次编译看看报什么错:

[OHOS INFO] ERROR at //kernel/liteos_m/BUILD.gn:140:18: Unable to load "/home/openharmony/device/board/demo/BUILD.gn".

根据错误,添加BUILD.gn

# /device/board/demo/BUILD.gn
# https://kerndev.blog.csdn.net/

import("//kernel/liteos_m/liteos.gni")
module_name = get_path_info(rebase_path("."), "name")
module_group(module_name) {
    modules = [ "demo_board" ]
}

再次测试,继续根据错误提示,添加以下文件:

/home/openharmony/device/soc/st/BUILD.gn
/home/openharmony/device/soc/st/stm32f4xx/BUILD.gn
/home/openharmony/device/board/demo/demo_board/BUILD.gn
/home/openharmony/vendor/demo/hello/BUILD.gn
/home/openharmony/device/soc/st/stm32f4xx/sdk/BUILD.gn
/home/openharmony/device/soc/st/stm32f4xx/sdk/Drivers
/home/openharmony/device/soc/st/stm32f4xx/sdk/hals

然后再次编译错误是:

[OHOS ERROR] ../../../device/soc/st/stm32f4xx/sdk/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c:302:10: fatal error: stm32f4xx_hal.h: No such file or directory
[OHOS ERROR]   302 | #include "stm32f4xx_hal.h"
[OHOS ERROR]       |          ^~~~~~~~~~~~~~~~~
[OHOS ERROR] compilation terminated.

这个问题就是BUILD.gn里面没有正确配置include的路径。
打开bsp/BUILD.gn抄一段config():

config("public") {
  defines = [
    "STM32F407xx",
    "STM32F40_41xxx",
  ]
  include_dirs = [
    "include",
    "//device/soc/st/stm32f4xx/sdk/Core/Inc",
    "//device/soc/st/stm32f4xx/sdk/Drivers/STM32F4xx_HAL_Driver/Inc",
    "//device/soc/st/stm32f4xx/sdk/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
    "//foundation/systemabilitymgr/samgr_lite/interfaces/kits/samgr",
  ]
  ldflags = [
    "-Wl,-T" + rebase_path("ld/STM32F407IG_FLASH.ld"),
    "-Wl,-u_printf_float",
  ]
  libs = [
    "c",
    "m",
    "nosys",
  ]
}

这里面有defines预定义2个宏,include_dirs添加头文件路径,
ldflags定义链接脚本路径,libs添加要链接的基本库。


再次编译报错,还要添加/device/demo/demo_board/liteos_m/bsp/include/target_config.h文件。

[OHOS ERROR] ../../../kernel/liteos_m/kernel/include/los_config.h:40:10: fatal error: target_config.h: No such file or directory
[OHOS ERROR]    40 | #include "target_config.h"
[OHOS ERROR]       |          ^~~~~~~~~~~~~~~~~
[OHOS ERROR] compilation terminated.

再次编译报错:bool没定义,这个问题就不是我们的配置问题了,
把源码里的bool改为int,或者在源码内#include <stdbool.h>

[OHOS ERROR] ../../../kernel/liteos_m/components/fs/vfs/vfs_fs.c:214:43: error: unknown type name 'bool'
[OHOS ERROR]   214 | static int VfsPathCheck(const char *path, bool isFile)

再次编译找不到STM32F407IG_FLASH.ld文件,按提示添加这个文件。
最后再次编译通过:

[OHOS INFO] ---------------------------------------------
[OHOS INFO] ccache summary:
[OHOS INFO] cache hit (direct)  : 0
[OHOS INFO] cache hit (preprocessed)  : 0
[OHOS INFO] cache miss  : 0
[OHOS INFO] hit rate:  0.00% 
[OHOS INFO] mis rate: 0.00% 
[OHOS INFO] ---------------------------------------------
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem           files NO.       percentage      builds NO.      percentage      overlap rate
[OHOS INFO] kernel                    48        40.3%         48        40.3%   1.00
[OHOS INFO] securec                   39        32.8%         39        32.8%   1.00
[OHOS INFO] third_party               40        33.6%         40        33.6%   1.00
[OHOS INFO] thirdparty                40        33.6%         40        33.6%   1.00
[OHOS INFO] 
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO] 
[OHOS INFO] 
[OHOS INFO] hello build success
[OHOS INFO] cost time: 0:00:03
root@86cd4274494f:/home/openharmony# 

虽然编译通过,但产生的OHOS_Image.bin还不能运行,明天继续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/358400.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【React教程】(1) React简介、React核心概念、React初始化

目录 ReactReact 介绍React 特点React 的发展历史React 与 Vue 的对比技术层面开发团队社区Native APP 开发 相关资源链接 EcmaScript 6 补充React 核心概念组件化虚拟 DOM 起步初始化及安装依赖Hello World React React 介绍 React 是一个用于构建用户界面的渐进式 JavaScrip…

day33WEB 攻防-通用漏洞文件上传中间件解析漏洞编辑器安全

目录 一&#xff0c;中间件文件解析漏洞-IIS&Apache&Nginx -IIS 6 7 文件名 目录名 -Apache 换行解析 配置不当 1、换行解析-CVE-2017-15715 2、配置不当-.htaccess 配置不当 -Nginx 文件名逻辑 解析漏洞 1、文件名逻辑-CVE-2013-4547 2、解析漏洞-nginx.conf …

LLM漫谈(四)| ChatDOC:超越ChatPDF性能并支持更多功能的阅读聊天工具

在过去的一年里&#xff0c;ChatGPT的兴起催生了许多基于GPT的人工智能工具&#xff0c;其中Chat PDF工具得到了广泛关注。这些工具对知识密集型专业人员来说尤其有价值&#xff0c;大大提高了生产力。随着Chat PDF工具的激增&#xff0c;选择正确的工具变得至关重要。 接下来&…

视频转GIF动图实践, 支持长视频转GIF

背景 找了很多GIF动图制作的工具&#xff0c;比如将视频转成GIF, 或者将一系列图片转成GIF, 增加背景文案等等功能。很多收费或者用的一些三方库有点点卡顿&#xff0c;或者需要安装一个软件&#xff0c;所以就自己做一款纯前端页面级别的 视频转 GIF 动图工具。 最开始找到一…

网站地址怎么改成HTTPS?

现在&#xff0c;所有类型的网站都需要通过 HTTPS 协议进行安全连接&#xff0c;而实现这一目标的唯一方法是使用 SSL 证书。如果您不将 HTTP 转换为 HTTPS&#xff0c;浏览器和应用程序会将您网站的连接标记为不安全。 但用户询问如何将我的网站从 HTTP 更改为 HTTPS。在此页…

米贸搜|如何“有效利用”Facebook动态广告?!

什么是动态广告&#xff1f; 在我们的日常在线购物经验中&#xff0c;我们经常遇到这样的情况&#xff1a;在某宝平台上浏览或搜索一款产品后&#xff0c;不久你就会发现&#xff0c;平台开始向你推荐与你之前浏览过的商品相似的其他商品。这种商品推荐通常非常符合你的口味&a…

用可视化表单设计轻松实现流程化办公!

在现代化职场办公中&#xff0c;低代码技术平台的利用程度越来越高&#xff0c;成为大家实现流程化办公和数字化转型的友好合作伙伴。作为专业的服务商&#xff0c;流辰信息潜心研发低代码技术平台产品及可视化表单设计工具&#xff0c;轻松助力越来越多行业的客户朋友提高办公…

C语言应用实例——贪吃蛇

&#xff08;图片由AI生成&#xff09; 0.贪吃蛇游戏背景 贪吃蛇游戏&#xff0c;最早可以追溯到1976年的“Blockade”游戏&#xff0c;是电子游戏历史上的一个经典。在这款游戏中&#xff0c;玩家操作一个不断增长的蛇&#xff0c;目标是吃掉出现在屏幕上的食物&#xff0c…

多线程事务如何回滚?

背景介绍 1&#xff0c;最近有一个大数据量插入的操作入库的业务场景&#xff0c;需要先做一些其他修改操作&#xff0c;然后在执行插入操作&#xff0c;由于插入数据可能会很多&#xff0c;用到多线程去拆分数据并行处理来提高响应时间&#xff0c;如果有一个线程执行失败&am…

Seata部署

1、下载seata wget https://github.com/apache/incubator-seata/releases/download/v1.4.2/seata-server-1.4.2.zip 2、执行服务端SQL -- -------------------------------- The script used when storeMode is db -------------------------------- -- the table to store Gl…

12306 真的很拉跨吗?春运是对它最大的误解!

春节降至&#xff0c;大家都抢到火车票了吗&#xff1f;马上就要迎来春节&#xff0c;是不是都在吐槽 12306 的种种不好&#xff0c;它真的有这么拉跨吗&#xff1f; 其实不然&#xff0c;每到各种节假日&#xff0c;都是对 12306 最大的误解&#xff01; 特别是春运&#xf…

多个微信号难管理?

很多客户都遇到了这几个问题&#xff1a; 1、公司分配给员工有很多个微信账号&#xff0c;但是管理起来很难&#xff1f; 2、多个微信号要不来回切换登录&#xff0c;要不需要挂在多台手机了&#xff1f; 3、每个号每天都需要发朋友圈&#xff0c;工作量大&#xff1f;有时还…

GP232RL国产USB串口如何兼容FT232RL开发资料

GP232RL是最新加入 ftdi 系列 usb 接口集成电路设备的设备。 232r是一个 usb 到串行 uart 接口&#xff0c;带有可选的时钟发生器输出&#xff0c;以及新的 ftdichip-idTM 安全加密器特性。此外&#xff0c;还提供了异步和同步位崩接口模式。 通过将外部 eeprom、时钟电路和 …

Java API 操作 HDFS

Java API 操作HDFS一般有两种方式&#xff1a; 使用HDFS客户端配置文件自动配置 Java 代码中配置 一 使用HDFS客户端配置 1.1 下载HDFS客户端配置 1.2 创建Maven项目 创建Maven项目&#xff0c;将下载的客户端配置文件 core-site.xml、hdfs-site.xml 放入resources目录下&…

用AI工具一键生成原创文案的方法

一键生成原创文案对于文案工作者来说它是一种高效率创作文案内容的方法。文案工作者知道创作文案是一件消耗精力和时间的事情&#xff0c;遇到没有创作灵感&#xff0c;想要写一篇高质量的文案内容简直难上加难&#xff0c;因此&#xff0c;互联网上出现了一键生成原创文案的方…

冷知识:COS上传文件时可以同步获取文件信息

背景介绍 本文将介绍如何在上传文件到 COS 时同步获取文件信息&#xff0c;如图片的宽高、格式等。 目前&#xff0c;可以通过 COS 上传接口&#xff0c;如 PUT Object、CompleteMultipartUploads 等将文件存储至 COS 存储桶中&#xff0c;我们针对以下三种场景提供上传时同步…

HubSpot社交媒体影响力怎么样?

HubSpot是一家在数字营销和销售领域非常知名的公司&#xff0c;以其全面的营销、销售和客户服务软件而闻名。然而&#xff0c;关于HubSpot在社交媒体上的具体影响力&#xff0c;这是一个动态的情况&#xff0c;因为社交媒体的影响力可能受到多种因素的影响&#xff0c;包括社交…

如何处理QT 代码复制到新机器无法正确打开和编译?

例如你在文件夹 d:\projects 下创建的项目名称为 hello&#xff0c;这时会在 d:\projects 下创建两个文件夹 d:\projects\hello 和 d:\projects\build-hello-Desktop_Qt_6_6_1_MinGW_64_bit-Debug。其中&#xff0c;第二个文件夹保存了编译器等工具软件的路径设置。 第二个文件…

ubuntu 22安装配置并好安全加固后,普通用户一直登录不上

现象 ubuntu 22安装配置并好安全加固后&#xff0c;普通用户一直登录不上 排查报错 查看日志/var/log/auth.log发现报错 Jan 30 15:49:57 aiv-O-E-M sshd[62570]: PAM unable to dlopen(pam_tally2.so): /lib/security/pam_tally2.so: cannot open shared object file: No …

C语言 | 求最大/小值小技巧:fmax、fmin函数

如果你只是因为不想用C语言手写max、min函数&#xff0c;就直接去用iostream中的max、min函数的话&#xff0c;这篇文章可能会有些许帮助。 &#x1f607; fmax、fmin函数用于确定两个指定值的较大/较小值。 头文件 math.h&#xff08;或者cmath&#xff09;。 定义 double …