0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在riscv32的qemu上体验nuttx的编译和执行过程

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-12-28 10:28 次阅读

nuttx在riscv的qemu上运行体验

1.前言

2.环境准备

2.1 安装riscv32交叉编译工具链

2.2 安装qemu

2.3 获取Nuttx源代码

2.4 安装kconfig-frontends

3.编译和运行

3.1 编译

3.2 运行

3.3 调试

4.总结

1.前言

继阿里推出阿里OS,华为推出鸿蒙OS,腾讯的TencentOS tiny之后,小米也高调的推出Xiaomi Vela。各大互联网公司都在做自己的物联网操作系统,物联网操作系统已呈现百花齐放百家争鸣的态势。这篇文章主要讲Nuttx的使用。

11月5日,在小米开发者大会(MIDC 2020)上,小米Vela正式问世。

小米IoT平台部总经理、AIoT战略委员会主席范典在发布会上介绍称,“小米Vela是基于开源嵌入式操作系统NuttX打造的物联网软件平台。”

NuttX是由Gregoy Nutt在2007年发布的一个实时嵌入式操作系统,发布之初并未像Linux一样迅速发展起来。不过由于NuttX在设计之初就考虑到了对应用较为广泛的Linux的兼容、并对POSIX原生支持,在过去几年里也可见看到索尼、三星等大厂先后加入了这一阵营。

本文主要介绍在riscv32的qemu上体验nuttx的编译和执行过程。

2.环境准备

编译和运行环境在Ubuntu20.04平台上。

2.1 安装riscv32交叉编译工具链

InstallRISC-Vtoolchains $gitclone--recursivehttps://github.com/riscv/riscv-gnu-toolchain 国内下载地址,每天更新一次 #gitclone--recursivegit@gitee.com:mirrors/riscv-gnu-toolchain.git $cdriscv-gnu-toolchain/ $mkdirbuild&&cdbuild $../configure--prefix=/opt/riscv--enable-multilib $sudomake $exportPATH=$PATH:/opt/riscv/bin

编译和下载过程很慢,可以直接下载直接编译好的

https://www.sifive.com/software

然后导入环境变量

exportPATH=/xxxx/riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-linux-ubuntu14/bin/:$PATH

设置完成后,在该终端可以生效。

2.2 安装qemu

首先需要下载qemu,可以到qemu的官网上下载。

https://www.qemu.org/

可选择最新版本下载即可。

解压后进入qemu-5.2

$./configure--target-list=riscv32-softmmu $make $sudomakeinstall

可以输入qemu-system-riscv32 --version验证是否成功。

2.3 获取Nuttx源代码

$gitclonehttps://github.com/apache/incubator-nuttx.gitnuttx $gitclonehttps://github.com/apache/incubator-nuttx-apps.gitapps $gitclonehttps://starcat-io@bitbucket.org/nuttx/tools.gittools

下载上面三个仓库的代码即可。

2.4 安装kconfig-frontends

首先进入tools目录,然后配置,安装。

$cd${CURDIR}/tools/kconfig-frontends $./configure--enable-mconf--disable-nconf--disable-gconf--disable-qconf $make $sudomakeinstall

配置完成就可以进行下面的编译和运行了。

3.编译和运行

3.1 编译

首先进入nuttx目录,输入./tools/configure.sh hifive1-revb:nsh。

输入make menuconfig进入配置选择开发板。

会出现如下的错误。

errorwhileloadingsharedlibraries:libkconfig-parser-4.11.0.so:cannotopensharedobjectfile:Nosuchfileordirectory

解决办法

sudovim/etc/ld.so.conf

在下面添加一行

include/usr/local/lib

如图所示

接着执行

sudoldconfig makemenuconfig

选择FE310_QEMU开发平台。

选择完成后,输入

make

开始编译,编译完成为止。

3.2 运行

进入nuttx目录,输入

qemu-system-riscv32-nographic-machinesifive_e-kernel./nuttx

可以看到,有类似于Linux的设备描述节点。

3.3 调试

可以输入下面的命令。

qemu-system-riscv32-nographic-machinesifive_e-kernel./nuttx-s-S

主要注意-s -S。

另外开一个终端即可。

riscv64-unknown-elf-gdbnuttx

4.总结

nuttx这个物联网系统特点是与Linux的兼容,并支持原生的posix接口。这对于做Linux的人来说,十分的友好,通过对这份代码的初步阅读,对该系统的功能还是比较强大的。对于rtos来说,实时性至关重要,实时性指标不仅仅是响应迅速,而是时间可预测,也就是也预制程序执行的下个流程,要求时间的确定性。对于物联网操作系统来说,硬实时性不是最关键的,应用和程序的兼容性,可移植性强比较关键。nuttx这个系统的兼容性和Linux结合的很好。

责任编辑:xj

原文标题:nuttx在riscv的qemu上运行体验

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译
    +关注

    关注

    0

    文章

    657

    浏览量

    32868
  • RISC-V
    +关注

    关注

    45

    文章

    2277

    浏览量

    46149
  • qemu
    +关注

    关注

    0

    文章

    57

    浏览量

    5355

