大家好,我是写代码的篮球球痴,最近在网上看到一个非常有意思的项目,有大神把Linux内核移植到ESP32上,并成功运行。
在国外网站上,有很多人在议论这件事情
https://hackaday.com/2021/07/21/its-linux-but-on-an-esp32/
ESP32是乐鑫推出的一款针对智能设备的芯片,我之前在创业的时候有用这款芯片,它可以支持蓝牙、WIFI、可以运行FreeRtos嵌入式系统,是做物联网方向的不二人选。
价格便宜。
ESP32是没有MMU的,之前也有同学在群里讨论这个事情,说如果没有MMU怎么可以把Linux运行,这个可以查看Linux内核文档
https://www.kernel.org/doc/Documentation/nommu-mmap.txt
——
这个项目在哇酷开发者社区有详细的连载过程
juiceVm risc-v虚拟机在esp32上运行linux kernel
https://whycan.com/t_6899.html
在github上有开源这个项目的资料
https://github.com/juiceRv/JuiceVm/blob/master/README_zh.md
——
最近有幸和这个项目的作者Li.XiongHui取得联系,小编采访了这位大神,具体内容如下
1 能不能对自己做一个简单的自我介绍,包括学习,工作,爱好等等。
李雄辉
目前就职于某国产 MCU芯片公司,曾开发JUICE VM Risc-V虚拟机。6年以上开发经验,主要从事物联网开发、嵌入式软件开发、Linux内核开发、xboot、RTT等。JUICE VM 作者,极客。
2 你是怎么想到把Linux 移植到ESP32上的,你的这个举动引来了很多人的关注,并且登上了海外网站。
从事linux kernel内核和驱动时,偶然看到一个国外大佬(https://dmitry.gr/index.php?proj=07.+Linux+on+8bit&r=05.Projects)在AVR 8位机上运行了主线linux,想着以后我也可以实现。
3 我有看到不仅移植了Linux到你的系统上,还移植了RTT等其他嵌入式系统,你在这上面花费了非常多的时间和精力,这些都是你的爱好在驱动你吗?
是的,是兴趣爱好驱动的我。电子的神奇让我倍感兴趣,在实现了功能应用的同时也不断深挖底层。
4 有网友提到,在ESP32上运行的Linux 5.0 开机时间花费了将近6个小时,这部分你有没有一些改进的思路,比如更新硬件呢?
这部分问题可以从几个点去优化。
1,从虚拟机上做性能优化,但是需要大量的工作去解决优化后的平台兼容性问题。
2,需要从esp32使用更快的接口进行内存外挂,esp32上的空间不足以存放运行没有优化后的linux kernel主线镜像。
5 对于新入门的嵌入式开发者,你有什么想对他们说的,以你的经验来看,怎么做让你对这些知识更加融会贯通?
每个人都是从新入门过来的,也都会处于一个新领域的新入门状态,处于新入门状态不可怕,应该开心自己处于一个新入门的状态,这意味着我在接触一些新领域,在进步,将会发现新事物,接受新知识,获取新体会。
每次实现了一些功能应用后我们也应该关注它背后的技术和知识,不断深挖背后的原理。各个领域互相借鉴,不断让已有的知识尝试碰撞,摩擦出新的知识火花。
6 对于未来你有什么计划呢?我也有遇到很多人问我,自己的公众号会坚持到什么时候,那对你来说,你的这个项目会有更多其他的计划吗?
这个项目不会停止,后面会修改JuiceVM的处理机制,提高性能和输出更好的调试接口给用户。目前有一个基于GNU-C99标准的子集的C语言编译器在开发当中,命名为JuiceCC,欢迎关注,JuiceCC会在开发时产生一套IR(中间码)标准,JuiceVM也会使用这套标准进行搭配JuiceCC为定制化软件提供更高的优化能力和模拟运行性能。
最后,希望大家也喜欢这个项目,学习的同学可以从这个项目上学到知识。