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

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

3天内不再提示

太强了!Github大佬把NuttX移植到Duo-S上了!

算能开发者社区 2024-06-01 08:34 次阅读

Milk-V DuoS 是一款搭载SG2000 主控,拥有512MB内存和丰富 IO 接口的紧凑型嵌入式开发平台。它集成了 WI-FI 6/BT 5 无线功能,并配备 USB 2.0 HOST 接口和 100Mbps 以太网端口,方便用户使用。它支持双摄像头(2x MIPI CSI 2 通道)和 MIPI 视频输出(MIPI DSI 4 通道),可实现多种应用。DuoS 还支持通过开关在 RISC-VARM 启动之间切换,适合各种场景和更复杂的项目开发需求。

NuttX是什么?

NuttX是一个专注于标准合规和占用少内存的实时操作系统(RTOS)。它可以在8位到32位的微控制器上部署。NuttX在编写时主要参照了POSIX和ANSI标准。对于那些标准中没有的部分,如fork()等,则参考了VxWorks或其他RTOS。"

总的来说,NuttX是一个功能丰富、性能稳定,成熟安全的实时操作系统。大家熟悉的Xiaomi Vela,包括索尼的一些产品都是基于NuttX开发的,可以说,对于有过POSIX编程经验,并想使用小型CPU/MCU的用户而言NuttX RTOS是一个绝佳选择。最近,我们惊喜的发现,社区大佬Lup Yuen Lee使用DuoS开发板成功将NuttX移植到了SG2000处理器上! 让我们一起来看看大佬是怎么做到的

Port to SG2000

  1. 大佬使用的系统环境是另一位Github大神Justin Hammond基于sg2000制作的debian risc-v架构的镜像,链接附在下方:(膜拜ing,学的速度都快赶不上大佬们开发速度了!)https://github.com/Fishwaldo/sophgo-sg200x-debian/releases

将镜像烧写到DuoS开发板上,成功后我们可以看到:a3f3938e-1fae-11ef-bd4a-92fbcf53809c.png

值得注意的地方是,大佬特别提到请使用CP2101型号的USB转串口处理器,若使用CH340系列处理器,屏幕上则会到处打印乱码。

在开机过程中,我们可以通过log发现U-Boot是支持TFTP的,即我们可以将编译好的NuttX Image直接在U-Boot阶段就将固件传进去,是不是非常方便高效!(虽然也可以将编译好的NuttX复制到sd卡上,再插到开发板上,但是如果需要调试则整个过程就会循环往复,十分不便...)使用reboot指令重新启动,然后一直敲击Enter键,就可以进入到U-Boot Command Prompt界面:a3fa7e10-1fae-11ef-bd4a-92fbcf53809c.png

$help//打印所有可执行指令
$printenv//打印所有的环境变量
$netlist//查看可用网络设备
eth0:ethernet@4070000000000:00active//这里发现我们可以直接通过ethernet来传输和移植NuttX

通过查看kernel_addr_r、ramdisk_addr_r等参数,我们就可以正确配置NuttX,使其能将Kernel传到正确的地址上。不过不用担心,贴心的大佬已经替我们做了先行工作,我们可以直接使用编译好的镜像来体验NuttX。

镜像下载:https://github.com/lupyuen2/wip-nuttx/releases/download/sg2000-1/Image

想自己动手试试的朋友可以参考这份帖子,里面大佬也非常详细的说明了如何为SG2000构建NuttX:https://lupyuen.github.io/articles/sg2000#appendix-build-nuttx-for-sg2000

接下来我们就可以配置TFTP, 并将NuttX Image传进RAM里了。请先确保在本地环境上已经装好了TFTP server并完成配置。然后就可以在U-Boot命令行配置:

$setenvtftp_server192.168.x.x//本地TFTP地址
$saveenv//保存配置


$dhcp${kernel_addr_r}${tftp_server}:Image-sg2000
$tftpboot${fdt_addr_r}${tftp_server}:cv181x_milkv_duos_sd.dtb
$fdtaddr${fdt_addr_r}
$booti${kernel_addr_r}-${fdt_addr_r}

如果使用静态IP地址,可能会在第一步dhcp指令失败,这时可以通过设置ipaddr使开发板和pc host在同一子网内,确保互相能ping通,再将第一步的dhcp改为tftpboot即可。

当我们看到nsh>字样时候,证明我们已经成功将NuttX移植到板子上了!a3fee036-1fae-11ef-bd4a-92fbcf53809c.png

