发布时间:2020-10-05 18:05 原文链接: AWorks编程:Shell交互界面(一)

嵌入式操作系统中,图形界面占用的内存资源较大,通常情况下会使用Shell控制台作为交互界面ZLG AWorks提供了可视化、可配置的Shell控制台环境,允许在程序运行中配置系统信息,利于系统的维护与管理,本文为你详细介绍。

1shell简介

1.1 什么是shell

Shell是操作系统的命令行外壳,提供了用户与内核进行交互操作的一套接口,它接收用户输入的命令并把它送入内核去执行,方便了用户调试程序和查看系统信息。

1.2 Shell的发展历史

在计算机发展的早期,没有操作系统,没有图形界面也没有鼠标和键盘。那个时候的计算机只是一个庞大的机器,人们使用吞吐纸带向计算机输入命令,编写程序。

后来随着计算机不断发展,操作系统诞生,键盘和显示器成为计算机的标准配置,但此时的操作系统还不支持图形界面,那么用户怎么和计算机打交道呢?计算机先驱们开发了一种终端程序作为系统的用户界面,它接受用户的输入命令,解释之后,传递给操作系统,并将系统执行后的输出结果显示在终端上。这个程序像一层外壳包裹在操作系统的外面,所以它被称为Shell。

Shell作为用户和操作系统内核的交互接口,也在不断的发展迭代,后来由大名鼎鼎的Unix系统发扬光大,诞生了多种shell软件,如bsh、bash、csh、ksh、zsh。这些shell功能都非常强大,不仅可以供用户输入命令,它们还都支持shell编程语言,可以完成复杂的操作。这些shell目前都可以在Unix系统上使用。

80年代,图形界面操作系统出现。90年代,windows图形界面系统逐渐占领市场,曾经统治计算机交互界面十年之久的Shell逐渐暗淡,但它并未因此退出操作系统。在windows上,cmd 就是一种shell,同时在 windows 的后续版本发展出更强大的 powershell。

2AWorks Shell

AWorks OS作为生态系统的核心,为用户提供了操作系统级别的服务,例如:多任务、信号量、Shell、消息队列、消息邮箱等,还包含了大量的组件,而Shell组件作为 AWorks 系统的命令行交互界面,主要用于调试、查看系统信息。

Shell组件开启后,在AWorks系统内会建立一个永不停息的 shell 任务,Shell任务通过设备读写API,实现对数据的实时处理。用户在交互界面输入命令,shell任务通过设备读API读取输入内容,解析输入命令,然后自动扫描shell命令函数表,定位命令的位置,执行函数表中对应的函数,并通过设备写API将函数的返回结果发送到PC。

图 1 AWorks Shell工作原理

AWorks Shell组件有两种工作方式:Shell Serial(串口模式)Shell Telnet(网络模式)。

2.1 Shell Serial工作模式

在Shell Serial工作模式下,Shell运行于开发板上,硬件串口作为输入输出设备,在PC和开发板之间建立通信。

使用Shell Serial需要在aw_prj_params.h文件中开启串口设备(默认使用串口1)和串口shell组件,如 程序清单 1和程序清单 2 。

程序清单1 开启串口1外设

程序清单2 开启串Shell组件

通过串口工具将开发板和PC连接,在PC上打开一个Shell终端调试软件(常用软件:XShell、SecureCRT),建立串口连接。编译SDK将固件烧写到开发板,启动程序后,按下回车键,AWorks Shell Serial 命令界面效果如图 2。

图2  AWorks Shell Serial命令界面