2336|5

659

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

【平头哥Sipeed LicheeRV 86 Panel测评】使用新兴编程语言Rust开发RISCV裸机编程 [复制链接]

  本帖最后由 mars4zhu 于 2022-4-20 16:29 编辑

使用新兴编程语言Rust开发RISCV裸机编程

 

目录

1. 前言 1

2. 搭建Rust语言开发环境 1

1.1 安装Rustupcargo环境 1

1.2 安装Riscv64嵌入式编程目标 1

3. 最简单rust嵌入式程序的构建和代码修改 2

4. Rust程序的编译、调试下载和运行 3

 

  1. 链接已隐藏,如需查看请登录或者注册

    然后修改如下文件:

    src/main.rs

    #![no_std]

    #![no_main]

     

    extern crate panic_halt;

     

    // use hifive1::hal::prelude::*;

    // use hifive1::hal::DeviceResources;

    use riscv_rt::entry;

     

    #[entry]

    fn main() -> ! {

        loop {}

    }

     

    cargo/config

    [target.riscv64gc-unknown-none-elf]

    runner = "riscv64-unknown-elf-gdb -q -x gdb_init"

    rustflags = [

      "-C", "link-arg=-Tmemory.x",

      "-C", "link-arg=-Tlink.x",

    ]

     

    [build]

    target = "riscv64gc-unknown-none-elf"

     

    memory.x

    MEMORY

    {

      /* NOTE 1 K = 1 KiBi = 1024 bytes */

      /* TODO Adjust these memory regions to match your device memory layout */

      /* These values correspond to the LM3S6965, one of the few devices QEMU can emulate */

      FLASH : ORIGIN = 0x00020000, LENGTH = 32K

      RAM : ORIGIN = 0x00028000, LENGTH = 64K

    }

    REGION_ALIAS("REGION_TEXT", FLASH);

    REGION_ALIAS("REGION_RODATA", FLASH);

    REGION_ALIAS("REGION_DATA", RAM);

    REGION_ALIAS("REGION_BSS", RAM);

    REGION_ALIAS("REGION_HEAP", RAM);

    REGION_ALIAS("REGION_STACK", RAM);

     

    gdb_init

    set history save on

    set confirm off

    set remotetimeout 240

    # 修改为T-Head DebugServergdb端口号:

    target extended-remote :1025

    set print asm-demangle on

    monitor reset halt

    load

    continue

    # quit

    1. 下载附件  保存到相册

      2022-4-20 16:23 上传

       

       

      下面三个图分别是在windowsmsys2WSL2-Ubuntu-20.04三个系统上的手动调试的过程截图:

       

       

       

       

       

       

       

      不过貌似学习路径应该是先在电脑上学习Rust语法和程序结构,熟悉之后再慢慢渗透到嵌入式编程领域,我这样贸然直接在RISCV芯片上动手写Rust裸机代码,步子跨得有点大,连LED-Blinky点灯程序或者UART输出“HelloWorld”都有点困难;

      全志的这颗RISCV64芯片,是这段时间最便宜实惠的RISCV64架构能运行Linux系统的SoC,然后网上有很多利用D1芯片做教学,如“挪威科技大学使用全志D1哪吒开发板开设操作系统课程”,公开课件——Porting the xv6 OS to the Nezha D1 RISC-V Board.pdf

      奋勇而上,得慢慢来,一步一个脚印学习,实现最终目的——将清华大学计算机系本科操作系统课程的rCore移植到D1上;

       

      使用新兴编程语言Rust开发RISCV裸机编程.zip (1.54 MB, 下载次数: 1)

       

最新回复

这个要支持,现在rust风头好像挺猛。   详情 回复 发表于 2022-4-20 18:44
点赞 关注
 
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 

图文啥时补充呀:)

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

补充好了,帮我审核一下啊。  详情 回复 发表于 2022-4-20 16:30
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

659

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
soso 发表于 2022-4-20 10:38 图文啥时补充呀:)

补充好了,帮我审核一下啊。

 
 
 

回复

659

帖子

1

TA的资源

纯净的硅(中级)

4
 

接触不多,但我觉得以后Rust语言会比C语言在单片机、嵌入式系统、裸机uni-kernel等领域,要更加流行且重要。

 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

5
 

这个要支持,现在rust风头好像挺猛。

点评

我也是最近才发现的。  详情 回复 发表于 2022-4-21 23:46
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

659

帖子

1

TA的资源

纯净的硅(中级)

6
 
freebsder 发表于 2022-4-20 18:44 这个要支持,现在rust风头好像挺猛。

我也是最近才发现的。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表