在仓库的README里,对每个步骤都有更详细的解释,大佬对代码也在不断进行更新,小伙伴们赶快拿起手里的DuoS开发板,一起探索起来!

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

    关注

    5042

    文章

    18795

    浏览量

    298236
  • 开发板
    +关注

    关注

    25

    文章

    4754

    浏览量

    96095
  • GitHub
    +关注

    关注

    3

    文章

    461

    浏览量

    16220
收藏 人收藏

    评论

    相关推荐

    上传本地项目代码github

    配置ssh key 打开GitHub的设置界面,点击setting。 点击SSH and GPG keys。 点击new SSH keys。 id_rsa.pub里的内容复制key里
    发表于 09-11 16:33

    使用esp32-c3下载Nuttx,下载完成后一直重启是怎么回事?

    我使用esp32-c3下载Nuttx,下载完成后一直重启.不知道是怎么回事.,这个是图片截图.
    发表于 06-21 07:15

    STM8S103K程序移植STM8S103F中就实现不了PWM功能了,为什么?

    我在STM8S103K,上能够实现定时器1中的CH1通道可以实现PWM功能,程序移植STM8S103F中,就实现不了,但是修改STM8
    发表于 05-11 07:16

    PX4 1.15.0添加hpmicor板子遇到些问题

    nuttx 1.12.0下面的hpmicro包移植PX4 1.15.0 的nuttx下,经过修改部分内容,成功编译和运行,但是在PX4/boards下新建板子编译,遇到如图中的问题
    发表于 04-16 15:46

    STM32F407的程序移植STM32F103的芯片上面,需要修改哪些内容?

    STM32F407的程序移植STM32F103的芯片上面,需要修改哪些内容?
    发表于 04-10 07:38

    如何stm32F103程序移植stm32g030k6t6上?

    怎么stm32F103程序移植stm32g030k6t6上
    发表于 04-03 07:57

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

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

    GitHub多项服务故障,与升级MySQL有关?

    从事故报告页面来看,GitHub 当时的解决方案是将相关问题隔离一个数据中心进行处理。
    的头像 发表于 01-11 11:34 372次阅读
    <b class='flag-5'>GitHub</b>多项服务故障,与升级MySQL有关?

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

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

    移植 SBSFU STM32G070 的过程

    电子发烧友网站提供《移植 SBSFU STM32G070 的过程.pdf》资料免费下载
    发表于 12-18 11:04 4次下载
    <b class='flag-5'>移植</b> SBSFU <b class='flag-5'>到</b> STM32G070 的过程

    GitHub入门与实践

    GitHub 是一个基于 Git 版本控制系统的代码托管平台,它提供了许多功能和用途,主要面向软件开发和协作。以下是 GitHub 的主要用途和一些关键技术:GitHub 的主要用途:代码托管
    发表于 12-14 09:53 4次下载

    GitHub底层数据库无缝升级MySQL 8.0的经验

    GitHub 团队近日分享了他们将 GitHub.com 的底层数据库无缝升级 MySQL 8.0 的经验。 据介绍,GitHub 使用 MySQL 来存储大量关系数据,因此在不影响
    的头像 发表于 12-13 10:21 385次阅读
    <b class='flag-5'>GitHub</b>底层数据库无缝升级<b class='flag-5'>到</b>MySQL 8.0的经验

    LVGL案例分享--手把手教你移植T113-i国产工业开发板

    市面上有许多嵌入式GUI库可供选择,包括开源GUI库和闭源GUI库,开源GUI库:LVGL,EmWin等;闭源GUI库:TouchGFX,柿饼GUI等。 本篇文章主要描述如何将LVGL8.1移植
    发表于 11-17 09:55

    GitHub Universe 2023:副驾之力,跃上 AI 驱动的开发者平台

    世界之间寻找难以为继的平衡。从电光石火的创意提交、拉取、审查和部署,我们的指导信念是开发者的工作变得更轻松——利用深度集成
    的头像 发表于 11-09 18:55 571次阅读
    <b class='flag-5'>GitHub</b> Universe 2023:副驾之力,跃上 AI 驱动的开发者平台

    重塑GitHub、颠覆程序开发:GitHub Universe 2023发布重大更新

    GitHub 首席执行官 Thomas Dohmke 表示,他们正在逐步将 Copilot 与 GitHub 各方面融合,并将其作为一个重要组成部分。可以说,这是 GitHub 的一次重塑,正如他
    的头像 发表于 11-09 15:54 647次阅读
    重塑<b class='flag-5'>GitHub</b>、颠覆程序开发:<b class='flag-5'>GitHub</b> Universe 2023发布重大更新