- 用“芯”探核:龙芯派开发实战
- 胡伟武 杜安利 乔崇 叶骐宁等
- 2404字
- 2021-07-09 10:36:36
2.1 第一次上电启动
刚拿到龙芯派,面对一块接口繁多的电路板,你可能感觉无从下手。本节将从如何开机,到如何连接并使用各种外设,指导你玩转龙芯派。
2.1.1 上电检查与开机
此刻,面对龙芯派,你的心情应该是万分激动的吧。不过,请先别急。首先,我们需要检查一下电路板本身,以避免贸然上电带来不必要的损坏。请仔细检查电路板的两面有无明显的变形,电子元器件有无脱落,插针之间是否短路。
如果一切都没有问题,那么就可以准备第一次开机启动了。首先,让我们连接上12V-DC电源,本次开机,我们将只连接RS232串口作为基础的输入输出接口。在开机之前,请先参照下一小节对串口上位机进行配置。然后,你就可以按下电源按钮,等待电路板上的蜂鸣器发出“滴”的一声,龙芯派就成功开机了。
2.1.2 串口通信获知主板状态
上一小节,我们提到了“RS232串口”是本次启动时唯一的输入输出接口。那么串口到底是什么呢?在现代个人计算机出现之前的电传打字机时代,串口就曾被用于连接大型中央计算机与电传终端,用于传输按键输入与纸或屏幕上的字符输出。后来,伴随着个人计算机的普及,串口也被用于连接当时的鼠标、键盘等外设,直到被大家所熟知的USB取代。由于串口协议简单、可靠性高,许多嵌入式设备(包括龙芯派)仍把它作为交互与调试手段。在龙芯派上,其应用原理仍然没有偏离电传打字机时代的设计,即作为“电传打字机”的个人计算机(上位机)向作为“中央计算机”的龙芯派(下位机)发送输入输出请求,如图2.1所示。
图2.1 上位机与下位机通过串口通信
由于现在的个人计算机上很难见到串口,所以需要使用USB-RS233母头转接器对龙芯派进行调试,如图2.2所示。转接器的一端连接上位机的USB接口,另一端连接龙芯派的RS232公头。
图2.2 USB-RS233母头转接器
在作为上位机的Linux操作系统下,主流转接线所使用的CH340/FT232/PL2303芯片均有良好的驱动支持。接下来,让我们插上USB端,一起来配置上位机吧。
Linux下的串口工具已经不止Minicom一个,还包括图形界面的cutecom、PuTTY,命令行界面的picocom等。下面列举了几种常用的串口工作的通信方法,读者可以根据自己的需求选择合适的工具。
(一)使用PuTTY进行串口通信
首先,在Linux上位机上安装一个叫作PuTTY的开源软件,它可以直接从发行版的软件仓库中获取,在使用apt作为包管理器的发行版中使用sudo apt get install putty命令进行安装。
然后,通过sudo putty命令启动PuTTY。如果你不想以root权限启动,那么需要将当前用户加入“uucp”或“dialout”组(视发行版而异)以获得串口访问权限。
打开PuTTY,在图形界面中配置串口参数。首先,将“Connection Type”设置为“Serial”,即串口。然后,将“Serial line”改为“/dev/ttyUSB0”(注意大小写)。如果上位机只插了一个转换器,那么“Serial line”恒为“/dev/ttyUSB0”,否则编号可能有变化,你可以配合内核的dmesg输出来获知编号,并且将“Speed”改为“115200”。此处的Speed指串口作为输入输出接口的比特率,如果出错可能导致接下来出现乱码等问题;115200这个数据是比较通用的比特率,被配置在龙芯派的固件中不可修改。配置完成后如图2.3所示。
图2.3 配置串口
接下来,我们就可以单击右下角的【Open】按钮,打开控制台,迎接你的将是一个全黑的输入窗口,就像曾经的电传打字机终端一样,如图2.4所示。
图2.4 串口控制台
在我们按下龙芯派的启动/复位键后,不出意外,窗口中就会开始输出大量字符。你是不是每一个字都看得懂,但是不明白它们在一起是什么意思?这很正常。让我们来梳理一下在龙芯派上Linux启动的几个环节。
在你按下开机键的一瞬间,CPU复位后,便从龙芯派上的SPI Flash中开始取指运行。而SPI Flash主要存放PMON的代码。PMON是一个Bootloader,承担了龙芯平台下类似于PC机的BIOS功能。PMON用于初始化CPU的时钟、内存及其他部件,同时提供一些基础启动服务,并且从存储介质中加载下一步需要运行的操作系统内核,如图2.5所示。了解每个步骤的状态以及用途,可以帮助你诊断可能发生的问题,也可以帮助你认识龙芯处理器的软件架构。
图2.5 串口开始打印
启动的时候,首先你会看到类似图2.6所示的输出,这是PMON在配置CPU的时钟、TLB等部件。如果能有如下输出,就证明CPU本身基本正常。
图2.6 串口输出
然后,PMON会初始化内存,对内存进行测试,并且将自己拷贝进内存,执行结果如图2.7所示。内存不稳定是在龙芯平台上比较常见的问题,如果卡死在这里,就代表硬件或基础的供电存在问题。
图2.7 PMON内存初始化
然后,PMON会继续初始化PCI等设备,执行结果如图2.8所示,创建各种结构给内核传参并且加载内核。不过本次启动,就让我们连续按键盘的【C】键以中断加载内核的过程,进入PMON的命令行,然后在命令行中输入halt关机。如果错过了这次机会,强行断开电源也是安全的。
图2.8 初始化设备
(二)使用Minicom进行串口通信
无论在应用还是软件开发过程中,我们都会经常用到串口,比如调试交换机和路由器、查看嵌入式设备的输出等。前文已经介绍过PuTTY,而Minicom就是一款命令行模式的串口通信软件,有点像Windows下的超级终端,但是功能更加强大。使用Minicom操作串口设备(如 /dev/ttyUSB0)需要root权限,所以在执行Minicom时需要加上sudo。
Minicom最基础的功能就是通过串口查看设备的输出和给设备发送命令,首先在Linux上位机中安装Minicom,在龙芯派上也可以使用Minicom,但是我们一般都是在PC上通过串口调试开发板时才会用,通常不会直接在开发板上使用它。
在Linux上位机的终端执行下面的命令安装Minicom。
● 在Fedora系统的上位机执行以下命令。
sudo yum install minicom
● 在Ubuntu/Debian系统的上位机执行以下命令。
sudo apt-get install minicom
然后使用Minicom打开串口,注意在Linux中操作硬件外设需要root权限。
sudo minicom -D /dev/ttyS3 Welcome to minicom 2.7.1 OPTIONS: I18n Compiled on May 3 2018, 15:20:11. Port /dev/tty8, 20:52:54 Press CTRL-A Z for help on special keys
按住【Ctrl+A】组合键,松开后再按住【Z】键,会打开Minicom主界面,如图2.9所示。
图2.9 Minicom主界面
按住【P】键进入串口参数设置界面,串口的波特率默认为115200,如图2.10所示。
图2.10 设置串口波特率
在Command Summary页面,按住【S】键可以进入上传/下载文件界面,上传文件界面如图2.11所示。
图2.11 上传文件界面
根据需要可以选择列表中的任意一种,同时在串口另一端需要使用相同的协议进行通信。比如,选择zmodem进行上传文件时,会提示我们选择要传输的文件,然后确认并开始传输,如图2.12所示。
图2.12 传输界面
最后,使用结束,按住【Ctrl+A+Q】组合键退出串口工具。