Zephyr RTOS 在 Khadas Edge-V(RK3399)上的移植与启动指南
Zephyr RTOS 在 Khadas Edge-VRK3399上的移植与启动指南【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr本篇指南以 Zephyr 仓库中 Khadas Edge-V 板级支持文档 为核心系统讲解在 Khadas Edge-V 单板计算机基于 Rockchip RK3399 SoC、ARM64 架构上构建、打包并启动 Zephyr 应用以hello_world为例的完整流程。读完本文你将掌握该板的硬件资源与串口布局、Non-SMP 模式下的构建配置以及通过 U-Boot 将 Zephyr 镜像加载到 DDR 并引导运行的具体命令。板卡概览Khadas Edge-V 与 RK3399Khadas Edge-V 是 Khadas 推出的一款单板计算机SBC属于 Edge 系列中的 VVim 风格变体。其完整硬件资料可参阅 Khadas 官方文档Edge-V 产品页与 Edge 1 硬件文档本文不展开转载外部内容。从 board.yml 可以看到 Zephyr 对该板的官方定义board: name: khadas_edgev full_name: Edge-V vendor: khadas socs: - name: rk3399而 khadas_edgev.yaml 则明确了该板在 Zephyr 构建系统中的关键属性identifier: khadas_edgev name: Khadas Edge-V (single core, non SMP) type: mcu arch: arm64 toolchain: - zephyr - cross-compile ram: 8192 vendor: khadas几个关键点架构与工具链板级标识为khadas_edgev架构为arm64同时支持 Zephyr SDK 自带工具链zephyr与通用交叉编译工具链cross-compile内存资源ram: 8192表示板卡具备 8 GB DDR 内存Zephyr 镜像正是被加载进这段 DDR 中运行的单核模式板名中明确标注 single core, non SMP——本板移植当前仅启用 RK3399 的单个 Cortex-A72 核心不启用 SMP 多核调度。SoC 与板级代码的关联Kconfig.khadas_edgev 通过一行select SOC_RK3399将板卡与 Rockchip 的 RK3399 SoC 绑定。该符号在 soc/rockchip/rk3399/Kconfig.soc 中逐级展开config SOC_RK3399 bool select SOC_SERIES_RK3399 config SOC_SERIES_RK3399 bool select SOC_FAMILY_ROCKCHIP config SOC default rk3399 if SOC_RK3399 config SOC_SERIES default rk3399 if SOC_SERIES_RK3399由此形成BOARD_KHASAD_EDGEV → SOC_RK3399 → SOC_SERIES_RK3399 → SOC_FAMILY_ROCKCHIP的完整 Kconfig 依赖链构建系统据此自动选择 RK3399 的 SoC 移植代码、设备树与链接脚本。硬件特性与串口控制台Supported Features该板的支持特性由文档中的zephyr:board-supported-hw指令在文档生成阶段自动展开依据 khadas_edgev.dts 中的设备树节点生成。板级设备树的关键配置如下/dts-v1/; #include rockchip/rk3399.dtsi / { model Khadas Edge-V; compatible khadas,edgev; chosen { zephyr,sram sram0; zephyr,console uart2; zephyr,shell-uart uart2; }; cpus { /delete-node/ cpu1; /delete-node/ cpu2; /delete-node/ cpu3; /delete-node/ cpu4; /delete-node/ cpu5; }; }; uart2 { status okay; };值得注意的实现细节串口控制台板上有多个串口Zephyr 选用uart2作为串口控制台zephyr,console与 shell 串口zephyr,shell-uart且设备树中显式将uart2状态置为okay单核裁剪cpus节点通过/delete-node/删除了cpu1至cpu5共 5 个核仅保留cpu0从设备树层面固化了 Non-SMP 单核 的移植定位这与板名中 single core, non SMP 的描述完全一致。板级默认配置defconfigkhadas_edgev_defconfig 提供了运行 Zephyr 所需的最小化平台配置# Platform Configuration CONFIG_ARM64_VA_BITS_40y CONFIG_ARM64_PA_BITS_40y CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC24000000 CONFIG_CACHE_MANAGEMENTy CONFIG_ARMV8_A_NSy # Serial Drivers CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy # Enable Console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy逐项含义配置项作用CONFIG_ARM64_VA_BITS_40/CONFIG_ARM64_PA_BITS_40将 ARM64 虚拟地址与物理地址宽度限定为 40 位匹配 RK3399 的地址空间能力CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC24000000系统时钟硬件周期频率 24 MHz供内核周期计数与超时机制使用CONFIG_CACHE_MANAGEMENTy启用缓存管理Cache Management支持缓存维护操作CONFIG_ARMV8_A_NSy以 ARMv8-A 非安全Non-Secure模式运行CONFIG_SERIALyCONFIG_UART_INTERRUPT_DRIVENy启用串口驱动及中断驱动模式CONFIG_CONSOLEyCONFIG_UART_CONSOLEy启用内核控制台并通过 UART 输出构建 Zephyr 应用Non-SMP 模式按官方文档使用如下配置即可在 Khadas Edge-V 上运行基础 Zephyr 应用与内核测试。以hello_world为例west build -b khadas_edgev samples/hello_world等价地也可使用cmake直接构建cmake -DBOARDkhadas_edgev -B build samples/hello_world cmake --build build说明上述命令面向 Unix 主机环境host-os: unix要求已安装 Zephyr SDK 或等效的 ARM64 交叉编译工具链。文档原文指出 This will build an image with the synchronization sample app从仓库现状看samples/hello_world生成的是经典 Hello World 镜像其启动横幅与输出即本文后续展示的内容。生成可启动的 U-Boot 镜像Zephyr 直接产出 ELF 与zephyr.bin原始二进制。由于 RK3399 由 U-Boot 负责引导需要先用mkimage将裸二进制封装为 U-Boot 可识别的镜像格式mkimage -C none -A arm64 -O linux -a 0x10000000 -e 0x10000000 -d build/zephyr/zephyr.bin build/zephyr/zephyr.img参数拆解参数含义-C none不使用压缩-A arm64目标架构为 ARM64-O linux操作系统类型标记为 LinuxU-Boot 引导约定-a 0x10000000镜像加载地址 0x10000000DDR 起始区段-e 0x10000000入口点地址与加载地址一致-d build/zephyr/zephyr.bin输入Zephyr 构建产物原始二进制build/zephyr/zephyr.img输出U-Boot 镜像通过 U-Boot 引导 Zephyr从网络TFTP加载并启动板卡上电进入 U-Boot 后可通过 TFTP 将zephyr.img下载到 DDR 并引导tftpboot ${pxefile_addr_r} zephyr.img; bootm start ${pxefile_addr_r}; bootm loados; bootm go执行流程tftpboot ${pxefile_addr_r} zephyr.img通过 TFTP 将镜像下载到pxefile_addr_r所指向的 DDR 缓冲区bootm start ${pxefile_addr_r}启动 bootm 流程解析镜像头bootm loados将操作系统镜像此处即 Zephyr加载到其声明的加载地址 0x10000000bootm go跳转到入口点 0x10000000将控制权交给 Zephyr 内核。预期控制台输出引导成功后串口控制台uart2将输出 Zephyr 启动横幅与应用输出*** Booting Zephyr OS build XXXXXXXXXXXX *** Hello World! khadas_edgev其中XXXXXXXXXXXX为实际构建的版本字符串Hello World! khadas_edgev表明应用运行于khadas_edgev板。Flashing镜像的加载途径Zephyr 镜像可被加载到 DDR 地址0x10000000加载来源包括SD 卡SD Card将zephyr.img放入 SD 卡文件系统由 U-Boot 读取并加载EMMC烧写至板载 eMMC 存储U-Boot 从中读取QSPI Flash烧写至 SPI NOR FlashU-Boot 从中读取网络Network即上文介绍的 TFTP 方式在 U-Boot 中从网络下载。由于 RK3399 的 U-Boot 具备从上述介质引导的能力Zephyr 镜像无需烧写 Flash 也能以 下载即运行 的方式快速验证非常适合内核与驱动的迭代调试。参考资料与延伸阅读本文核心依据Khadas Edge-V 板级文档板级 KconfigKconfig.khadas_edgev板级设备树khadas_edgev.dts板级默认配置khadas_edgev_defconfigRK3399 SoC 移植soc/rockchip/rk3399/Kconfig.soc同系列板卡Edge2文档boards/khadas/edge2/doc/index.rstKhadas 板卡文档索引boards/khadas/index.rst如需了解 RK3399 SoC 层的时钟、串口等外设实现可继续查阅soc/rockchip/rk3399/目录下的源码实际硬件规格如引脚定义、供电、启动介质开关请以 Khadas 官方硬件文档为准。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CANN pyasc 算子编程接口详解:asc.language.basic.sub 按元素求差全指南

