shell原理和问答机制引入-1.16.ARM裸机第十六部分视频课程笔记

16.1、shell是什么?
(1)用户命令接口, 通过shell执行一系列命令间接的调用系统提供的服务。shell命令屏蔽了服务实现的具体细节,是一种人机交互接口,如:windows中的操作窗口也可以看成是shell,点击操作就是执行了shell的一条命令,命令对应了系统的一种服务。linux中的命令行就是shell,每一个命令背后就是一个程序或服务。在linux中也可称为脚本语言,window中称为批处理。
(2)shell是一种问答式的交互方式。系统处理流程:用户输入命令—系统解析命令—系统执行相应操作—返回结果。

16.2、shell 在s5pv210上的简单实现
(1)构造系统命令集,使用字符串二维数组存储预设的主命令集
(2)读取用户命令使用到scanf函数 得到字符串。
(3)分割得到的字符串,用户命令格式如:ls -l -t ,这个是输入的原始命令,包括主命令ls 两个参数-l、-t,用空格隔开。现在需要根据空格分割成三个字符串。 使用一个二维数据分别存储,如:cmd[3][10]= {“ls”,"-l","-t"}; [3]表示第一维代表一个字符串的首地址,如:ls,[10]代表二维,表示1个字符串有10个字节空间。
(4)对命令进行解析—把用户分割得到的主命令即cmd[0],与 预设的主命令集进行一一匹配。匹配成功跳转到预设的对应的主命令的程序入口执行程序。在此程序内部再通过匹配主命令的参数,进行相应的操作。

在这里插入图片描述

16.8、shell实现开机倒计时自动执行命令
代码逻辑:
(1)计时功能,定时器来完成。可以用看门狗中断模式产生定时器中断,设置中断时间为1s。
(2)使用到中断模块init.c,init.h
(3)中断初始化(系统中断控制初始化,看门狗中断初始化)
(4)设置全局变量g_time一个初值,每次定时器中断时间到,在中断处理函数中g_time减一。
(5)第一种情况,main函数中判断g_time是否减到0,如果已经减到0,则执行相应命令。
(6)第二种情况,在g_time减为0之前,按键盘任意键,则停止中断并直接执行相应的命令。

要点:初始化话全局变量为0,如果不清理bss段的话,全局变量初始化为0的内存空间是一个随机数。以为初始化为0的全局变量是被放到bss段中的。因此程序运行前必须要对bss段进行清零。本程序中在汇编代码start.S中实现bss段清理。

16.9、初步实现环境变量(可以看成程序运行后加载的变量值
在内存中实现环境变量,环境变量就好像程序的全局变量一样,影响程序的执行。如uboot中设置的参数也看成是设置环境变量,这个环境变量修改后是保存到flash中永久保存的,下次开机后自动get环境变量的值赋值给程序中所需的变量。从而可动态的改变这些值。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值