30块钱的树莓派跑unix系统,源码全部开源,香

▌ 1、前言

之前做活动抽奖送的几个树莓派,但是因为好几个人都没有填写地址,所以就只能把东西寄回来给我,然后手痒自己玩了下,觉得这个东西确实很香,比一般的Linux开发板都好。

PICO

这个开发板可以玩很多东西

1 、运行pico-sdk

2、玩micropython

3、跑这个Fuzix系统

我这个文章只说Fuzix系统相关的,因为这个系统很小,喜欢的同学都可以自尝试学习。

▌ 2、硬件准备

  • 一个树莓派pico 开发板

  • 一个micro usb 线,用来给树莓派供电的,如果跑mcropython的话,还可以用来作为调试串口。

  • 一根usb线,跑Fuzix的时候,作为系统的登录终端。

▌ 3、软件准备

一个可以编译的ubuntu系统,可以装在vm上

▌3.1、SDK代码下载

▌3.1.1 pico-sdk下载

git clone git@github.com:raspberrypi/pico-sdk.git

▌3.1.2 tinyusb源码下载

下载这个之后,还需要下载tinyusb源代码,这个源代码默认在pico-sdk源码中,只不过上面的命令不能触发tinyusb 的源码下载。

tinyusb源代码:

git submodule update --init --recursive lib/tinyusb

上面的命令会比较慢,可以单独下载这个源码库,使用下面的命令:

git clone git@github.com:raspberrypi/tinyusb.git

▌3.1.2 Fuzix源码下载

git clone https://github.com/davidgiven/FUZIX.git

▌3.2、编译工具准备

▌3.2.1、cmake 安装

因为对cmake版本有要求,不能使用sudo apt install cmake 安装。、

从网站

http://distfiles.macports.org/cmake/

下载一个 3.13 的版本,然后传到ubuntu系统上,解压

$ tar -zxvf cmake-3.12.4.tar.gz
$ cd cmake-3.12.4
$ ./configure
$ make
$ sudo make install

▌3.2.2、gcc-arm-none-eabi安装

sudo apt-get install gcc-arm-none-eabi

▌3.3.3、其他需要的工具安装

sudo apt-get update -q
sudo apt-get install -y byacc
sudo apt-get install -y byacc automake   # FUZIX build deps
sudo apt-get install -y lwtools gcc6809
sudo apt-get install -y sdcc
sudo apt-get install -y cc65
sudo apt-get install -y m68k-uclinux-binutils m68k-uclinux-elf2flt m68k-uclinux-gcc

▌4、编译

先切换到树莓派分支

git checkout rpipico

编译之前,需要修改Makefile

diff --git a/Kernel/platform-rpipico/Makefile b/Kernel/platform-rpipico/Makefile
index 0d5e8a19..8c238770 100644
--- a/Kernel/platform-rpipico/Makefile
+++ b/Kernel/platform-rpipico/Makefile
@@ -1,4 +1,4 @@
-export PICO_SDK_PATH = /home/dg/src/pico/pico-sdk
+export PICO_SDK_PATH = /home/book/pico-sdk/build/fuzix.elf: ../version.c build/Makefile$(MAKE) -C build

然后到 Kernel/platform-rpipico目录中去执行命令

make world -j
./update-flash.sh

如果编译顺利,就会看到下面相关的文件

▌5、烧录

树莓派的烧录我觉得体验很好,如果再能加上一个复位按键就能更加完美了。

按下BOOTSET键开机,然后就会弹出一个盘符,往盘符里面放入我刚才说的那两个文件,设备会自动重启,这时候就完成烧录了。

▌6、系统体验

链接串口,链接串口可以有很多种方式,我用的是MobaXterm工具。波特率是 115200

开机日志:

FUZIX version 0.4pre1
Copyright (c) 1988-2002 by H.F.Bower, D.Braun, S.Nitschke, H.Peraza
Copyright (c) 1997-2001 by Arcady Schekochikhin, Adriano C. R. da Cunha
Copyright (c) 2013-2015 Will Sowerbutts <will@sowerbutts.com>
Copyright (c) 2014-2020 Alan Cox <alan@etchedpixels.co.uk>
Devboot
264kB total RAM, 160kB available to processes (15 processes max)
Enabling interrupts ... ok.
NAND flash, 1952kB physical 1296kB logical at 0x13018000: hda:
SD drive 0: no card found
Mounting root fs (root_dev=0, ro): warning: mounting dirty file system, forcing r/o.
OK
Starting /init
init version 0.9.0ac#1
Cannot open file
Current date is Thu 2021-03-11
Enter new date:

开机后需要你填写当时时间,才会继续下一步

Starting /init
init version 0.9.0ac#1
Cannot open file
Current date is Thu 2021-03-11
Enter new date: 2021-03-11
Current time is 11:34:54
Enter new time: 15:05:00^ ^n n   Fuzix 0.3.1>@<Welcome to Fuzixm mlogin:

然后填写用户名,用户名是 root,密码为空

login: rootWelcome to FUZIX.
#

显示当前时间:

# date
Thu Mar 11 15:07:15 GMT 2021
#

小????说话:

# cd usr
# ls
games
lib
man
# cd games
# ls
advent
cowsay
lib
# ./cowsay Fuzix_______
< Fuzix >-------\   ^__^\  (oo)\_______(__)\       )\/\||----w |||     ||
#

在 /bin 下面还有很多其他命令。

▌7、其他

还可以加一个SDCARD文件系统,具体实现可以看这篇文章

https://shumeipai.nxez.com/2021/03/03/how-to-get-started-with-fuzix-on-raspberry-pi-pico.html

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CoInitialize\CoCreateGuid\CoCreateInstance

CoInitialize是Windows提供的API函数&#xff0c;用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数&#xff08;除CoGetMalloc和内存分配函数&#xff09;之前必须初始化com库。 https://baike.baidu.com/item/CoInitialize/4114580?fraladdin CoCreateGui…

产品设计体会(8001)产品经理工作手册

产品经理的工作是最具挑战性的工作之一。产品经理职责描述产品经理的全部责任在于通过了解不断变化的市场需求和优化产品推向目标市场的全过程&#xff0c;将企业的不同组成部分凝聚成一个战略上一致集中的整体&#xff0c;同时将一项产品的价值最大化。产品经理的全部职责在于…

Oracle11gR2_ADG管理之恢复主库的truncate表实战

备库开启flashback database #关闭备库的同步 SQL> alter database recover managed standby database cancel;Database altered.SQL> select flashback_on from v$database;FLASHBACK_ON ------------------ NOSQL> alter database flashback on;Database altered.SQ…

为什么大家都只谈薪资,却不谈梦想?

说个薪资的问题&#xff0c;最近在帮一个朋友物色工作&#xff0c;当然&#xff0c;除了我那个朋友以外&#xff0c;也有挺多同学向我咨询offer薪资的问题。先说我那个朋友。高中毕业后去当兵&#xff0c;服兵役结束后去4s店修车&#xff0c;我车子的很多问题也会向他咨询&…

获取指定地址的值

C语言 —— 获取指定地址的值 int b *((volatile unsigned int *)0x0028FF1C);// 0x0028FF1C就是内存中的地址&#xff0c;根据自己需要指定 #include <stdio.h> #include <stdlib.h>int main() {int b *((volatile unsigned int *)0x0028FF1C);printf("b…

IAudioEndpointVolume

IAudioEndpointVolume https://docs.microsoft.com/en-us/windows/desktop/api/endpointvolume/nf-endpointvolume-iaudioendpointvolume-setmute

DataTable.Compute功能

DataTable.Compute具有这么多的功能 1&#xff1a;聚合函数”Sum()” 2&#xff1a;自由计算表达式“20*301” 3&#xff1a;bool表达式“12” 4&#xff1a;IFF逻辑表达式” IIF(20>1000, 0, 1)” //还支持IsNull&#xff0c;Trim&#xff0c;SubString等 一个小应用&#…

Linux下查看内存使用情况方法总结

Linux下查看内存使用情况方法总结转载于:https://www.cnblogs.com/cdyboke/p/8689270.html

差生的 8 年程序员总结

今年终于从大菊花厂离职了&#xff0c;离职前收入大概60w不到吧&#xff0c;在某乎属于比较差的&#xff0c;今天终于有空写一下自己的职场故事&#xff0c;也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了&#xff0c;也有更多事情做错了&#xff0c;在这里记…

关闭windows垃圾服务

Windows集成了许多功能和服务&#xff0c;所以在很多领域得以应用&#xff1b;但是有很多服务是我们个人用户所用不到的&#xff0c;开启只会浪费内存和资源&#xff0c;并且成为***和病毒***的靶子&#xff0c;而且&#xff0c;还影响启动速度和运行速度。关掉大部分没用的服务…

Python简单的抓取静态网页内容

import requests from bs4 import BeautifulSoup res requests.get(http://news.sina.com.cn/china/)#获取目标网页 res.encoding utf-8#抓取网页出现乱码 #print(res.text) soup BeautifulSoup(res.text,html.parser)#爬取网页 for news in soup.select(.news-item): if le…

SystemTray.cpp

SystemTray.cpp _tcscpy _tcscpy 把参2复制到参1并返回参1 _tcscpy是一个拷贝字符串&#xff0c;源字符串指针是strSource&#xff0c;有strcpy、wcscpy、_mbscpy三种类型&#xff0c;这三种形式都返回目标字符串。 函数原型 char *strcpy( char *strDestination, const cha…

直观感受电路信号波形:半波整流电路

前言电子电路的理论很抽象&#xff0c;所以多看电子电路的信号波形&#xff0c;对掌握理论知识非常有帮助。让我们通过形象的电路信号波形&#xff0c;直观地了解电路的世界&#xff01;半波整流电路半波整流电路&#xff0c;电路图很简单&#xff0c;通过一个二极管实现半波整…

【nodejs】安装browser-sync 遇到错误提示

首先我用的是mac电脑在我执行安装browser-sync时遇到如下问题&#xff1a; 因为不被允许所以我只能不安装全局了&#xff1a; 但是又出现了如下的新问题 纠结了半个小时&#xff0c;终于知道为什么会出现这个问题了&#xff0c; node只有--global or -g才是全局安装的包&#x…

本机获取Intel AMT IP地址的例子

转自&#xff1a;http://software.intel.com/zh-cn/blogs/2009/02/10/intel-amt-ip/?cidsw:51cto Intel AMT的IP地址设置有两种模式&#xff1a;静态IP和动态IP。 在动态IP&#xff0c;也就是DHCP自动分配的情况下&#xff0c;本机的操作系统起来后&#xff0c;Intel AMT的I…

ViceDinoSpecCtrl.cpp

tagCR_INSTALL_INFOA Struct Reference http://repo.isis.vanderbilt.edu/doxygen/gme/nightly/structtagCR__INSTALL__INFOA.html CWinApp::ExitInstance 由框架调用内Run成员函数以退出应用程序的此实例。 virtual int ExitInstance(); 返回值 应用程序的退出代码;0 表…

虚拟化之四:虚拟化备份策略已成数据安全的焦点!

随着虚拟化如潮流般的涌入&#xff0c;虚拟化越来越受到企业的关注和应用&#xff0c;随之而来的是使得现有的一系列数据备份和灾难恢复策略受到动摇。因为面对全新的虚拟化环境&#xff0c;这些策略明显已经无法满足用户的安全保障需求--一专家冷静的发表了如上的看法。这在过…

JAVA程序(阶乘10以内)

import java.util.Scanner; public class 阶乘 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println("输入一个数字"); int n sc.nextInt(); System.out.println("结果为&#xff1a;"f(n)); } public s…

VS_VERSION_INFO信息的读取

VC MFC编程版本信息控制 https://blog.csdn.net/u013329580/article/details/49151765 读取MFC资源中的版本信息 https://www.cnblogs.com/geminiv/archive/2012/10/24/2737288.html VS_VERSION_INFO信息的读取 https://blog.csdn.net/opahlu/article/details/8572776