CANN pyasc 算子编程接口详解:asc.language.basic.sub 按元素求差全指南

CANN pyasc 算子编程接口详解:asc.language.basic.sub 按元素求差全指南 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitc…

2026/9/18 22:54:53 阅读更多 →
ArcGIS for JavaScript开发实战:环境搭建、图层管理与空间查询

ArcGIS for JavaScript开发实战:环境搭建、图层管理与空间查询

简介:这是一份 ArcGIS for JavaScript API 的中文参考文档,专为 Web GIS 开发者与前端工程师打造,系统梳理了从基础概念到地图创建的完整知识链。文档从示例概述入手,按一星至三星的难度梯度介绍 API 核心用法,并详细讲…

2026/9/18 22:54:53 阅读更多 →
信息系统运维标书落地:ITIL流程、SLA指标与驻场排班核算

信息系统运维标书落地:ITIL流程、SLA指标与驻场排班核算

简介:这份信息系统运维服务方案标书是一套面向企业IT运维负责人、信息化项目投标人员及运维服务团队的完整方案文档,用于解决运维服务体系搭建、投标应答与日常运行保障缺少规范蓝本的问题。方案围绕项目背景、项目目标与需求分析展开,构建了…

2026/9/18 22:53:52 阅读更多 →

最新新闻

