[发明专利]一种shell的实现方法有效
| 申请号: | 201910243881.2 | 申请日: | 2019-03-28 |
| 公开(公告)号: | CN110007923B | 公开(公告)日: | 2022-12-06 |
| 发明(设计)人: | 程招招;罗侍田;陈家明;古小健;王建忠 | 申请(专利权)人: | 深圳市创联时代科技有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/30 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 518000 广东省深圳市宝*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 shell 实现 方法 | ||
本发明公开了一种shell的实现方法,包含以下步骤:步骤a1,通过宏指定需要添加的shell信息的类型;步骤a2,通过链接脚本编译步骤a1中的shell信息到相应的段,并编译生成相应的elf文件;步骤a3,解析步骤a2中的elf文件,提取并删除所述elf文件中的所有shell信息,将shell信息添加等级并排序后再重新添加到elf文件中,然后利用elf文件生成相应的bin文件;步骤a4,调用执行相应的shell信息。本发明的有益效果是:查找速度快:该方法所添加的shell信息是有序的,所以查找可以通过二分法或其他方法快速定位,占用空间少,丰富了shell命令的多样性。
技术领域
本发明涉及嵌入式系统软件开发技术领域,特别涉及一种shell的实现方法。
背景技术
Shell是指“提供使用者使用界面”的软件(命令解析器),它接收用户命令,然后调用相应的应用程序以满足用户的需求。Shell管理用户与系统之间的交互,可以简单的描述为:shell等待用户输入,向系统解释用户的输入,并且处理各种各样的系统输出结果。
而shell命令是嵌入式开发中常用的手段,目前shell的实现方式有:
1.通过链表的方式实现,该方法将shell信息填充在一个表格中,并将shell信息表通过链串起来,shell的函数查找通过遍历链表实现。
2.通过编译器直接生成相应的段实现,即通过将shell函数信息表编译到固定的段,在连接脚本中找到确定该段的起始结束地址,shell信息的获取也是通过遍历整个表格。
3.执行带符号表的elf文件,通过读取解析elf文件获取shell函数的信息。elf在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储的标准文件格式。
以上三种实现方式均存在缺点和不足:1.通过链表的方式实现,shell使用复杂,管理链表使用内存较多,shell函数比较单一,添加一个shell命令时,需要添加数组,还需要调用安装命令,使用起来很不方便;2.通过编译器生成相应的段实现,其中典型的u-boot就是这种方式实现的,缺点是函数单一,shell信息未经排序,shell函数查找需要遍历整个表格查找过程比较慢;3.通过查找elf文件符号表的方式占用空间大,不适合嵌入式开发。
发明内容
为克服上述背景技术shell实现方式中的缺陷和不足,本发明提出一种shell的实现方法,其功能是通过如下技术方案实现的。
一种shell的实现方法,包含以下步骤:步骤a1,通过宏指定需要添加的shell信息的类型;步骤a2,通过链接脚本编译步骤a1中的shell信息到相应的段,并编译生成相应的elf文件;步骤a3,解析步骤a2中的elf文件,提取并删除所述elf文件中的所有shell信息,将shell信息添加等级并排序后再重新添加到elf文件中,然后利用elf文件生成相应的bin文件;步骤a4,调用执行相应的shell信息。
进一步的,所述步骤a1中,shell信息分为常规shell命令,拓展shell和全局函数调用三个类型。
进一步的,所述常规shell的命令参数由命令执行者解释,具备固定的函数原型。
进一步的,所述拓展shell命令可以执行任何函数,拓展shell的命令参数由shell模块进行参数解析,调用拓展shell函数时需要按照一定格式输入参数。
进一步的,所述全局函数所述全局函数是程序中常规shell命令和扩展shell命令未涵盖的全部函数,调用全局函数时,参数由shell模块进行参数解析,shell命令行需要按照一定格式输入参数。
进一步的,在所述步骤a2中,将shell信息编译到不同的段中的具体过程为:首先设置常规shell的变量、函数、帮助信息和拓展shell的变量、函数、帮助信息,然后在链接脚本中指定保存的段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市创联时代科技有限公司,未经深圳市创联时代科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910243881.2/2.html,转载请声明来源钻瓜专利网。





