CN113961495A - 一种Linux系统串口功能禁用的方法 - Google Patents

一种Linux系统串口功能禁用的方法 Download PDF

Info

Publication number
CN113961495A
CN113961495A CN202111226459.XA CN202111226459A CN113961495A CN 113961495 A CN113961495 A CN 113961495A CN 202111226459 A CN202111226459 A CN 202111226459A CN 113961495 A CN113961495 A CN 113961495A
Authority
CN
China
Prior art keywords
serial port
parameter
console
parameters
kernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111226459.XA
Other languages
English (en)
Inventor
王成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hisense Broadband Multimedia Technology Co Ltd
Original Assignee
Hisense Broadband Multimedia Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hisense Broadband Multimedia Technology Co Ltd filed Critical Hisense Broadband Multimedia Technology Co Ltd
Priority to CN202111226459.XA priority Critical patent/CN113961495A/zh
Publication of CN113961495A publication Critical patent/CN113961495A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3812USB port controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种Linux系统串口功能禁用的方法,所述方法包括:调用Linux内核中的环境变量,获取环境变量中的串口开关参数,根据串口开关参数更改内核启动参数中的控制台参数;将更改后的控制台参数传递至Linux内核中,调用函数控制对应串口的动态开关。本申请修改Linux内核中的UBOOT,根据UBOOT的环境变量中开启/关闭串口的串口开关参数来调整内核启动参数中的控制台参数,Linux内核根据调整后的控制台参数使控制台映射给对应串口,动态打开串口打印,或者使控制台映射给其他虚拟端口,动态关闭串口打印,使得Linux系统的串口输出动态开启或关闭,且方法简单、方便,无需深入了解Linux系统。

Description

