yocto工程升级要点

news/2025/10/20 13:10:31/文章来源:https://www.cnblogs.com/ma-yangbiao/p/19149251

需求
原有的工程是多年前基于yocto sumo开发,对应的linux kernel版本是4.14。 需求是要求linux kernel升级到5.10。

背景
工程由以下几部分组成,

  1. yocto sumo构建部分的代码,包括poky,bitbake等
  2. 目标平台支持多款第三方处理器,包括imx6和imx8,以及intel某款cpu,所以有meta-freescale和meta-intel等
  3. 我们自己的linux kernel代码,当初是基于yocto sumo 的linux kernel4.14写的,主要是几个驱动代码,还有少-部分自己维护的补丁
  4. 我们自己的业务代码,这部分业务代码又分成好几个模块,这里不细述。

调查评估
表面需求是升级linux kernel,我们需要调查:

  1. 我们当前的驱动代码可能会有问题,包括新的kernel代码可能删除了某些函数导致我们驱动编译失败,另外需要调查我们的补丁是否还适用,是否需要修改
  2. 为保证对应用户态基础服务能够与新kernel正常工作,对应的glibc等也需要相应升级,对应的交叉编译工具链也需要升级
  3. 我们的业务代码,由于kerne和#2变化,也需要相应修改以适配新的kernel,glibc和编译链
  4. 该需求目标平台是基于intel某款cpu的,时间关系我们可以暂时不用关心meta-freescale,重点关注meta-intel layer的升级
    所以实际需求是升级整个yocto工程,调查发现yocto hardknott默认linux kernel版本是5.10, 所以需要更新我们的驱动代码,补丁和业务代码,随之带来的是需要更新recipes以适应yocto hardknott升级,基于sumo的脚本与配置也需要修改

实现

  • 把poky,meta-openembedded,meta-intel升级到hardknott,meta-freescale暂先删除

  • 编译打包过程中需要新的宿主机工具,在local.conf & local.conf.sample中加入HOST_TOOLS

  • layer.conf中有依赖sumo的特定部分,需要改成hardknott

  • hardknott默认python版本已经转变为python3了,对应的get_bblayers.py, set_bb_env.sh等如果还期望继续按python2执行需要把python关键字改为python2

  • bitbake-layers add-layer 指定的layers

  • build/conf/templateconf.cfg 内容需要指定为本工程的poky/meta-qti-eap/conf

  • linux kernel upstream代码如果还没有包含我们之前的补丁那就需要重新生成新补丁并打上

  • linux driver部分,主要有一些函数新的kernel代码已经删除,或者参数返回值类型有变化,相应的需要调整代码,比如

    • Kconfig 文件语法与新kernel不兼容,需要改
    • struct timespec 被删掉了, 需要改为timespec64, 替换 ktime_get_ts() 为 ktime_get_ts64(), time_sub →time64_sub, getnstimeofday() → ktime_get_real_ts64(),类似的还有
    • SIOCGSTAMP, ioremap_nocache(),stubssock_no_setsockopt,sock_no_getsockopt ,setup_timer(),init_timer() ,kernel_setsockopt() cancel_work(), kernel_sock_ioctl() 不再支持,需要找到相应的替代者
    • wakeup_source_register() ,kernel_getsockname(), send_sig_info(siginfo_t sig, ...) 原型变化,需要相应改动代码
  • 用户空间代码改动也较多,简单举几个例子

    • 不再能在头文件里定义变量,不然新的gcc会报错,需要把原先头文件里定义的变量挪到对应的.c里,如果多处.c使用该变量则用extern 关键字声明。
    • nanopb 版本升级,对应的需要重新生成.pb.c, .pb.h
    • recipe里例子比如python-protobuf 需改为python3-protobuf

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

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

相关文章

微信机器人开发API!3步搞定微信聊天机器人

微信机器人开发API!3步搞定微信聊天机器人 WTAPI框架是一个能将个人微信各项功能提取成可供开发人员调用的一套私有API接口,比如微信的收发消息,发朋友圈,群聊,建群等等都是可以用API接口来做的。你可以用 微信机…

详细介绍:【Linux】Linux管道与进程池深度解析:从原理到实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

windows2019的域控服务器更新时间.251020

1 先找到合适的源 w32tm /stripchart /computer:ntp.aliyun.com #若是可以使用会显示如下图2 注册表配置确****保NTP客户端已启用:确认以下注册表路径的 E nabled 值为 1: HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo…

国内DOH解析速度测试(阿里 腾讯 360 Doh测速)

