当前位置: 首页 > news >正文

yocto工程升级要点

需求
原有的工程是多年前基于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.hskmm.com/?act=detail&tid=34953

相关文章:

  • windows2019的域控服务器更新时间.251020
  • 国内DOH解析速度测试(阿里 腾讯 360 Doh测速)
  • WatchAlert 轻量级AI日志告警 - Docker安装部署
  • 对话智能体泛化研究在线挑战启动
  • 2025.10.20
  • 利用Python写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
  • sp681网卡打驱动后的状态--默认是链路是down
  • dlc — Docker Log Cleaner(支持名称、ID前缀、交互序号清理,模糊匹配交互确认)
  • 软件研发项目管理提效方案|流程驱动 数据赋能:打造上下游信息透明的研发项目管理新模式
  • 2025年10月深度seek排名优化服务排行榜:十大服务商综合对比与选择指南
  • NetSuite-WMS瀚钰通仓库对接使用说明
  • 2025年10月deepseek排名优化服务推荐排行榜:十家服务商综合评测与选择指南
  • 案例分析:MySQL 并行复制竟然比单线程慢?
  • 第二周记
  • 克服keepalived的主备服务器都持有VIP——出现脑裂现象
  • 2025年10月深度关键词排名优化服务推荐排行榜:十大服务商综合对比与评测分析
  • Codeforces Round 1060 (Div. 2) A - C2
  • 2025年10月DeepSeek关键词排名优化服务排行榜深度评测与对比分析
  • 2025 年铁芯源头厂家最新推荐排行榜:精准工艺 + 全场景适配实力甄选,年销 400 万只 + 优质企业权威盘点环形铁芯/互感器铁芯厂家推荐
  • MATLAB实现DLT645协议
  • Maui 实践:让 JavaScript 的 this 怪物如同邻居家(强类型)的乖孩子
  • 钥匙
  • 2025深大电协软件部招新个人题解(部分)
  • [251020 699mAh] 模拟赛破防有感 2.0
  • 2025 年速冻机源头厂家最新推荐榜单:涵盖隧道式、大型、全自动、螺旋、箱式柜式小型等多类型设备,助力食品加工企业选优质供应商
  • 2025 年最新钙片厂家推荐榜单:聚焦四期临床实证与蓝帽认证,为中老年骨健康精选优质品牌指南
  • 2025 年冷却塔源头厂家最新推荐排行榜:无风机无填料节能型设备领衔,优质品牌深度解析
  • 2025年10月超声波清洗机厂家推荐榜:十强对比评测与选购全攻略。
  • 2025年10月超声波清洗机厂家推荐榜:十强对比评测与选购指南。
  • 人狗大战:面向对象关系详解