LiteOS qemu realview-pbx-a9 环境搭建与运行

前言

  • 最近打算移植搭建 一些常见的 RTOS 的 qemu 开发学习环境,当前 RT-Thread、FreeRTOS 已经成功运行 qemu,LiteOS 初步验证可以正常 运行 qemu realview-pbx-a9,这里做个记录

  • 首先学习或者研究 RTOS,只是看内核源码,会比较的枯燥,而是要开发板,可能一上来牵涉过多的硬件驱动,造成学习研究 RTOS 内核的兴趣降低了一些,前期需要对 RTOS 内核的运行有个全局的掌握,此时是要 qemu 来学习与验证,相对于实际的开发板,会便捷与高效

LiteOS

  • 当前 验证的 LiteOS 内核是 : https://gitee.com/LiteOS/LiteOS

  • 这里与 https://gitee.com/openharmony/kernel_liteos_a 相比,可能有一点区别,不过前期建议使用 LiteOS 验证,kernel_liteos_a 缺少一些板级的配置文件

  • 可以通过 Git 克隆 LiteOS 内核,当前 qemu 验证发现不再需要其他的软件包就可以运行起来

  • git clone https://gitee.com/LiteOS/LiteOS.git

qemu realview-pbx-a9

  • git 克隆 LiteOS 的内核仓库后,可以进入内核,通过查看内核目录 tools/build/config/ 发现,有一些支持的板子的配置文件,其中 qemu 当前支持 qemu-virt-a53.config realview-pbx-a9.config,当前建议使用 realview-pbx-a9.config,因为是 ARM 平台,相关的资料与编译工具链比较的方便获取

  • 配置文件: 复制 tools/build/config/realview-pbx-a9.config 到内核根目录下,改为 .config 文件

  • 内核目录下执行 make menuconfig 可以进入图形界面配置

  • 【备注】如果 make menuconfig 失败,一般需要配置 交叉编译环境

配置 arm gcc 交叉编译环境

  • 下载 arm gcc 交叉编译工具链: 在 ARM 官方下载 https://developer.arm.com/downloads/-/gnu-rm,当前验证的版本: gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2,我当前使用 gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 可以正常编译

  • 下载 arm gcc 工具链后,解压到 Linux 环境(ubuntu 20.04),然后设置环境变量:如修改 /etc/profile 文件

  • sudo vim /etc/profile

  • 最后添加 : export PATH=$PATH:/home/zhangsz/tools/gcc-arm-none-eabi-10-2020-q4-major/bin

  • 然后保存, source /etc/profile 使环境变量生效

  • 可以在 shell 运行 arm-none-eabi-gcc -v 确认 arm gcc 工具链环境变量生效

在这里插入图片描述

在这里插入图片描述

安装 kconfiglib

  • LiteOS 需要安装 python2 版本的 kconfiglib

  • 如果当前 Linux 如 ubuntu 20.04 无法安装 python2 版本的 kconfiglib,需要手动获取 python2 版本的 pip,然后再 使用 python2 版本的 pip 安装 kconfiglib

  • 我当前的系统 ubuntu 20.04,python 版本是 Python 2.7.18,但是没有 python 2 版本的 pip,默认 pip 的版本是 python3的,所以需要手动安装 python2 版本的 pip

  • 获取 get-pip.py,获取的地址:https://bootstrap.pypa.io/pip/2.7/get-pip.py,ubuntu 可以使用 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py 获取

  • 然后确保当前的 python 版本是 2 版本, 使用 python get-pip.py 即可安装 python2 版本的 pip

  • 安装 完 python2 版本的 pip,再安装 kconfiglib,命令 :

$ pip --version
pip 20.3.4 from /home/zhangsz/.local/lib/python2.7/site-packages/pip (python 2.7)$ pip install Kconfiglib

menuconfig 配置 LiteOS

  • 当前可以直接保存,不需要配置,后面熟悉了 LiteOS 的内核与功能模块,可以尝试添加与修改内核的配置

编译 LiteOS

  • make 即可编译,如果提示 arm-none-eabi-gcc 工具链没有找到,请按上面的操作,先把 arm gcc 工具链配置好

  • 编译完成后,就可以运行 qemu realview-pbx-a9 了

运行 qemu realview-pbx-a9

  • 编写一个 qemu.sh 的 shell 脚本,内容如下,并 chmod +x qemu.sh 设置可执行权限

  • 其中 out/realview-pbx-a9/Huawei_LiteOS.bin 是 qemu realview-pbx-a9 的编译后的产物

#!/bin/bashqemu-system-arm -machine realview-pbx-a9 \-smp 4 -m 512M \-kernel out/realview-pbx-a9/Huawei_LiteOS.bin \-nographic
  • 运行 ./qemu.sh

在这里插入图片描述

  • 进入了 LiteOS 的 shell,LiteOS 运行起来了

小结

  • 本篇记录 了 LiteOS 在 qemu realview-pbx-a9 上的环境搭建、系统运行

  • 后续继续熟悉 LiteOS,尝试使用 GDB 调试基于 qemu 的 LiteOS 内核,了解内核的启动流程、内核模块等

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

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

相关文章

TiDB x 安能物流丨打造一栈式物流数据平台

作者:李家林 安能物流数据库团队负责人 本文以安能物流作为案例,探讨了在数字化转型中,企业如何利用 TiDB 分布式数据库来应对复杂的业务需求和挑战。 安能物流作为中国领先的综合型物流集团,需要应对大规模的业务流程&#xff…