一种Linux系统串口功能禁用的方法
技术领域
本申请涉及嵌入式设备技术领域,尤其涉及一种Linux系统串口功能禁用的方法。
背景技术
串口是嵌入式设备的主要调试工具,通常会有很多设备信息从串口输出,有些设备处于安全考虑,需要关闭串口功能,防止重要信息泄露,同时还要求能够动态开启串口功能,当设备出问题是便于定位问题。
目前基于Linux的嵌入式设备串口功能禁用方法是通过改变镜像源码来实现的,一旦工程编译完成,串口的开启/关闭状态已经确定,程序运行过程中无法改变。
发明内容
本申请实施例提供了一种Linux系统串口功能禁用的方法,以解决目前嵌入式设备的串口开关功能在程序运行过程中无法改变的问题。
本申请提供了一种Linux系统串口功能禁用的方法,包括:
调用Linux内核中的环境变量;
获取所述环境变量中的串口开关参数;
根据所述串口开关参数更改内核启动参数中的控制台参数;
将更改后的控制台参数传递至所述Linux内核中,调用函数控制对应串口的动态开关。
本申请提供的Linux系统串口功能禁用的方法包括:调用Linux内核中的环境变量,获取环境变量中的串口开关参数,根据串口开关参数更改内核启动参数中的控制台参数,将更改后的控制台参数传递至Linux内核中,调用函数控制对应串口的动态开关。本申请修改Linux内核中的UBOOT,根据UBOOT的环境变量中开启/关闭串口的串口开关参数来调整内核启动参数中的控制台参数console,Linux内核根据调整后的控制台参数console使控制台映射给对应串口,动态打开串口打印,或者使控制台映射给其他虚拟端口,动态关闭串口打印,如此能够使Linux系统的串口输出能够动态开启或关闭,且方法简单、方便,无需深入了解Linux系统。
附图说明
图1为根据一些实施例的Linux系统的结构框图;
图2为本申请实施例提供的一种Linux系统串口功能禁用的方法的流程图。
具体实施方式
为便于对申请的技术方案进行描述,以下首先在对本申请所涉及到的一些概念进行说明。
为了使本技术领域的人员更好地理解本公开中的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
图1为根据一些实施例的Linux系统的结构框图。如图1所示,Linux系统一般包括内核、中间层与应用层,内核是靠近硬件的底层,且内核是Linux操作系统常驻内存部分;内核是一段计算机程序,这个程序直接管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等,所有的计算机操作都要通过内核传递给硬件。中间层是内核之外的shell层,即操作系统的系统程序部分;应用层是最高层,即用户程序部分。
为了方便调用内核,Linux将内核的功能接口制作成系统调用,通过系统调用这个接口,Linux将上层的应用与下层的内核分离,隐藏了底层的复杂性,也提高了上层应用的可移植性。
Uart(Universal Asynchronous Receiver/Transmitter,串口)是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,Uart用来与PC进行通信,包括与监控调试器和其他器件,如EEPROM通信。
在嵌入式Linux系统中,串口被看成终端设备。终端就是处理计算机主机输入输出的一套设备,它用来显示主机运算的输出,并且接受主机要求的输入,典型的终端包括显示器、键盘套件、打印机、打字机套件等。
终端可分为本地终端、用串口连接的远程终端与用TCP/IP承载的远程终端,本地终端是用VGA连接主机和显示器,用PS/2或USB连接主机和键盘,这样的一个显示器/键盘组合;通过串口线把主机接到另外一个有显示器和键盘的主机,通过运行一个终端模拟程序,比如“Windows超级终端”来将这台主机的显示器和键盘借给串口对端的主机。用TCP/IP承载的远程终端类似telnet/ssh这般。
本地终端与用串口连接的远程终端都是在本地直接关联了物理设备,比如VGA、PS/2、串口等,这类终端叫做物理终端;用TCP/IP承载的远程终端在本地没有关联任何物理设备,这类不直接关联物理设备的终端叫做伪终端。
目前基于Linux的嵌入式设备串口功能禁用方法是通过改变镜像源码来实现的,具体地,Linux4.4 menuconfig中,通过使能/关闭“Enable support for printk”来开启或关闭内核打印“printk”。
---Configure standard kernel features(expert users)
[*]Multiple users,groups and capabilities support
[*]sgetmask/ssetmask syscalls support
[*]Sysfs syscall support
[]Sysctl syscall support
[*]Load all symbols for debugging/ksymoops
[*]Include all symbols in kallsyms
[*]Enable support for printk
[*]BUG()support
[*]Enable ELF core dumps
[*]Enable PC-Speaker support
[*]Enable full-sized data structures for core
[*]Enable futex support
[*]Enable eventpoll support
[*]Enable signalfd() system call
[*]Enable timerfd() system call
在inittab文件中,“::askfirst:/sbin/getty-L ttys0 115200 vt100”用来初始化用户态串口打印,将此行屏蔽/打开来关闭/开启用户串口打印。
::sysinit:/usr/etc/init.d/rcs
::askfirst:/sbin/getty-L ttys0 115200 vt100
但是,通过镜像源码实现串口功能禁用时,一旦工程编译完成,串口的开启/关闭状态已经确定,程序运行过程中无法改变。为了解决这一问题,本申请修改UBOOT,根据环境变量中开启/关闭串口的开关来调整bootargs中的控制台参数console,以动态控制串口的开启/关闭功能。
图2为本申请实施例提供的一种Linux系统串口功能禁用的方法的流程图。如图2所示,本申请实施例提供的Linux系统串口功能禁用的方法包括:
S100:调用Linux内核中的环境变量。
从技术层面讲,内核是硬件与软件之间的一个中间层,作用是将应用层程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。内核是一个资源管理程序,负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配到各个系统进程。
UBOOT是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、X86/68K、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。
UBOOT的环境变量主要有bootcmd与bootargs,bootcmd是自启动时默认执行的一些命令,可以在当前环境中定义各种不同配置,不同环境的参数设置;bootargs是环境变量中的重中之重,实质是uboot传给内核的参数。
S200:获取环境变量中的串口开关参数。
UBOOT环境变量用来存放启动参数、启动命令等信息,本申请在环境变量中增加开启/关闭串口的参数console_onoff=on/off,可使用setenv命令将串口开关参数console_onoff设置为第一参数或第二参数,第一参数可为开启参数,第二参数可为关闭参数。例如,使用setenv命令将串口开关参数console_onoff设置为on,此时表明串口功能打开;使用setenv命令将串口开关参数console_onoff设置为off,此时表明串口功能关闭。
S300:根据串口开关参数更改内核启动参数中的控制台参数。
Linux内核的内核启动参数bootargs主要包括Root、Rootfstype、Console、Mem、Mtdparts,其中,Root用来指定rootfs(文件系统)的位置,例如rootfs=/dev/mtdblock5表示文件系统存放在/dev/mtdblock5中。
Rootfstype要跟root配合使用,用来指定文件系统类型,常用的嵌入式文件系统为jffs2、squashfs、ubifs等。
Console为控制台参数,console=ttyAMA0,115200,表示使用串口0作为控制台设备,波特率为115200。显示系统消息的终端就叫控制台,Linux默认所有虚拟终端(附加在物理终端之上,用软件方式虚拟实现,CentOS默认启用6个虚拟终端,对应的文件是/dev/tty#)都是控制台,都能显示系统消息。另外,对于那些专门用来模拟终端设备的程序,我们也可以称之为控制台console,像gnome-terminal、urxvt、mlterm、xterm等软件,都可以称之为控制台。
整个DDR(Double Data Rate,双倍速率同步动态随机存储器)被划分为两部分:系统内存与mmz,Mem表示整个DDR的大小,mmz表示mmz区域大小,需要根据单板配置及内存占用情况合理配置mem和mmz的大小。
Mtdparts用来指明flash分区划分格式,例如mtdparts=hi_sfc:1m(boot);4M(baseparam),4M(logo),8M(kernel),96M(rootfs),-(otuers);hi_sfc表示flash类型,4M表示分区大小为4Mbytes,boot、baseparam等是分区名称。
获取到环境变量中的串口开关参数console_onoff后,根据该串口开关参数console_onoff更改bootsrgs中的控制台参数console,如当串口开关参数console_onoff为第一参数时,将控制台参数console更改为第一驱动线程,指定控制台使用第一驱动线程;当串口开关参数console_onoff为第二参数时,将控制台参数console更改为第二驱动线程,指定控制台使用第二驱动线程。
S400:将更改后的控制台参数传递至Linux内核中,调用函数控制对应串口的动态开关。
根据串口开关参数console_onoff更改控制台参数console后,将更改后的控制台参数console传递至Linux内核中,之后调用函数控制对应串口的动态开关。即当串口开关参数console_onoff=on时,指定控制台参数console=ttyAMA0,115200,系统日志会从串口0打印而出;当串口开关参数console_onoff=off时,指定控制台参数console=tty1或console=ttyx,系统日志无法从串口0打印,从而起到了禁用串口打印的效果。
在Linux中,/dev/ttyX代表物理终端,其中/dev/tty1~/dev/tty63代表的是本地终端,也就是接到本机的键盘、显示器等可以操作的终端。Linux内核初始化时会生成63个本地终端,当前使用的终端即为焦点终端。
/dev/console用来表示焦点终端,往/dev/console中写入数据时,会显示在系统当前的焦点终端上。/dev/console本质是全局变量,如果当前焦点终端是/dev/tty4,那么/dev/console指向的就是/dev/tty4。
在一些实施例中,可在Linux系统启动时,直接获取Linux内核中的环境变量,根据环境变量中的串口开关参数console_onoff设置内核启动参数中的控制台参数,根据设置的控制台参数控制对应串口的动态开关,从而在Linux系统启动时起到禁用某些串口的效果。
在一些实施例中,还可在Linux系统启动完成后,需要开启或关闭某些串口时,获取Linux内核中的环境变量,根据环境变量中的串口开关参数console_onoff修改内核启动参数中的控制台参数,根据修改后的控制台参数控制对应串口的动态开关,从而在Linux系统启动完成后起到禁用某些串口的效果。
本申请提供的Linux系统串口功能禁用的方法包括:调用Linux内核中的环境变量,获取环境变量中的串口开关参数,根据串口开关参数更改内核启动参数中的控制台参数,将更改后的控制台参数传递至Linux内核中,调用函数控制对应串口的动态开关。本申请修改Linux内核中的UBOOT,在UBOOT的环境变量中增加串口开关参数console_onoff,根据串口开关参数console_onoff的开关来调整内核启动参数中的控制台参数console,Linux内核根据调整后的控制台参数console使控制台映射给对应串口,动态打开串口打印,或者使控制台映射给其他虚拟端口,动态关闭串口打印,即当串口开关参数console_onoff=on时,将控制台参数设置为console=ttyAMA0,115200,使控制台映射给串口0,打开串口打印;当串口开关参数console_onoff=off时,将控制台参数设置为console=tty1,使控制台映射给其他虚拟端口,关闭串口打印。如此使得Linux系统的串口输出能够动态开启或关闭,且方法简单、方便,无需深入了解Linux系统。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种Linux系统串口功能禁用的方法,其特征在于,包括:
调用Linux内核中的环境变量;
获取所述环境变量中的串口开关参数;
根据所述串口开关参数更改内核启动参数中的控制台参数;
将更改后的控制台参数传递至所述Linux内核中,调用函数控制对应串口的动态开关。
2.根据权利要求1所述的Linux系统串口功能禁用的方法,其特征在于,还包括:
在Linux系统启动时,获取所述Linux内核中的环境变量;
根据所述环境变量中的串口开关参数设置所述内核启动参数中的控制台参数;
根据设置的所述控制台参数控制对应串口的动态开关。
3.根据权利要求1所述的Linux系统串口功能禁用的方法,其特征在于,还包括:
在Linux系统启动完成后,获取所述Linux内核中的环境变量;
根据所述环境变量中的串口开关参数修改所述内核启动参数中的控制台参数;
根据修改后的控制台参数控制对应串口的动态开关。
4.根据权利要求1所述的Linux系统串口功能禁用的方法,其特征在于,还包括:
在所述Linux内核中的环境变量中增设串口开关参数console_onoff。
5.根据权利要求1所述的Linux系统串口功能禁用的方法,其特征在于,获取所述环境变量中的串口开关参数,之前包括:
使用setenv命令将所述串口开关参数设置为第一参数或第二参数。
6.根据权利要求5所述的Linux系统串口功能禁用的方法,其特征在于,根据所述串口开关参数更改内核启动参数中的控制台参数,包括:
当所述串口开关参数为第一参数时,将所述内核启动参数中的控制台参数更改为第一驱动线程,指定控制台使用所述第一驱动线程;
当所述串口开关参数为第二参数时,将所述内核启动参数中的控制台参数更改为第二驱动线程,指定控制台使用所述第二驱动线程。
7.根据权利要求6所述的Linux系统串口功能禁用的方法,其特征在于,所述第一参数为开启参数,所述第二参数为关闭参数。
8.根据权利要求6所述的Linux系统串口功能禁用的方法,其特征在于,所述第一驱动线程为ttyAMA0,115200,以使所述控制台映射给对应串口,动态开启所述串口。
9.根据权利要求6所述的Linux系统串口功能禁用的方法,其特征在于,所述第二驱动线程为tty1或ttyx,以使所述控制台映射给虚拟端口,动态关闭所述串口。
CN202111226459.XA 2021-10-21 2021-10-21 一种Linux系统串口功能禁用的方法 Pending CN113961495A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111226459.XA CN113961495A (zh) 2021-10-21 2021-10-21 一种Linux系统串口功能禁用的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111226459.XA CN113961495A (zh) 2021-10-21 2021-10-21 一种Linux系统串口功能禁用的方法

Publications (1)

Publication Number Publication Date
CN113961495A true CN113961495A (zh) 2022-01-21

Family

ID=79465857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111226459.XA Pending CN113961495A (zh) 2021-10-21 2021-10-21 一种Linux系统串口功能禁用的方法

Country Status (1)

Country Link
CN (1) CN113961495A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678214A (zh) * 2013-11-29 2014-03-26 青岛海信电器股份有限公司 系统控制台重定向方法及显示设备
CN104008008A (zh) * 2014-06-17 2014-08-27 厦门雅迅网络股份有限公司 一种Linux系统中复用调试串口的方法
CN104102482A (zh) * 2013-04-12 2014-10-15 厦门雅迅网络股份有限公司 一种嵌入式系统的控制台串口与应用串口复用方法及应用
CN107544804A (zh) * 2017-09-01 2018-01-05 北京雷石天地电子技术有限公司 嵌入式系统终端开发模式的启动方法及装置
CN111045977A (zh) * 2019-12-18 2020-04-21 深圳先进技术研究院 Linux系统控制台的USB串口实现方法及相关产品
CN112256513A (zh) * 2020-10-29 2021-01-22 成都菁蓉联创科技有限公司 一种调试串口和数据串口复用的方法、装置和控制器
CN112948311A (zh) * 2021-03-30 2021-06-11 几维通信技术(深圳)有限公司 Linux系统下串口信息截获方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102482A (zh) * 2013-04-12 2014-10-15 厦门雅迅网络股份有限公司 一种嵌入式系统的控制台串口与应用串口复用方法及应用
CN103678214A (zh) * 2013-11-29 2014-03-26 青岛海信电器股份有限公司 系统控制台重定向方法及显示设备
CN104008008A (zh) * 2014-06-17 2014-08-27 厦门雅迅网络股份有限公司 一种Linux系统中复用调试串口的方法
CN107544804A (zh) * 2017-09-01 2018-01-05 北京雷石天地电子技术有限公司 嵌入式系统终端开发模式的启动方法及装置
CN111045977A (zh) * 2019-12-18 2020-04-21 深圳先进技术研究院 Linux系统控制台的USB串口实现方法及相关产品
CN112256513A (zh) * 2020-10-29 2021-01-22 成都菁蓉联创科技有限公司 一种调试串口和数据串口复用的方法、装置和控制器
CN112948311A (zh) * 2021-03-30 2021-06-11 几维通信技术(深圳)有限公司 Linux系统下串口信息截获方法

Similar Documents

Publication Publication Date Title
RU2327208C2 (ru) Модель драйвера, не зависимого от режима обработки
US5537654A (en) System for PCMCIA peripheral to execute instructions from shared memory where the system reset signal causes switching between modes of operation by alerting the starting address
US5797031A (en) Method and apparatus for peripheral device control by clients in plural memory addressing modes
US6799225B2 (en) Controllerless modem
CN102369510B (zh) 使用存储器分段和基于acpi的上下文切换加载操作系统
US20050268082A1 (en) Method and apparatus to boot system from the USB port
CN114035842B (zh) 固件配置方法、计算系统配置方法、计算装置以及设备
US5937185A (en) Method and system for device virtualization based on an interrupt request in a DOS-based environment
CN113448740B (zh) 操作系统的电源管理方法及装置
CN112329019A (zh) 基于TrustZone的编程方法、终端设备及存储介质
US10796002B1 (en) Method and apparatus for establishing a root-of-trust path for a secure computer
CN113448643B (zh) 配置数据管理系统及方法
CN117407065A (zh) 网卡预启动控制方法、装置、设备、系统及存储介质
US5872995A (en) System for causing system management interrupt to execute second program before use of a scancode by first program if said scancode comprises a hotkey
CN116431546B (zh) 参数配置方法、电子设备、存储介质及程序产品
CN113961495A (zh) 一种Linux系统串口功能禁用的方法
US6810438B1 (en) Method for enabling value-added feature on hardware devices using a confidential mechanism to access hardware registers in a batch manner
US7111160B1 (en) Method and apparatus for using a development port for boot up
EP1868127A1 (en) Device comprising a public and a private area and a method for securely initializing the device
CN106922189B (zh) 设备代理装置及其控制方法
WO1999040520A1 (en) Computer adapter card
CN106445571B (zh) 主机板及开机的方法
JP3521305B2 (ja) 表示装置と外部メモリユニット及び表示装置システム
JP2003140913A (ja) Romライタ及びromのプログラム更新方法
KR970006024B1 (ko) 디버깅장치 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination