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还不能运行,明天继续。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcgis 如何将线路转为路面

在出外业的时候&#xff0c;用手机软件测出来的路&#xff08;线要素&#xff09;&#xff0c;需要转换成路面。具体操作如下&#xff1a; 1.打开线图层 2.菜单-地理处理-缓冲区 在缓冲区中&#xff0c;输入要转换的线要素&#xff0c;在线性单位下方填写要转换的面的宽度&am…

《Numpy 简易速速上手小册》第10章:Numpy案例研究和实践技巧(2024 最新版)

文章目录 10.1 实际案例分析10.1.1 基础知识10.1.2 完整案例&#xff1a;天气数据分析10.1.3 拓展案例 1&#xff1a;股票价格分析10.1.4 拓展案例 2&#xff1a;信号处理 10.2 Numpy 最佳实践10.2.1 基础知识10.2.2 完整案例&#xff1a;高效数组操作10.2.3 拓展案例 1&#x…

vue-cli初始化项目很慢?

第一种情况 大部分是由于npm的镜像源不是淘宝的 cmd输入npm config get registry查看是不是淘宝的&#xff0c;是的话看第二种情况试试不是的话输入npm config set registry https://registry.npm.taobao.org 第二种情况 vue-cli配置文件不是使用淘宝镜像源的 找到文件.vue…

已实现:vue、h5项目如何使用echarts实现雷达图、六边形图表

说实话&#xff0c;要说图表里&#xff0c;最强的应该属于echarts了&#xff0c;不管是接入难度上&#xff0c;还是样式多样性上&#xff0c;还有社区庞大程度上&#xff0c;都是首屈一指的&#xff0c;反观有的人习惯用chart.js了&#xff0c;这个无可厚非&#xff0c;但是如果…

微信小程序如何实现实时显示输入内容

如下所示&#xff0c;在许多场景中需要实时显示用户输入&#xff0c;具体实现见下文。 .wxml <input type"text" placeholder"请输入{{item.value}}(必填)" style"width:80%;" bindinput"get_required_value" data-info"{{it…

科技云报道:新趋势下,国产数据库或“春山可望”

科技云报道原创。 从540亿元到1286亿元——这是中国通信标准化协会大数据技术标准推进委员会针对中国数据库行业给出的一份预测报告。 报告指出&#xff0c;未来五年&#xff0c;中国数据库行业将从百亿级市场跨越成为千亿级市场。 最近两年&#xff0c;中国的数据库行业似乎…

Ubuntu 22.04 中文乱码解决方案

sudo apkg-reconfigure locales 按空格键选中

Jenkins自动化打包

Jenkins自动化打包 下载安装 我们直接从官网https://www.jenkins.io/download/ 下载所需的Jenkins文件 如上图所示, 选择Windows版本,下面就是一路安装即可,需要注意的是,选择作为系统服务选项, 不要自己设置账号密码登录. Web配置 安装完根据提示在浏览器打开 http://lo…

iZotope RX 10.4.2 mac激活版 音频修复和增强工具

iZotope RX 10 for Mac是一款专业的音频修复软件&#xff0c;旨在提供强大、精确的工具&#xff0c;让用户能够清晰、纯净地处理音频。以下是其主要功能和特点&#xff1a; 软件下载&#xff1a;iZotope RX 10.4.2 mac激活版下载 强大的降噪功能&#xff1a;iZotope RX 10采用了…

动态住宅IP可以用来注册亚马逊电商吗?

注册亚马逊店铺可以用动态IP&#xff0c;只要是独立且干净的网线就没问题&#xff0c;亚马逊规则要求一个IP地址只能出现一个亚马逊店铺&#xff0c;若使用不当会导致关联账户。所以现在非常多人使用指纹浏览器搭配代理IP 固定ip可以给我们的账户带来更多的安全&#xff0c;要知…

输电线路导线舞动在线监测装置:“舞动”不再!守护电网安全!

输电线路导线舞动会影响输电线路的运行安全&#xff0c;其影响因素主要包括以下几个方面&#xff1a; 1、风力影响&#xff1a;风力是导致输电线路导线舞动的主要原因之一。在风的激励下&#xff0c;会对导线施加较大的侧向压力&#xff0c;导线会随风摆动&#xff0c;发生扭转…

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…

Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer

刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解&#xff0c;在这里就给大家一一讲解&#xff0c;重点关注端点、跨度类型和Peer 服务 :服务的名称 实例&#xff1a;服务对应的实例 端点&#xff1a;端点(Endpoint) 对于特定服务所接收的请求路径, 如…

Word莫名其妙开启兼容模式将其永久取消的方法

这是因为Word模板文件被意外更改了 找到Word模板文件&#xff0c;目录在C:\Users\15976\AppData\Roaming\Microsoft\Templates 15976替换成你自己的用户名&#xff0c;不确定的就先点进C/Users看一看&#xff0c; AppData是隐藏文件夹&#xff0c;显示隐藏文件夹才能看见&am…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天&#xff0c;点餐APP已经成为人们日常生活的重要组成部分&#xff0c;从校园食堂到高级餐厅&#xff0c;从快餐外卖到定制化营养餐&#xff0c;点餐APP的多样性和便利性满足了不同用户的需求&#xff0c;本文将深入探讨在开发一款点餐APP时可能用到的源代…

Vim实战:使用 Vim实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

企业级大模型的护城河:RAG + 微调

围绕LLM的炒作是前所未有的&#xff0c;但这是有道理的&#xff0c;生成式 AI 有潜力改变我们所知道的社会。 在很多方面&#xff0c;LLM将使数据工程师变得更有价值——这令人兴奋&#xff01; 不过&#xff0c;向老板展示数据发现工具或文本到 SQL 生成器的炫酷演示是一回事…

CTF-WEB的知识体系

CTF概念 CTF是Capture The Flag的缩写&#xff0c;中文一般译作夺旗赛 CTF起源于1996年DEFCON全球黑客大会 DEFCONCTF是全球技术水平和影响力最高的CTF竞赛 竞赛模式 解题模式:解决网络安全技术挑战(即找到flag)&#xff0c;提交后获取相应分值。 攻防赛模式:要求找到其他队…

故障诊断 | 一文解决,CNN卷积神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,CNN卷积神经网络故障诊断(Matlab) 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

TWS耳机产品有哪些芯片?这就告诉你

随着时代发展&#xff0c;越来越多消费者开始追捧TWS耳机&#xff0c;相比其他耳机&#xff0c;TWS耳机轻便易带&#xff0c;小巧精密。为了满足TWS耳机这些特点&#xff0c;需要配备多种核心芯片&#xff0c;那么你知道有哪些芯片吗&#xff1f; 1、主控芯片主控芯片是TWS耳机…