27 Star 91 Fork 269

openEuler/yocto-meta-openeuler

雪球计划-里程

已完成
自定义 成员
创建于  
2024-02-01 11:02

背景

旨在对南向BSP的覆盖活动,目的是扩大openEuler对南向bsp的支持范围,“雪球计划”,寓意openEuler将一步步强大,最终成为国内乃至国际顶流嵌入式操作系统

南向BSP的支持主要以SoC单位,例如NXP的I.MX系列, TI的AMX系列等等,每个系列会选择一款代表性的开发板进行验证。
后续基于同系列SoC的开发板都可以基于样板BSP进行支持。

已有的Yocto BSP参考

南向硬件参考

感谢如下公司、组织在硬件上提供的支持和赞助:

ARM开发板

移植进度标准

资料学习(10%) 移植流程(80%) 代码提交(90%) 文档完善(100%)
了解机器(学习硬件特性和功能、源码获取、构建烧录与功能测试的方法) 内核移植(替换欧拉内核) 上游代码提交(上游相关吃那个的创建等,找李新宇) 文档提交(包括构建的镜像截图,烧录截图,运行时截图,启动后的屏显log)
机器验证(板载镜像构建、烧录、启动成功并进行简单功能测试) meta层的适配 欧拉源码提交(yocto-meta-openeuler仓的提交)
开发板整体镜像制作

登记表

SOC型号 soc厂商 bsp型号 赞助商 gitee id 进度 备注
T113-S3 全志 MYD-YT113S3-4E128D-110-I-G 米尔科技 wangwei@cdjrlc.com 0% 2024/02/20:开发板寄出
T113-i 全志 MYD-YT113i-4E256D-110-I 米尔科技 wangwei@cdjrlc.com 0% 2024/02/20:开发板寄出
T527 全志 MYD-LT527M-16E2D-180-E 米尔科技 wangwei@cdjrlc.com 0% 2024/02/20:开发板寄出
RZ/G2L 瑞萨 MYD-YG2L23-8E1D-120-C-REMI 米尔科技 alichinese 15% 2024/03/09:内核移植阶段
2024/02/20:开发板寄出
i.MX 6ULL NXP MYD-Y6ULY2-V2-4E512D-50-I 米尔科技 darrenpig 0% 2024/02/20:开发板寄出
i.MX 8M Plus NXP MYD-JX8MPQ-8E2D-160-I 米尔科技 puai 10% 2024/03/09:机器验证阶段
2024/02/20:开发板寄出
STM32MP135 ST MYD-YF135-4E512D-100-I 米尔科技 bigclouds99 0% 2024/02/20:开发板寄出
AM62x TI MYD-YM6254-8E2D-140-I 米尔科技 emancipator 10% 2024/03/09:机器验证阶段
2024/02/20:开发板寄出

BSP开发步骤参考如下:

  1. 开发板资料学习,了解机器特性,以及使用,测试,烧录方法,
    验收标准:开发板特性、开发烧录、测试文档
  2. 使用开发板资料的SDK进行构建,做烧录测试,了解其目录结构,所使用的工具,代码、固件存放位置等,厂商linux kernel如果能选择,尽量使
    用内核为5.x版本作为参照对象,
    验收标准:开发板特性对应的代码目录结构解析
  3. 内核移植:下载openeuler-kernel源码,从社区节点embedded-openeuler中进行提取版本号,并下载
    例如从master开发,查看https://gitee.com/openeuler/yocto-meta-openeuler/blob/master/.oebuild/manifest.yaml中kernel的tag并下载
    代码如下:
    kernel-5.10:
    remote_url: https://gitee.com/openeuler/kernel.git
    version: 673b97e8053120a4b56fe5b5d5748dcef68a3f50
    a. 下载源码到本地:

​ git clone https://gitee.com/openeuler/kernel.git openeuler-kernel -b openEuler-22.03-LTS-SP2

​ cd openeuler-kernel

​ git checkout 673b97e8053120a4b56fe5b5d5748dcef68a3f50

​ 下一步就是驱动移植及验证
​ b. 从设备树查看外设驱动是否存在设备树中对应节点有compitible属性,在driver里面查找对应的驱动,如果则尝试编译其deconfig,如果没有的话就从厂商提供