Ollama大模型联网实战:三种方案让本地模型实时获取信息

Ollama大模型联网实战:三种方案让本地模型实时获取信息

很多朋友把Ollama装好、把模型跑起来以后,都会冒出同一个问题:这模型只会照着训练时的知识回答,没法查实时天气、最新新闻,也不能帮我打开某个网页取内容。让Ollama大模型联网,并不是给模型本身插一根网线,…

2026/9/18 23:41:21 阅读更多 →
Windows下VSCode+MinGW配置C/C++开发环境:从安装到一键调试

Windows下VSCode+MinGW配置C/C++开发环境:从安装到一键调试

看到这个标题,不少刚接触 C/C 的朋友应该都在这条路上折腾过几回。Windows 下把 VSCode 和 MinGW 这套环境配通,说难不难,但网上的教程经常版本陈旧、东一句西一句,照着抄很容易卡在某个莫名其妙的环节,最后彻底放弃。…

2026/9/18 23:41:21 阅读更多 →
Git入门到实践:环境搭建、SSH配置与高频命令详解

Git入门到实践:环境搭建、SSH配置与高频命令详解

1. 装对Git环境,比背命令重要得多先说个我在各种交流群里见过无数次的现象:很多人不是因为Git命令难学才放弃,而是卡在了最前面的安装配置上。打开官网下载慢、装完双击没反应、在终端里敲git提示不是内部或外部命令、SSH连不上远程仓库&…

2026/9/18 23:41:21 阅读更多 →
单片机空调温度控制系统设计与实现:从选型到联调

单片机空调温度控制系统设计与实现:从选型到联调

简介:这是一份基于8051单片机的空调温度控制系统课程设计报告,面向电气工程、自动化、检测技术与仪器等专业学生,可用于完成单片机课程设计或理解温度检测与闭环控制原理。资源为doc格式,共1个文件,压缩包大小613KB&am…

2026/9/18 23:41:21 阅读更多 →
OpenTelemetry Go SDK 发布流程实战指南:从语义约定升级到 GPG 签名发布

OpenTelemetry Go SDK 发布流程实战指南:从语义约定升级到 GPG 签名发布

OpenTelemetry Go SDK 发布流程实战指南:从语义约定升级到 GPG 签名发布 【免费下载链接】inngest The leading workflow orchestration platform. Run stateful step functions and AI workflows on serverless, servers, or the edge. 项目地址: https://gitcod…

2026/9/18 23:41:21 阅读更多 →
VimWiki文本对象指南:用viw等文本对象提升编辑效率

VimWiki文本对象指南:用viw等文本对象提升编辑效率

VimWiki文本对象指南:用viw等文本对象提升编辑效率 【免费下载链接】vimwiki Personal Wiki for Vim 项目地址: https://gitcode.com/GitHub_Trending/vi/vimwiki VimWiki 是 Vim 中构建个人 Wiki 的强大插件,而它自带的文本对象(ah、…

2026/9/18 23:40:20 阅读更多 →

日新闻

Matlab手写逻辑回归:从数学原理到多变量概率预测模型实现

Matlab手写逻辑回归:从数学原理到多变量概率预测模型实现

很多朋友第一次看到"逻辑回归"这四个字,第一反应就是——这玩意儿是个回归模型吧?我当年也是在Matlab里跑完一段代码,看着输出的0.73、0.86这种概率值,才回过神来:这家伙其实是披着回归外衣的分类神器&#…

2026/9/18 0:00:28 阅读更多 →
高值医用耗材研报PDF:用Python完成字段抽取、清洗与趋势预测

高值医用耗材研报PDF:用Python完成字段抽取、清洗与趋势预测

简介:这份报告是2023-2028年高值医用耗材行业调研及发展前景趋势预测报告,面向医疗器械企业管理者、投资机构、行业研究人员及关注政策变化的从业者,用于把握行业监管动向、市场格局与未来趋势。报告以PDF格式呈现,共1个文件、整体…

2026/9/18 0:00:28 阅读更多 →
三维高斯场赋能世界模型:几何语义蒸馏与机器人决策实战

三维高斯场赋能世界模型:几何语义蒸馏与机器人决策实战

先把我自己的背景交代一下:我之前在搞具身智能和机器人导航相关的项目,很长一段时间里都被“环境表示”这件事卡着。传统做法是用点云或者网格做几何建模,语义信息另外再跑分割模型,两套东西各管各的,时间一长就会发现…

2026/9/18 0:00:28 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →