# hardware_driver **Repository Path**: ebaina_CN/hardware_driver ## Basic Information - **Project Name**: hardware_driver - **Description**: HiEulerPi开发板硬件驱动相关软件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-01-07 - **Last Updated**: 2024-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hardware_driver #### 介绍 HiEulerPi开发板硬件驱动相关软件 1. 目录结构 ``` ├─linux ├─linux_patch ----openEuler内核补丁归档路径,补丁命令规则: tag.patch(示例:5.10.0-153.28.0.patch ),其中tag必须是https://gitee.com/openeuler/kernel/tags中能下载的tag标签,补丁代表当前能兼容的tag号,如发现可兼容更高版本,可以进行刷新,注意更新时候,请同步更新build中yocto引用的补丁名。 └─5.10.0-153.28.0.patch ├─build ----构建脚本归档路径,用于打入yocto-meta-openeuler仓库以支持本项目构建,命名格式为yocto-meta-openeuler对应适配的分支-commit号 ├─openEuler-23.09-3ba020ca6f.patch ├─firmware ---- 启动依赖固件归档路径 ├─trusted-firmware-a-2.2.tar.gz ----Trusted Firmware归档 ├─trusted-firmware-a-2.2.patch ----根据soc差异追加的patch归档 ├─drivers ---- soc驱动集合归档路径 ├─sd3403.tar.gz ----包括ko及用户工具,如npu驱动、ai库等 ``` #### 使用方法 ##### 1. 环境准备 - (1)准备oebuild环境,首次初始化好仓库和代码,参见: ``` https://openeuler.gitee.io/yocto-meta-openeuler/master/getting_started/index.html 参考步骤: 1. 安装必要的主机包 2. 初始化oebuild构建环境 ``` 然后准备openEuler Embedded的基本代码环境,以最新支持的2309版本初始化为例: ``` oebuild init build_3403 -b openEuler-23.09 cd xxx/build_3403 oebuild update ```[Title](../../..) PS:建议先熟悉一遍openEuler整体的构建,然后再进行下一步。 - (2)进入src目录,git clone本项目库代码: ``` cd build_3403/src/ git clone git@gitee.com:hipirobot/3rdparty_openeuler.git ``` 进入oebuild初始化好的src对应yocto-meta-openeuler仓库 ``` cd build_3403/src/yocto-meta-openeuler ``` 打入如下补丁(3rdparty_openeuler/build/openEuler-[分支]-[commit号].patch),建议使用对应分支最新的commit,若打入失败再reset切换到补丁适配分支: ``` patch -p1 < 3rdparty_openeuler/build/openEuler-[分支]-[commit号].patch ``` - (3)进入src/yocto-meta-openeuler目录,将内核基线配置为本项目支持的内核基线: 编辑 .oebuild/manifest.yaml ``` kernel-5.10: remote_url: https://gitee.com/openeuler/kernel.git version: b88a0de017d1685cc7e2c623d6ccccde546d8405 ``` 如上内容,将kernel-5.10的version字段的值,修改为当前内核补丁支持的基线commit号 ``` b88a0de017d1685cc7e2c623d6ccccde546d8405 开发者注意:后续如果开发需更换基线,请及时更新此文档说明。 ``` 至此,源码环境准备完成! ##### 2. 编译镜像 - (1)回到build_3403目录,执行如下命令进行编译: ``` oebuild generate -p sd3403 -f openeuler-ros 按提示进入构建目录,执行如下命令进入bitbake环境 oebuild bitbake 随后正常构建镜像 bitbake openeuler-image-ros 构建开发工具链 bitbake openeuler-image-ros -c populate_sdk ``` - (2)之后 output 目录的对应时间搓目录会构建生成以下文件: ``` $ tree . ├── Image -> Image-5.10.0 ├── Image-5.10.0 ├── kernel ├── openeuler-image-ros-sd3403-20231102014821.rootfs.ext4 ├── uImage-5.10.0 └── vmlinux-5.10.0 ``` ``` 工具链 openeuler-glibc-x86_64-openeuler-image-ros-aarch64-sd3403-toolchain-23.09.sh ``` ##### 3. 启动和部署 sd3403启动需要替换sd卡中的 kernel 和 rootfs.ext40 将 openeuler-image-sd3403-20230519040336.rootfs.ext4 重命名为rootfs.ext40 config文件示例: ``` setenv bootargs 'mem=2048M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p3 rootfstype=ext4 blkdevparts=mmcblk0:1M(u-boot.bin),15M(kernel),2048M(rootfs.ext40)';sa setenv bootcmd 'mmc read 0 0x42000000 0x800 0x7800; bootm 0x42000000';sa ``` 注:u-boot.bin为原SD卡已存在内容,不需要替换,本项目firmware及drivers,均取自3rdparty_platform。