以下内容源于朱有鹏嵌入式课程的学习与整理, 如有侵权请告知删除。
内容总结
(1)添加“ telnet远程登录 ”这种调试方式。
(2)介绍“ 海思proc文件系统 ”这种调试接口。
一、telnet远程登录
1、telnet远程登录的意义
Linux系统的用户界面就是命令行,本质上由busybox提供。busybox提供的命令行只有一个,一旦前台被占用就无法做其他操作。
解决方法有两个,一个是建立多个命令行,一个是开放其他用户界面(比如通过telnet远程登录可以开放其他用户界面)。
2、telnet远程登录的原理

(1)在板载系统中运行命令“telnetd &”,让板载系统作为telnet的server端。
(2)通过telnet的client端(在SCRT中设置)连接telnet的server端,从而构建一个用户界面。
(3)这是非常传统与典型的远程登录方式。
3、在HI3518E开发板上进行telnet远程登录
(1)首先执行“telnetd &”,其中“&”和“d”分别表示在后台运行、守护进程(或者说它是服务器)。
/mnt # which telnet
/usr/bin/telnet
/mnt # ls /usr/bin/telnet -l
lrwxrwxrwx    1 root     root   17 Nov 16  2022 /usr/bin/telnet -> ../../bin/busybox
/mnt # telnetd &
/mnt # ps
#省略部分输出561 root       0:00 udevd --daemon568 root       0:00 udevd --daemon750 root       0:00 -sh956 root       0:00 telnetd  #该进程在这里1047 root       0:00 [flush-mtd-unmap]1064 root       0:00 ps
(2)然后在SCRT上新建一个连接,配置如下。

(3)在登陆处输入账号“root”,在password处直接回车(因为没有设置密码)。
(none) login: root
Password: 
Welcome to HiLinux.
mmz_start: 0x82000000, mmz_size: 32M
insmod: can't insert 'mmz.ko': File exists
******* Error: There's something wrong, please check! *****
mount: mounting 192.168.1.141:/home/xjh/iot/hisi_development/hisi_rootfs on /mnt failed: Device or resource busy
/mnt # 每次开启telnet服务时,就会执行一次/etc/profile文件。这文件里有挂载操作,因此提示挂载错误,因为在执行“telnetd &”命令的那个窗口挂载了,不能重复挂载。这文件里也有安装某个驱动程序的操作,因为已经执行过一次,所以这里提示不能插入mmz.ko。
我们将/etc/profile文件中只需要进行一次的操作,剪切至/etc/init.d/rcS文件中,因为rcS文件只会在开机启动时被执行一次,开启telnet服务时也不会再执行rcS文件。修改后的rcS文件如下所示。
/bin/mount -aecho "_ _ _ _ _ _ _ _ _ _ _ _\  _  _   _  _ _ ___/ /__/ \ |_// __   /  -  _ ___/ /  / /  / /_ _ _ _/ /  /  \_/  \_ ______
___________\___\__________________
"
for initscript in /etc/init.d/S[0-9][0-9]*
doif [ -x $initscript ] ;thenecho "[RCS]: $initscript"$initscriptfi
done
ifconfig lo 127.0.0.1
ifconfig eth0 192.168.1.11mount -t vfat /dev/mmcblk0p1 /usr/mmccd /usr/mmc/ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64
mount -t nfs -o nolock 192.168.1.141:/home/xjh/iot/hisi_development/hisi_rootfs /mnttelnetd &# 将“cd /mnt”这句代码在这里不生效,因为rcs文件之后某些操作还会改变目录
# 将“cd /mnt”这句代码放在/etc/profle文件中就生效/etc/profile文件和rcS文件的执行顺序是怎样的?“cd /mnt”指令在rcS文件中不生效(当etc/profile文件中没有这个指令,在rcS文件中有这个指令时,系统完全启动后却停留在/root目录),而在etc/profile文件中生效(当rcS文件中没有这个指令,而在etc/profile文件中有这个指令时,系统完全启动后停留在/mnt目录),这说明是先执行完rcS文件再执行/etc/profile文件。
进行上述修改之后,再进行步骤(2)(3)操作时,显示如下。我特意开启了几个界面,以说明telnet远程登录可以开启多个用户界面。

