Xiaopei's DokuWiki

These are the good times in your life,
so put on a smile and it'll be alright

User Tools

Site Tools


it:linux:hardware

硬件管理

Linux 串口调试

模拟串口 虚拟串口 ptyp ttyp mocking mock

应用场景: 测试时, 需要模拟设备

方法:

  1. 如果操作系统支持, 可以用 ptyp ttyp: http://stackoverflow.com/a/74517/668969
  2. 否则, 可用 socat: Using Virtual Serial Ports on Linux (Ubuntu)
    $ sudo socat -d -d PTY: PTY:
    2014/03/15 10:59:04 socat[12513] N PTY is /dev/pts/3
    2014/03/15 10:59:04 socat[12513] N PTY is /dev/pts/4
    2014/03/15 10:59:04 socat[12513] N starting data transfer loop with FDs [3,3] and [5,5]
     
    # 挂着 socat 就开着一对虚拟串口了, 测试脚本可以一个挂 3, 一个挂 4
     
    # pty 号没法手动设置, 当需要固定的设备时, 可以用 link 设置设备的符号链接
    $ sudo socat -d -d pty,link=/dev/fakez0,raw  pty,link=/dev/fakez1,raw

minicom

需要取消 modem 相关的配置

# 配置
$ minicom -s

# +-----[configuration]------+
# | Filenames and paths      |
# | File transfer protocols  |
# | Serial port setup        |
# | Modem and dialing        |
# | Screen and keyboard      |
# | Save setup as dfl        |
# | Save setup as..          |
# | Exit                     |
# | Exit from Minicom        |
# +--------------------------+


# 最初用途是 modem(?), 所以调试串口时
# 需要在 Modem and dialing 中置空:
#  A — initing string
#  B — Reset string
#  K — Hang-up string

# 配置后需要 ''Save setup as dfl''
# 再 Exit 或重新 minicom

但 minicom 无法显示 binary data (HEX)

miniterm.py

$ aptitude install python-serial
# 除 miniterm.py 外, python-serial 还包括:
# TCP/IP - serial bridge
# Single-port TCP/IP - serial bridge (RFC 2217)
# Multi-port TCP/IP - serial bridge (RFC 2217)


# Usage: miniterm.py [options] [port [baudrate]]
$ miniterm.py -D /dev/ttyUSB0 2400

# -D, --debug    debug received data (escape non-printable chars)
#                --debug can be given multiple times:
#                0: just print what is received
#                1: escape non-printable characters, do newlines
#                   as unusual
#                2: escape non-printable characters, newlines too
#                3: hex dump everything

更好用, 不用配置, 可用 –debug 显示 binary

使用 bash 串口通信

# 设置波特率
## 查看当前信息
$ stty -F ttyO1
## 设置
$ stty -F ttyO1 38400
 
# 监听
$ od -t x1 ttyO1
 
# 写
$ echo hello > ttyO1
 
 
# 或者用 screen 读写
$ screen tty01 38400

/dev

  • 串口设备 ttyS*
  • USB 设备 ttyUSB*

dmesg

dmesg is used to examine or control the kernel ring buffer. The program helps users to print out their bootup messages.

# 查看以太网卡信息
$ dmesg | grep eth

磁盘 disk

ide & sata

FIXME

ext3 & ext4 ...

FIXME

安装新硬盘 add a new disk

  1. 关机, 安装硬盘, 开机
  2. manipulate disk partition table
    # 检查所有硬盘情况
    $ fdisk -l
     
    # 分区
    $ cfdisk /dev/sdc
     
    # 如果 cfdisk 报 “Unsupported GPT” error,可用 cgdisk
    $ aptitude install gdisk
    $ cgdisk /dev/sdc
  3. build a Linux filesystem
    # 看能 build 哪些 filesystem
    $ mkfs.[tab]
     
    # 使用 ext4 格式化
    $ mkfs.ext4 /dev/sdc1
  4. 挂载
    # 创建挂载点
    $ mkdir /backup
     
    # locate/print block device attributes
    $ blkid
    /dev/sdc1: UUID="7f7d1cd6-778d-4087-92b8-1b0551aeb88f" TYPE="ext4" 
     
    # 修改挂载表
    $ vi /etc/fstab
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    UUID=7f7d1cd6-778d-4087-92b8-1b0551aeb88f /backup       ext4    errors=remount-ro 0       1
     
    # 挂载
    $ mount /backup
     
    # 检查
    $ df -h
    /dev/sdc1       124M  5.6M  113M   5% /backup

更多内容参考 UNIX and Linux System Administration Handbook 4ed - Chapter.8 Storage

issues

df 100%, 但 du 并没那么多

http://bbs.chinaunix.net/thread-2080219-1-1.html

因为那些文件都还在打开的状态被你删除了,虽然你在硬盘上删除了文件,但是系统还认为这些文件还存在,你可以 lsof |grep delete 看看,应该有很多你之前删除,但是还被系统打开的文件,找到相应进程id,kill之。

img image dd 磁盘镜像

udev

udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。

相关术语:

  • 设备文件:由于本文以较通俗的方式讲解 udev,所以设备文件是泛指在 /dev/下,可被应用程序用来和设备驱动交互的文件。而不会特别地区分设备文件、设备节点或者设备特殊文件。
  • devfs:devfs是 Linux 早期的设备管理工具,已经被 udev 取代。
  • sysfs:sysfs是 Linux 2.6 内核里的一个虚拟文件系统 (/sys)。它把设备和驱动的信息从内核的设备模块导出到用户空间 (userspace)。从该文件系统中,Linux 用户可以获取很多设备的属性。
  • devpath:本文的 devpath是指一个设备在 sysfs文件系统 (/sys)下的相对路径,该路径包含了该设备的属性文件。udev 里的多数命令都是针对 devpath操作的。例如:sda的 devpath是 /block/sda,sda2 的 devpath是 /block/sda/sda2。
  • 内核设备名称:设备在 sysfs里的名称,是 udev 默认使用的设备文件名。

rules

参考

it/linux/hardware.txt · Last modified: 2014/12/15 18:06 by admin