飞腾派运行ArceOS

1 硬件准备

  • 飞腾派板子 structure

  • 一张SD卡和一个读卡器,用于安装飞腾派官方镜像

  • USB转TTL转换器和串口线,用于将飞腾派串口和电脑USB接口连接在一起,方便收发调试信息和文件

2 烧录镜像

  • 如果你不只是在飞腾派运行Arceos,还需要在飞腾派上运行Ubuntu,则需要下载如下镜像:

    Ubuntu镜像地址:(在系统镜像>1-Ubuntu...>4GB>之前版本中的sd_boot_xfce_4GB_230726.img.tar.gz)

  • 需要注意的是烧录Ubuntu镜像需要至少16G的SD卡,如果你的SD卡不足16G,或者只是想运行Arceos,则无需下载Ubuntu镜像,此时只需下载uboot镜像即可。由于uboot镜像占用的空间只有4MB左右,可以认为对SD卡的容量没有要求:

    uboot镜像地址:(在4-系统源码>4-系统源码>uboot固件>fip-all-4GB-250321.bin)

  • 如果你电脑主机上运行的是Windows,需要下载烧录工具(Win32DiskImager2.0.1.8.exe)

    烧录工具的地址:(在飞腾派v2.1资料包(资料包太...>9-工具包中的Win32DiskImager2.0.1.8.exe)

  • 如果你电脑主机上运行的是Linux,直接使用dd命令即可

3 编译Arceos

ArceOS代码地址:https://github.com/arceos-usb/arceos_experiment/tree/usb-camera-base(注意分支)

git clone https://github.com/arceos-usb/arceos_experiment.git	# 下载源码
cd arceos_experiment
make A=apps/usb-hid PLATFORM=aarch64-phytium-pi LOG=trace	# 编译镜像,生成的bin文件在apps/usb-hid目录下

4 运行Arceos

注:uboot支持多种方法启动Arceos,如从U盘启动、从SD卡启动、从局域网启动。如果你是在调试或开发Arceos,建议从局域网启动,这样可以避免频繁插拔SD卡或U盘。

  1. 飞腾派上电启动,把烧录了uboot的SD卡插到飞腾派上。如果选择了从U盘启动,还需要把装有arceos的镜像文件的U盘插在飞腾派的usb插槽上(靠近风扇的蓝色口的)。用USB转TTL转换器把飞腾派与电脑相连接,启动电脑上的远程连接软件(如果是Windows系统,可以使用MobaXterm;如果是Linux系统,可以使用minicom命令),波特率设置为115200

  2. 串口接法:接8、10、12号引脚位置,如图所示(8号代表TX,接RX;10号代表RX,接TX;12号接地线)

structure
  1. 在uboot倒计时结束前按任意键进入手动引导
    • 如果是从U盘启动

      输入usb start ,启用USB驱动来识别插入的USB设备(读U盘中的arceos)

      structure

      输入fatload usb 0 0x90100000 usb-hid_aarch64-phytium-pi.bin,从插入的USB设备上下载ArceOS镜像

      structure
    • 如果是从局域网启动

      在电脑端,要安装tftp服务

      sudo apt install tftpd-hpa
      vim /etc/default/tfptpd-hpa	# 配置tftp服务
      # 需要把生成的Arceos镜像复制进配置文件所指定的tftp目录里
      

      在飞腾派端,使用tftpboot命令加载Arceos镜像

       echo $ipaddr	# 检查ip地址满足局域网要求
       setenv ipaddr x.x.x.x	# 如不满足,需先设置ip地址
       setenv serverip x.x.x.x
       tftpboot 0x90100000 xxx.bin
       dcache flush
      
    • 输入go 0x90100000加载ArceOS镜像

      structure

      (这里是没有添加LOG=debug)

    • 如果是在apps/cli目录下编译的出来的arceos镜像,便可以看到ArceOS启动成功,进入到了shell界面

更直观方便的实验方法,在linux终端里面测试USB返回的debug信息

Usbipd是一种将USB设备连接到WSL上面的工具,可以将串口返回的信息映射到WSL终端里面,方便实验

下载流程如下

打开powershell,输入winget search usbipd
找到usbipd工具之后,输入winget install usbipd
下载usbipd。
下载完成之后,输入usbipd list,查看主机上连接好的串口ID号
输入sudo usbipd bind -b 2-2,实现串口设备全机器共享,
输入usbipd attach --wsl -b 2-2,实现串口返回信息映射到wsl终端
>(2-2是串口ID号,具体依据个人电脑上显示的串口ID号)

这里需要注意的是,主机上只能留下一个linux终端,不然串口返回的信息不清楚该映射到哪一个终端界面

打开linux终端,输入sudo chmod 777 /dev/ttyUSB0,赋予串口映射到wsl上的权限,

(ttyUSB0通常表示接到计算机的第一个串行设备,在个人主机上具体是多少,可以通过输入 ls -l /dev 来查看)

然后请你下载python3,同时下载xmodempyserial
方便加载脚本的py文件的运行

在项目根目录下输入:

make A=apps/uvc PLATFORM=aarch64-phytium-pi LOG=trace chainboot

前面的make是将整个arceos内核与USB驱动给编译好,
后面的chainboot用来执行一个arceos_experiment目录中的一个脚本文件,将编译好的内核文件通过SD卡中的Uboot加载到飞腾派上

在看到tools/….出来之后,给飞腾派上电,同时确保鼠标已经插到了飞腾派上
等待uboot加载完之后,看到Phytium-Pi#出现, 输入go 0x90100000,arceos内核开始运行,接着usb驱动的debug信息