原文标题:​nuttx在riscv的qemu上运行体验

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    QEMU系列】不用开发板运行RT-Thread指南-RISC-V架构

    1.准备:准备工具链:bsp下有说明,可以替换为其他tool准备qemu:bsp下有说明,可以替换为其他qemu2.编译:这里使用最简单的方法:直接修改EXEC_PATH=‘工具链
    的头像 发表于 11-12 01:07 203次阅读
    【<b class='flag-5'>QEMU</b>系列】不用开发板运行RT-Thread指南-RISC-V架构

    C语言生成可执行二进制文件的具体过程

    C语言源码到生成可执行文件的过程通常包括预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)等多个步骤,每个步骤都有其特定的任务
    的头像 发表于 10-21 14:30 496次阅读
    C语言生成可<b class='flag-5'>执行</b>二进制文件的具体<b class='flag-5'>过程</b>

    【开源鸿蒙】使用QEMU运行OpenHarmony轻量系统

    本文将会介绍如何从源码安装QEMU 6.2.0,以及如何使用QEMU运行OpenHarmony轻量系统。通过本文,你将会对QEMU和OpenHarmony轻量系统又一个初步的认知,并对如何使用
    的头像 发表于 09-14 08:51 570次阅读
    【开源鸿蒙】使用<b class='flag-5'>QEMU</b>运行OpenHarmony轻量系统

    RISC-V指令集仿真介绍

    创建build文件夹 riscv-fesvr文件夹下创建新的build文件夹,用于生成编译 bash mkdir build cd build 配置并生成代码 bash ../configure
    发表于 07-31 23:03

    RISC-V 汇编语言程序的调试

    样例代码 下面看一个程序如何编译以及QEMU环境中运行,从1加到10。 .section.text .globl_start _start: addit0,x0,0x1 addit1,x0
    发表于 07-19 16:27

    开源鸿蒙 编译OpenHarmony轻量系统QEMU RISC-V版本

    本文将介绍如何为QEMU RISC-V虚拟平台构建OpenHarmony轻量系统。得益于QEMU的CPU指令集模拟执行能力,该方法可以没有开发板的情况下调试和运行OpenHarmon
    的头像 发表于 07-15 10:36 1071次阅读
    开源鸿蒙 <b class='flag-5'>编译</b>OpenHarmony轻量系统<b class='flag-5'>QEMU</b> RISC-V版本

    examples工程执行idf.py build时候,怎么执行外部工程的makefile把它也编译进去?

    idf examples下的工程添加一个外部的工程进去 ,外部工程文件里已经有makefile写好编译规则,examples工程执行idf.py build时候怎么
    发表于 06-06 06:37

    RISCV soft JTAG调试_v1.2

    JTAG。这里我们以TI60F225 DEMO来演示。 使用softJTAG的过程中,首先要把RISCV的IP的调试选项选择为soft,也就是Eanble Soft Debug Tap. 第二
    的头像 发表于 04-23 08:38 1063次阅读

    qemu入门难不难

    大佬闪,QEMUwin11下面好不好装,入门难不难。
    发表于 04-14 06:58

    先楫半导体HPMicro Nuttx v0.2.0正式发布!

    各位关注先楫的小伙伴们,基于Nuttx v12.4.0版本和hpm_sdk v1.4.0版本的HPMicro Nuttx v0.2.0正式发布了。
    的头像 发表于 03-12 10:22 1315次阅读

    RISCV soft JTAG调试_v1.1

    JTAG。这里我们以TI60F225 DEMO来演示。 使用softJTAG的过程中,首先要把RISCV的IP的调试选项选择为soft,也就是Eanble Soft Debug Tap. 第二
    的头像 发表于 02-23 16:16 663次阅读
    <b class='flag-5'>RISCV</b> soft JTAG调试_v1.1

    OpenHarmony 移植:build lite 编译构建过程

    这些疑惑,会对 build lite 编译构建过程有个更深入的理解。 1、产品解决方案代码是如何被调用编译文件 buildliteBUILD.gn 配置文件中的构建目标 //bu
    的头像 发表于 02-19 16:19 953次阅读

    能否QEMU上面支持VisionFive 2开发板?

    进行VisionFive 2开发板软件开发的过程中,每修改一次代码就要重新烧录一次镜像,十分的不方便,能否QEMU上面支持VisionFive 2开发板,就像SiFive的HiFi
    发表于 01-15 07:00

    Nuttx RTOS入门知识简介及开源代码运行

    NuttX是一个成熟的实时操作系统,于07年由Gregory Nutt先生正式开源,2016年被三星选为TizenRT操作系统的内核
    的头像 发表于 01-10 18:14 5662次阅读
    <b class='flag-5'>Nuttx</b> RTOS入门知识简介及开源代码运行

    浅谈PLC程序执行过程

    plc初学者,学习编程,首先要了解PLC程序执行过程是什么。
    的头像 发表于 01-08 09:31 2764次阅读