阿里 腾讯 360 Doh测速以前一直用阿里DOH,上个月开始明显感觉网页打开速度异常慢,怀疑是阿里DOH限速,验证过程如下: 测试工具:Python3.14 aiohttp matplotlib numpy dnspython 库 地理位置:阳江(距离省会偏远的落后城市…

WatchAlert 轻量级AI日志告警 - Docker安装部署

💎 WatchAlert 是什么? 🎯 专注可观测性与稳定性,为运维提效降本 WatchAlert 是一款专为云原生环境设计 的轻量级监控告警引擎,聚焦于可观测性(Metrics、Logs、Traces)与系统稳定性保障,提供从采集、分析到告…

2022ICPC区域赛济南站

补题链接QOJ:The 2022 ICPC Asia Jinan Regional Contest - Dashboard - Contest - QOJ.ac K. Stack Sort 思路:考虑 a 需要比 a+1 先出栈,所以如果读到 a,发现 a+1 还没被记录则需要多建一个栈。 void solve() {i…

java代码和c++代码相互调用的技术方案

java代码和c++代码相互调用的技术方案通过JNI桥接方式

详细介绍:MyBatis动态sql

详细介绍:MyBatis动态sql2025-10-20 12:41 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

计算机毕业设计PySpark+Hadoop+Hive+LSTM模型美团大众点评分析+评分预测 美食推荐环境(源码+论文+PPT+讲解视频)

计算机毕业设计PySpark+Hadoop+Hive+LSTM模型美团大众点评分析+评分预测 美食推荐环境(源码+论文+PPT+讲解视频)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

对话智能体泛化研究在线挑战启动

某中心推出DialoGLUE对话AI挑战赛,旨在推动任务型对话系统泛化能力研究。该挑战提供标准化数据集和基准模型,涵盖意图识别、槽位填充等四大任务,支持全数据与少样本两种评估模式。某中心启动在线挑战赛推动对话智能…

2025.10.20

t1 Baekjoon 21527 给定 \(n\times n\) 矩阵 \(a\),对于 \((i,j)\) 求 \((1,1)\) 到 \((n,n)\) 最短路径上与 \(a_{i,j}\) 相同数的个数的最大值。 唐氏症题。 每种 \(a\) 单独提出来,\(f_{i,j}\) 为 \((i,j)\) 的答…

Unable to register MBean [SftpPool

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [SftpPool [maxTotal=8, blockWhenExhausted=true, maxWaitMillis=-1, lifo=true, fairness=false, testOnCreate=false, …

利用Python写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

def lens5():while True:msg = input(请选择你想输入的数字类型,输入对应序号即可>>>1.字符串 2.列表 3.元组:)if msg.isdecimal():if int(msg) == 1:s = input(请开始的你的字符串输入:)print(len(s) > 5…

请求

请求HTTP请求方法中GET和POST的主要区别。 (1)参数位置:GET 请求的参数附加在 URL 后面,POST 请求的参数包含在请求体中。 (2)长度限制:GET 请求受 URL 长度限制,POST 请求没有明确的长度限制。 (3)安全性:…

sp681网卡打驱动后的状态--默认是链路是down

[root@localhost home]# ll总用量 1240-rw-r--r-- 1 root root 119260 10月 20 12:21 NIC-Hi1822-KylinV10SP3-2403-hinic3-17.7.7.1-aarch64.rpm-rw-r--r-- 1 root root 952296 10月 20 12:21 NIC-Hi1822-KylinV10SP3…

麒麟和win10双系统出现时间差异的问题

麒麟和win10双系统出现时间差异的问题win10安装openkylin双系统,进麒麟系统后再进win10,时间会出现8小时的误差,最简单的解决办法是在麒麟系统执行如下命令就可以了sudo timedatectl set-local-rtc 1

dlc — Docker Log Cleaner(支持名称、ID前缀、交互序号清理,模糊匹配交互确认)

一键安装脚本:curl -L -o /usr/local/bin/dlc https://files-cdn.cnblogs.com/files/nihaorz/dlc.sh && chmod +x /usr/local/bin/dlc#!/bin/bash stty erase ^H 2>/dev/null # dlc — Docker Log Cleaner…

软件研发项目管理提效方案|流程驱动 数据赋能:打造上下游信息透明的研发项目管理新模式

在软件研发中,流程不清、协作割裂往往是效率的最大障碍。本文探讨了一种全新的产研管理模式:以流程为核心驱动跨部门协作,通过数字化平台打通产品、研发、测试与运维,实现从需求到交付的全流程可视化与高效协同。行…

第二周记

第二周 前言: 10.20 今天体测跑了一公里,拿下了三分三十的成绩,有时感觉自己当时走体育会不会比现在混得好() 学习笔记: 一些杂项 很久以前就想写一下这个快速平方根取倒数算法了,这个好像还很有历史“渊源”来…

【分享】一篇文章让你学通JFinal的各种参数解析方式

【分享】一篇文章让你学通JFinal的各种参数解析方式JFinal新版本已经支持直接解析contentType=application/json请求的rawdata数据了。 默认功能是关闭的。JFinal新版本已经支持直接解析contentType=application/json请…