的SDK中移植到openeuler-kernel,并完成驱动debug

验收标准:移植完成的内核推送到对应的PR上,并完善文档,外设支持的内容。以及通过的验证方法。

  1. 内核移植验证完成后制作yocto-meta-openeuler的BSP层
    a. 引入上游的BSP层以及软件层
    i. 初始化环境:
  1. oebuild init <init_dir> -u <your_own_repo_url>
  2. oebuild update

如果上游有BSP层:

ii. 复制一份.oebuild/platform/里面的板平台为这次需要的machine,并修改内容为上游层的repo_url以及layer。
iii. 制作完以上文件即可使用oebuild generate -p ,并按指示进入容器
iv. 制作openeuler的适配的附加层:

  1. 参考bsp/meta-openeuler-bsp/raspberrypi,在同级目录下新建一个目录vender名字的目录
  2. 在上述目录下增加三个基础核心配方集
    a) recipes-bsp:存放基础的配方以及固件如uboot/grub/bootfiles等
    b) recipes-core:主要存放images/packagegroups/systemd等系统核心部分
    c) recipes-kernel:主要存放linux等欧拉内核相关配方
  3. 在bsp/meta-openeuler-bsp/conf/layer.conf中参考raspberrypi与rockchip内容,增加自己的附加层
    v. 在bsp下制作BSP层,也可以直接复制meta-hisilicon,并修改成自己要样子。也可以参考yocto文档从bitbake构建bsp层
    https://docs.yoctoproject.org/bsp-guide/bsp.html#creating-a-new-bsp-layer-using-the-bitbake-layers-script
    vi. 参考上游通soc的机器配置,加入附加的机器配置
  4. 建立该机器配方:
    a) 如果上游有BSP层:参考上游同soc架构的.conf,在include内新建一个名为openeuler-
    .conf并做通用的欧拉相关的定制修改。制作自己的.conf,引用通用的openeuler-
    .conf,并定义自己所需要的配置
    b) 如果上游没有BSP层:参考其他机器的machine.conf,制作一份.conf
  5. .conf一般有
    a) KBUILD_DEFCONFIG内核的defconfig,也可以不定义,定义了就会用内核仓库内的xxxx_defconfig
    b) SERIAL_CONSOLES定义串行口,波特率等
    c) KERNEL_DTB_NAME定义设备树名
    vii. 修改内核相关的配方,参考bsp/meta-openeuler-bsp/rockchip/recipes-kernel/linux/ 做实现
    viii. kernel仓库在.oebuild/manifest里加上相应仓库地址(测试时可用自己的私仓,在推送PR的时候尽量使用公仓)
    ix. 验证并DEBUG内核linux-openeuler,烧录并验证
  6. bitbake linux-openeuler
    x. 制作文件系统
    参考bsp/meta-openeuler-bsp/rockchip/recipes-core/images,在自己层的recipes-core/images下创建.inc,定义
    分区 yocto 的第 1 页
  7. 参考bsp/meta-openeuler-bsp/rockchip/recipes-core/images,在自己层的recipes-core/images下创建.inc,定义
    IMAGE_FSTYPES等(如果machine.conf里面有了也可以不用定义),如果需要把输出挪到output下也可以参考实现
  8. 验证并DEBUG文件系统bitbake openeuler-image,烧录并验证
    xi. 过程中遇到问题可用btibake -e 查看执行环境,对照tmp/work////temp内的log对应
    相关BUG进行过程验证。
    b. 推动相关固件/优化代码欧拉建仓
    i. 验证文件系统以及驱动固件及其功能后,可推动欧拉建立相关仓库进行存储
    验收标准:移植完成的ycoto代码推送到对应的PR上,并完善文档,功能支持的内容。以及通过的验证方法。

评论 (4)

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
alichinese-alichinese_admin
1
https://gitee.com/openeuler/yocto-meta-openeuler.git
git@gitee.com:openeuler/yocto-meta-openeuler.git
openeuler
yocto-meta-openeuler
yocto-meta-openeuler

搜索帮助