Rust开发操作系统系列:全新Hello World系统

简介: 正如标题,这篇文章是关于如何用Rust开发一个船新的操作系统,而这个操作系统只会打印一句话: Hello World 在这之前,我们需要了解有关计算机底层的基础知识,包括IO、接口、网络底层等等,当然如果你是老手或者是对Rust一窍不通的人,通过这篇文章也能清楚的了解如何制作一个微型的、有Terminal的操作系统 首先让我们了解一下Rust,[Rust是一门系统编程语言 ,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。

如果想看更好的排版,建议这个链接:http://www.iouyi.top/index.php/archives/235.html
注意:文章篇幅较长,如果想提前拿到代码,可以直接下载附件,大小仅为57k
正如标题,这篇文章是关于如何用Rust开发一个船新的操作系统,而这个操作系统只会打印一句话: Hello World

在这之前,我们需要了解有关计算机底层的基础知识,包括IO、接口、网络底层等等,当然如果你是老手或者是对Rust一窍不通的人,通过这篇文章也能清楚的了解如何制作一个微型的、有Terminal的操作系统


首先让我们了解一下Rust


Rust是一门系统编程语言 ,专注于安全 ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似 ,但是设计者想要在保证性能的同时提供更好的内存安全。 Rust最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的。Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器。Rust编译器是在MIT License 和 Apache License 2.0双重协议声明下的免费开源软件。 Rust已经连续三年(2016,2017,2018)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠。
上面的内容采摘自百度百科(本人语言组织不行,请多多见谅)
Rust的官网是 https://www.rust-lang.org/

关于自制操作系统


Rust官网本来就有这个项目的,其文章是英文的,作者也打算计划制作X86_64位系统,因此我准备针对这个计划开发
Rust官网开发单片机系统文章链接: https://rust-embedded.github.io/book

安装开发环境
由于作者目前只在Mac下工作,因此关于 Windows 和 Linux 的就只有等待以后更新!
-------------Mac下安装-------------
下面的命令一键安装Rust

$ curl https://sh.rustup.rs -sSf | sh

开发环境:推荐用微软的 Visual Studio code 或者 Idea,在插件一栏搜索关键词 rust即可
其他软件环境:
cargo-binutils

$ cargo install cargo-binutils

$ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf

$ rustup component add llvm-tools-preview

$ brew cask install gcc-arm-embedded

$ brew install openocd

$ brew install qemu

$ #如果该brew cask命令不起作用(例如error: unknown command: cask),则首先运行brew tap Caskroom/tap并再次尝试。

书写代码


到了开始锻炼手的灵活度了,评论区回复打字速度有机会获得奖品哦(其实没有奖品,而是撒子都没得!!!)

使用cargo来创造一个新项目(不瞒你说,其实也可以用IDE直接创建的)
命令:

$ cargo new app

接下来就是进入app文件夹

$ cd app

然后在 Cargo.toml 设置一下添加这些

[dependencies]
cortex-m = "0.5.8"
cortex-m-rt = "0.6.5"
cortex-m-semihosting = "0.3.2"
panic-halt = "0.2.0"

[[bin]]
name = "testos" # 注意!这个name的参数必须与[package]里的name一致
test = false
bench = false

[profile.release]
codegen-units = 1
debug = true
lto = true

就像下面这样

[package]
name = "testos"
version = "0.1.0"
authors = ["moyan"]
edition = "2018"

[dependencies]
cortex-m = "0.5.8"
cortex-m-rt = "0.6.5"
cortex-m-semihosting = "0.3.2"
panic-halt = "0.2.0"

[[bin]]
name = "testos"
test = false
bench = false

[profile.release]
codegen-units = 1 # 更好的优化
debug = true
lto = true # 更好的优化

接下来就是设置Rust的 .config文件夹下的 config 文件
注意:Mac下用访达是无法直接看到这种带 . 的文件夹,可以用IDE看到,也可以用下面的命令看

$ defaults write com.apple.finder AppleShowAllFiles -bool true;

$ KillAll Finder

在 config 文件里添加这些代码

[build]
#代表给 Cortex-M3 的CPU编译系统
target = "thumbv7m-none-eabi"    # Cortex-M3

[target.thumbv7m-none-eabi]
#添加这些命令可以直接使用 cargo run 来运行,如果无法理解这些命令,可以在自己通过本片文章成功运行系统后看Rust官方的文章
runner = "qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb -semihosting-config enable=on,target=native -kernel"

rustflags = [
#链接
  "-C", "link-arg=-Tlink.x",
]

完成后就可以设置好内存和储存走向了
因为 Rust 官网为我们解决了很多的问题,因此我们只需要些一个文章,那就是 memory.x 文件。注意这个文件创建在src的外面。
在文件里面添加

MEMORY
{
    FLASH : ORIGIN = 0x00000000, LENGTH = 256K
    RAM : ORIGIN = 0x20000000, LENGTH = 64K
}

终于。。。。到了最后一步:修改 main.rs 文件!!!
就像下面这样:

//这个代码是不使用Rust的标准库
#![no_std]
//这个代码表示不使用默认main方法
#![no_main]

//使用panic_halt库
extern crate panic_halt;

use cortex_m_rt::entry;
use cortex_m_semihosting::{hprintln};

#[entry]
fn main() -> ! {
    loop {
        //无限打印 Hello World
        hprintln!("hello world").unwrap();
    }
}

保存之后等待最后一步操作


运行

使用命令:

$ cargo build

$ cargo run

附上运行:

_

结尾


成功运行,感觉良好,希望您们关注收藏点一个赞
相关文章
|
2月前
|
安全 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统优化策略####
当今数字化时代,移动应用已成为日常生活不可或缺的一部分,而移动操作系统则是支撑这些应用运行的基石。本文旨在探讨当前移动应用开发的最新趋势,分析主流移动操作系统的特点及优化策略,为开发者提供有价值的参考。通过深入剖析技术创新、市场动态与用户需求变化,本文力求揭示移动应用与系统协同发展的内在逻辑,助力行业持续进步。 ####
52 9
|
18天前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
84 47
Harmony OS开发-ArkTS语言速成二
|
21天前
|
开发框架 JavaScript 前端开发
Harmony OS开发-ArkT语言速成一
本文介绍ArkTS语言,它是鸿蒙生态的应用开发语言,基于TypeScript,具有静态类型检查、声明式UI、组件化架构、响应式编程等特性,支持跨平台开发和高效性能优化。ArkTS通过强化静态检查和分析,提升代码健壮性和运行性能,适用于Web、移动端和桌面端应用开发。关注我,带你轻松掌握HarmonyOS开发。
52 5
Harmony OS开发-ArkT语言速成一
|
1月前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
1月前
|
人工智能 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统演进####
本文深入剖析了移动应用开发的最新趋势与移动操作系统的演进历程,揭示了技术创新如何不断推动移动互联网生态的变革。通过对比分析不同操作系统的特性及其对应用开发的影响,本文旨在为开发者提供洞察未来技术方向的视角,同时探讨在多样化操作系统环境中实现高效开发的策略。 ####
26 0
|
2月前
|
人工智能 Android开发 数据安全/隐私保护
移动应用与系统:探索开发趋势与操作系统的协同进化####
当今时代,移动应用不再仅仅是简单的软件工具,它们已成为扩展智能手机及平板等设备功能的关键。本文旨在深入分析当前移动应用的开发趋势,探讨移动操作系统的最新进展及其对应用开发的影响,并阐述两者如何相互促进、协同进化,共同推动移动互联网技术向前发展。 ####
|
2月前
|
人工智能 物联网 Android开发
移动应用与系统:探索开发趋势与操作系统的协同进化####
本文深入探讨了移动应用开发的当前趋势,以及这些趋势如何与移动操作系统的发展相互影响、协同进化。通过分析最新的技术动态、市场数据及用户行为变化,本文旨在为开发者提供关于未来移动应用开发方向的洞察,并讨论操作系统层面的创新如何促进或制约应用的发展。 ####
|
1月前
|
5G 数据安全/隐私保护 Android开发
移动应用与系统:探索开发趋势与操作系统革新####
本文深入剖析当前移动应用开发的最新趋势,涵盖跨平台开发框架的兴起、人工智能技术的融合、5G技术对移动应用的影响,以及即时应用的发展现状。随后,文章将探讨主流移动操作系统的最新特性及其对开发者社区的影响,包括Android的持续进化、iOS的创新举措及华为鸿蒙OS的崛起。最后,还将讨论移动应用开发中面临的挑战与未来的发展机遇,为读者提供全面而深入的行业洞察。 ####
|
2月前
|
人工智能 5G 开发工具
移动应用与系统的未来趋势:开发、操作系统创新及挑战###
本文探讨了移动应用开发和移动操作系统的最新发展趋势,包括人工智能的集成、跨平台开发工具的兴起以及5G技术对移动生态的影响。同时,还分析了开发者面临的主要挑战,如安全性问题、性能优化和用户体验提升等。通过具体案例和技术解析,本文旨在为开发者提供前瞻性指导,帮助他们在快速变化的移动科技领域保持竞争力。 ###
|
2月前
|
安全 开发工具 Android开发
探索移动应用的未来:开发趋势与操作系统的革新
本文将带您进入移动应用开发的新纪元,探讨最新的开发工具、语言和框架。我们将深入分析移动操作系统的创新,并预测未来可能的发展方向。通过实际代码示例,我们将展示如何利用这些新工具和技术来创建更高效、更安全的移动应用。无论您是初学者还是经验丰富的开发者,这篇文章都将为您提供宝贵的见解和灵感。让我们一起迎接移动应用开发的美好未来吧!