二、海思proc文件系统
1、proc文件系统的原理
/mnt # cd /proc/   #proc文件系统内容
/proc # ls
1              257            418            7              cmdline        fb             kpagecount     net            sysvipc
139            262            458            964            consoles       filesystems    kpageflags     pagetypeinfo   timer_list
141            3              472            965            cpu            fs             loadavg        partchange     tty
142            315            492            969            cpuinfo        hieth          locks          partitions     umap
144            331            496            971            crypto         interrupts     mci            scsi           uptime
153            399            5              972            devices        iomem          media-mem      self           version
156            4              507            973            diskstats      ioports        meminfo        slabinfo       vmallocinfo
164            402            515            978            dma-mappings   irq            misc           softirqs       vmstat
166            407            570            buddyinfo      driver         kallsyms       modules        stat           yaffs
2              410            572            bus            dump_sb_files  key-users      mounts         swaps          zoneinfo
255            415            6              cgroups        execdomains    kmsg           mtd            sys/proc # ls /sys/*  #sys文件系统内容
/sys/block:
mmcblk0    mtdblock1  ram0       ram10      ram12      ram14      ram2       ram4       ram6       ram8       romblock0  romblock2
mtdblock0  mtdblock2  ram1       ram11      ram13      ram15      ram3       ram5       ram7       ram9       romblock1/sys/bus:
amba         cpu          himedia      mdio_bus     platform     sdio         spi
clocksource  hid          i2c          mmc          scsi         serio        usb/sys/class:
bdi              fc_host          firmware         input            mmc_host         scsi_device      spidev           vc
block            fc_remote_ports  graphics         mdio_bus         mtd              scsi_disk        tty              vtconsole
bsg              fc_transport     i2c-adapter      mem              net              scsi_host        ubi
cuse             fc_vports        i2c-dev          misc             regulator        spi_master       usb_device/sys/dev:
block  char/sys/devices:
acodec    ai        h264e     hifb      ive       platform  rgn       uart:0    vb        vi        vpss
adec      ao        hi_mipi   himedia   jpege     pwm       sys       uart:1    venc      virtual
aenc      chnl      hi_tde    isp_dev   logmpp    rc        system    uart:2    vgs       vo/sys/firmware:/sys/fs:
cgroup  ext4    fuse/sys/kernel:
fscaps         ipv4           mm             notes          slab           uevent_helper  uevent_seqnum/sys/module:
acodec             hi3518e_aenc       hi3518e_jpege      hi3518e_vpss       mmcblk             scsi_transport_fc  usb_storage
auth_rpcgss        hi3518e_ai         hi3518e_rc         hi_media           mmz                sensor_i2c         usbcore
block              hi3518e_aio        hi3518e_region     hi_mipi            mousedev           spidev             usbhid
block2mtd          hi3518e_ao         hi3518e_sys        hid                nfs                spurious           vt
brd                hi3518e_base       hi3518e_tde        hifb               piris              sunrpc             xz_dec
dns_resolver       hi3518e_chnl       hi3518e_venc       kernel             printk             tcp_cubic          yaffs
ehci_hcd           hi3518e_h264e      hi3518e_vgs        keyboard           psmouse            ubi
fuse               hi3518e_isp        hi3518e_viu        lockd              pwm                ubifs
hi3518e_adec       hi3518e_ive        hi3518e_vou        mmc_core           scsi_mod           uinput/sys/power:
compress_method     hb_bdev_file        pm_async            reserved_size       snapshot_buf_size   state
disk                image_size          pm_test             resume              snapshot_buf_start  wakeup_count
/proc #(1)无组织而混乱的proc文件系统已经被有组织而规整的sys文件系统取代。
(2)proc文件系统的原理,是把内核关键的变量以文件的形式呈现到用户层,用户层通过查看这些文件从而得到内核的一些信息。这些信息是动态信息,是内核运行过程中呈现的信息。
(3)这些文件是虚拟的,它们其实是内核运行过程中某些变量的值。
(4)可以使用cat命令查看这些信息。
/proc # cd umap/
/proc/umap # ls
acodec  aenc    ao      h264e   higo    ive     logmpp  rc      sys     vb      vgs     vo
adec    ai      chnl    hifb0   isp     jpege   md      rgn     tde     venc    vi      vpss
/proc/umap # cat vi[VIU] Version: [Hi3518EV200_MPP_V1.0.3.0 B040 Release], Build Time: [May 20 2016, 12:01:03]VI-VPSS is online.-----MODULE PARAM--------------------------------------------------------------
detect_err_frame  drop_err_frame  stop_int_level10              0              0-----VI DEV ATTR---------------------------------------------------------------Dev   IntfM  WkM  ComMsk0  ComMsk1 ScanM AD0 AD1 AD2 AD3   Seq   DPath DType DRev CapX CapY  CapW  CapH-----VI HIGH DEV ATTR---------------------------------------------------------------Dev  InputM  WkM  ComMsk0  ComMsk1 ScanM AD0 AD1 AD2 AD3   Seq CombM CompM ClkM  Fix FldP   DPath DType DRev CapX CapY  CapW  CapH-----VI PHYCHN ATTR------------------------------------------------------------PhyChn CapX CapY  CapW  CapH  DstW  DstH CapSel Mirror Flip IntEn PixFom SrcRat DstRat   Comp-----VI PHYCHN STATUS 1----------------------------------------------------------PhyChn  Dev      IntCnt  VbFail  LosInt  TopLos  BotLos BufCnt  IntT  SendT  Field  Stride-----VI PHYCHN STATUS 2---------------------------------------------------------PhyChn MaxIntT   IntGapT   MaxGapT LIntCnt  ThrCnt AutoDis CasAutD  TmgErr      ccErrN    IntRat
/proc/umap #2、海思proc文件系统调试
官方文档见链接:资源_1111。