第 3 章 栈和队列(单链队列)

1. 背景说明 队列(queue)是一种先进先出(first in first out,缩为 FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。 2. 示例代码 1)status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H/* 函数结果…

Arcface部署应用实战

1、概述 人脸识别的一个比较常用的网络arcface,依赖于其特殊设计的loss函数,使得模型在训练的时候能够实现类间距离增大,类内的距离不断减小,最终使得所训练的backbone能够获取鉴别性很高的特征,便于人脸识别。 本文…

Win11搭建 Elasticsearch 7 集群(一)

一: ES与JDK版本匹配一览表 elasticsearch从7.0开始默认安装了java运行环境,以便在没有安装java运行环境的机器上运行。如果配置了环境变量JAVA_HOME,则elasticsearh启动时会使用JAVA_HOME作为java路径,否则使用elasticsearch根目…

设计模式—简单工厂

目录 一、前言 二、简单工厂模式 1、计算器例子 2、优化后版本 3、结合面向对象进行优化(封装) 3.1、Operation运算类 3.2、客户端 4、利用面向对象三大特性(继承和多态) 4.1、Operation类 4.2、加法类 4.3、减法类 4…

【Unity】URP屏幕后处理UI模糊效果实现

这里Canvas(1)设置为Overlay能渲染出指定UI高清,其他UI模糊,然而这做法非常不好,如果此时再打开UI 以及 关闭模糊效果 要将这些置顶UI 恢复到原本Canvas里,也就是要管理2套Canvas using System; using System.Collections; using…

统一使用某一个包管理工具,比如yarn pnpm

原因:前端每个人的习性不一样,有人用npm 有人用yarn等包管理工具,混合下载插件容易出bug,就用个小工具锁住就行了,只能使用yarn或者pnpm反向下载依赖和下载插件。不然就报错 1.在项目主目录下创建preinstall.js // 如…

分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测

分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测 目录 分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测分类效果基本介绍模型描述预测过程程序设计参考资料分类效果 基本介绍 MATLAB实现GRNN广义回归神经网络多特

Mybatis学习|多对一、一对多

有多个学生,没个学生都对应(关联)了一个老师,这叫(多对一) 对于每个老师而言,每个老师都有N个学生(学生集合),这叫(一对多) 测试环境…

【小沐学Unity3d】3ds Max 骨骼动画制作(Physique 修改器)

文章目录 1、简介2、Physique 工作流程3、Physique 对象类型4、Physique 增加骨骼5、Physique 应用和初始化6、Physique 顶点子对象7、Physique 封套子对象8、设置关键点和自动关键点模式的区别8.1 自动关键点8.2 设置关键点 结语 1、简介 官方网址: https://help.…

Python Opencv实践 - 轮廓检测

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/map.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#Canny边缘检测 edges cv.Canny(img, 127, 255, 0) plt.imshow(edges, cmapplt.cm.gray)#查找轮廓 #c…

AI助乡行——点燃乡村振兴新引擎

随着数字化浪潮的袭来,乡村振兴战略的推进离不开数字化、智慧化等现代化治理能力和方式,人工智能等高新技术正不断与农村经济、社会、治理等加速融合。在智慧农业的背景下,我们可以解决一系列困扰农民的问题,包括如何增加经济作物…

【jvm】运行时数据区

目录 一、运行时数据区一、作用二、说明三、线程共用与私有区域 一、运行时数据区 一、作用 1.内存是非常重要的系统资源,是硬盘和CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策…

基于Gin框架的HTTP接口限速实践

在当今的微服务架构和RESTful API主导的时代,HTTP接口在各个业务模块之间扮演着重要的角色。随着业务规模的不断扩大,接口的访问频率和负载也随之增加。为了确保系统的稳定性和性能,接口限速成了一个重要的话题。 1 接口限速的使用场景 接口…

GA遗传算法

储备知识 GA算法主要解决数学模型中最优化的搜索算法,是进化算法中的一种,基因算法借鉴了自然界基因的遗传的主要现象,分别为遗传,变异,自然选择,杂交等。 GA算法参数 GA算法的参数如下所示。 种群规模…

通义千问部署搭建

文章目录 一、部署11.1 打开通义千问-7B-预训练-模型库-选择资源1.2 使用Netbook2.1 运行2.2 复制脚本2.2.1 问题1 :ImportError: This modeling file requires the following packages that were not found in your environment: transformers_stream_generator. R…

【请求报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol】

1、问题描述 在请求服务时报错说SSL握手异常协议禁用啥的,而且我的连接数据库的url也加了useSSLfalse javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)2、解决方法 在网上查找了方法…

【C++笔记】C++内存管理

【C笔记】C内存管理 一、C中动态内存申请的方式二、new和delete的实现原理2.1、operator new和operator delete函数 一、C中动态内存申请的方式 在C语言中我们需要动态申请空间的时候我们通常都是用malloc函数,但是malloc函数对自定义类型是没什么问题的&#xff0…

Jenkins清理构建(自动)

需求背景实现方法 Dashboard-->Project-->配置-->General-->Discard old builds # 注意:自动清理构建历史将在下次构建时进行

【校招VIP】产品面试之职业规划

考点介绍: 对于刚入行的产品同学,由于行业知识和经验不足,只能执行上层的产品策略,但是与团队的沟通是非常重要的,产品经理就是沙丁鱼中的鲶鱼,必须要能够把控整个团队的开发节奏,知道如何最大化…