[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
Linux Lab 新增 RISC-V RVOS 操作系统课程实验支持
By Falcon of TinyLab.org Aug 29, 2021
今年上半年,中科院软件所下属实验室开发了一门基于 RISC-V 指令集架构的操作系统视频公开课,配套完备的实验案例:
开发该课程的汪老师授课经验非常丰富。RVOS 课程不仅讲解生动,准备的实验案例也非常完善,而且还提供了配套的实验环境+ tools 包。
不过汪老师反馈说部分同学下载 tools 包以后,存在依赖缺失,无法正常运行的情况,看能否直接协助适配 Linux Lab,然后社区就花了两天抽空进行了适配,期间解决了多个 Bug。
适配完 Linux Lab 以后,无需再从微盘或云盘下载数百 M 的 tools,也无需下额外的镜像,也不用因为环境兼容问题而烦恼了。大家直接在自己机器上安装好 Linux Lab 就好,不挑系统(三大主流桌面系统都支持),只需要 Docker(Windows 下建议用 WSL)。
安装完 Linux Lab 以后,进入到 src/examples
目录下,通过下述三条命令即可体验适配完 Linux Lab 的 RVOS 实验代码:
$ git clone https://gitee.com/tinylab/rvos-lab rvos-lab
$ cd rvos-lab/code/os
$ make run
根据提示,执行完一个按 “CTRL+A X” 即可执行下一个。也可以参照代码仓库中的文档逐个开展实验。
部分实验效果摘录如下:
ubuntu@linux-lab:/labs/linux-lab$ cd src/examples
ubuntu@linux-lab:/labs/linux-lab/src/examples$ git clone https://gitee.com/wuzhangjin/riscv-operating-system-mooc rvos-lab
Cloning into 'rvos-lab'...
remote: Enumerating objects: 493, done.
remote: Counting objects: 100% (493/493), done.
remote: Compressing objects: 100% (271/271), done.
remote: Total 493 (delta 266), reused 404 (delta 214), pack-reused 0
Receiving objects: 100% (493/493), 40.52 MiB | 3.86 MiB/s, done.
Resolving deltas: 100% (266/266), done.
ubuntu@linux-lab:/labs/linux-lab/src/examples$ cd rvos-lab/code/os/
ubuntu@linux-lab:/labs/linux-lab/src/examples/rvos-lab/code/os$ make run
begin run ALL exercises for os samples .......................
for dir in 00-bootstrap 01-helloRVOS 02-memanagement 03-contextswitch 04-multitask 05-traps 06-interrupts 07-hwtimer 08-preemptive 09-lock 10-swtimer 11-syscall ; do make -C $dir run; done
make[1]: Entering directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/00-bootstrap'
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o start.o start.S
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o kernel.o kernel.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -Ttext=0x80000000 -o os.elf start.o kernel.o
riscv64-linux-gnu-objcopy -O binary os.elf os.bin
Press Ctrl-A and then X to exit QEMU
------------------------------------
QEMU: Terminated
make[1]: Leaving directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/00-bootstrap'
make[1]: Entering directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/01-helloRVOS'
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o start.o start.S
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o kernel.o kernel.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o uart.o uart.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -Ttext=0x80000000 -o os.elf start.o kernel.o uart.o
riscv64-linux-gnu-objcopy -O binary os.elf os.bin
Press Ctrl-A and then X to exit QEMU
------------------------------------
Hello, RVOS!
...
快来学习吧。
连 Linux Lab 也不想安装的同学们,可以直接陶一支免安装即插即用、1 分钟内即可开展实验的 Linux Lab Disk:某宝检索“Linux Lab真盘”即可,已适配 Deepin 20.2, Ubuntu 18.04/20.04/21.04。
如果大家觉得学完 RVOS 还不过瘾,其实还可以直接用 Linux Lab 来开展 RISC-V Linux 内核实验:
$ make B=riscv64/virt
$ make kernel
$ make boot
另外,Linux Lab 其实也已经支持市面几乎所有知名的 Linux 图书所采用的 Linux 内核版本,大家看书的时候别忘了启动 Linux Lab 把实验做一做:
Books | Versions | Authors |
---|---|---|
LDD3 | v2.6.10 | Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman |
LKD3 | v2.6.34.9 | Robert Love |
ULK3 | v2.6.11.12 | Marco Cesati, Daniel P. Bovet |
PLKA | v2.6.24.7 | Wolfgang Mauerer |
Books’ fullname and their resources:
- LDD3: Linux Device Drivers, Third Edition
- LKD3: Linux Kernel Development (3rd Edition)
- ULK3: Understanding the Linux Kernel, 3rd Edition
- PLKA: Professional Linux Kernel Architecture
以上为部分知名 Linux 图书列表,实际上 Linux Lab 支持的 Linux 内核版本覆盖 Linux v0.11, v2.6.x 一直到最新的 v5.x,仅 i386/pc 这块板子已经适配的内核列表就有这么多:
v2.6.10
v2.6.11.12
v2.6.12.6
v2.6.21.5
v2.6.24.7
v2.6.34.9
v2.6.35.14
v2.6.36
v4.6.7
v5.1
v5.2
实际上,对于同一块板子,更多的版本也只要简单的用 kernel-clone 功能就可以新增。
我们还支持包括龙芯 Linux、ARM Linux 等相关图书在内的其他书籍和课程,欢迎 Linux、C、汇编 等相关图书和视频课程作者联系我们免费协助适配,也欢迎社区同学们留言提出自己希望适配的相关图书和课程,或者直接自行开展适配工作,适配以后可以联系社区的 @tinylab 微信号申请一支 Linux Lab Disk 哈。
当然,图书或课程作者们也可以在开发课程的时候就采用 Linux Lab 开发课程配套实验案例,这样就不用浪费时间去答疑跟课程主体无关的实验环境安装部分,专注于内容设计就好,学生们在实验的时候也不会被各种杂七杂八的事情干扰,直接聚焦课程知识点、专心做实验就好。采用 Linux Lab 开发课程实验过程中如果遇到任何问题,也可以联系 Linux Lab 开源项目开发人员提供协助,联系方式还是 @tinylab 微信号。
欢迎感兴趣的同学们分享 RVOS 视频课程以及上述适配好的实验案例给周边的同学们。
再次感谢软件所与汪老师的精彩课程分享,也感谢社区小伙伴的辛苦适配工作。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |