T113 日志分析Linux

本系列调试说明记录了Linux在全志T113-S3/S4平台上的移植过程,说明过程中可能会技术瑕疵,希望大家提供宝贵意见。
本文移植的硬件平台来自于盈鹏飞嵌入式的SBC-T113S(处理器是T113-S3)主板。

SBC-T113S产品特性:

  • 采用Allwinner公司Cortex-A7双核T113-S3/S4处理器,运行最高速度为1.2GHZ;
  • 内置64-bit XuanTie C906 RISC-V协处理器(仅T113-S4支持);
  • 支持JPEG/MJPEG视频编码,最大分辨率1080p@60fps;支持多格式1080P@60fps视频解码 (H.265,H.264, MPEG-1/2/4);
  • 支持RGB666/LVDS/MIPI-DSI,分辨率最高1920x1080;
  • 支持128-256M Bytes DDR3 SDRAM,其中T113-S3内置128MB;T113-S4内置256MB;
  • 支持SPI NAND存储和启动(默认:256MB;最大1GB)或者EMMC启动(默认:4GB,最大32GB);
  • 支持一路USB2.0 OTG(设计为TYPE-A接口);支持二路USB2.0 HOST;
  • 支持七路RS232通信或者6路RS232和1路RS485(隔离);
  • 支持一路CAN BUS通信(隔离);
  • 支持一路10/100M以太网;
  • 稳定的操作系统的支持,可预装LINUX 5.4或者OpenWRT;
  • 经典尺寸主板,尺寸为120*100MM;

产品功能评估图:

产品尺寸:

syslog

buildroot syslog

t113_linux/buildroot/buildroot-201902/package/sysklogd

buildroot syslog-ng

t113_linux/buildroot/buildroot-201902/package/syslog-ng

syslog-ng 是一个开源的 syslog 替代方案,它提供了更强大的日志处理和转发功能。

busybox syslog

buildroot/buildroot-201902/package/busybox

busybox 1.19.4的syslog是专门给嵌入式设备使用的,因此有一些功能被精简掉了,如syslog.conf,该版本不支持配置文件,所有配置都在启动syslogd守护进程时通过参数输入

t113_linux/out/t113/evb1_auto/longan/buildroot/build/busybox-1.29.3/sysklogd$ tree

.

├── built-in.o

├── Config.in

├── Config.src

├── Kbuild

├── Kbuild.src

├── klogd.c

├── klogd.o

├── lib.a

├── logger.c

├── logread.c

├── syslogd_and_logger.c

├── syslogd_and_logger.o

└── syslogd.c

参数配置

-O /userdata/syslog 缓存文件路径 -b 5 缓存文件个数

sh-4.4# cat /etc/init.d/S01syslogd

#!/bin/sh

DAEMON="syslogd"

PIDFILE="/var/run/$DAEMON.pid"

SYSLOGD_ARGS="-O /userdata/syslog -b 5"

# shellcheck source=/dev/null

[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"

# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line

# and use "-m" to instruct start-stop-daemon to create one.

start() {

    printf 'Starting %s: ' "$DAEMON"

    # shellcheck disable=SC2086 # we need the word splitting

    start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \

        -- -n $SYSLOGD_ARGS

    status=$?

    if [ "$status" -eq 0 ]; then echo "OK"

    else echo "FAIL"

    fi return "$status"

}

stop() {

    printf 'Stopping %s: ' "$DAEMON"

    start-stop-daemon -K -q -p "$PIDFILE"

    status=$?

    if [ "$status" -eq 0 ]; then rm -f "$PIDFILE"

        echo "OK"

    else echo "FAIL"

    fi return "$status"

}

restart() {

    stop

    sleep 1

    start

}

case "$1" in start|stop|restart)

        "$1";;

    reload)

        # Restart, since there is no true "reload" feature.

        restart;;

        *)

                echo "Usage: $0 {start|stop|restart|reload}"

                exit 1

esac

修改方案

diff --git a/platform/framework/auto/rootfs/etc/init.d/S01syslogd b/platform/framework/auto/rootfs/etc/init.d/S01syslogd

index 6e642a678a..b99bcf2e68 100755 --- a/platform/framework/auto/rootfs/etc/init.d/S01syslogd +++ b/platform/framework/auto/rootfs/etc/init.d/S01syslogd @@ -3,7 +3,8 @@

 DAEMON="syslogd"

 PIDFILE="/var/run/$DAEMON.pid"

-SYSLOGD_ARGS="" +SYSLOGD_ARGS="-O /userdata/syslog/log -b 20" +mkdir -p /userdata/syslog 

 # shellcheck source=/dev/null

 [ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"

var/log

T113/log$ tree

.

├── asound.state.lock

├── dbus

│   └── machine-id

├── dhcpd.leases

├── dhcpd.leases~

├── LCK..ttyS4

├── LCK..ttyUSB1

├── LCK..ttyUSB2

├── messages

├── messages.0

├── resolv.conf

├── runtime-root

└── subsys

    └── dbus-daemon

实时显示日志命令

tail -f /var/log/messages

日志打印到syslog用法

#include <syslog.h> 

syslog(LOG_INFO, "this is my log info.%d", 23);     //使用方法与printk 类似可以格式化的输出

QT 打印日志到syslog的方法

#include <QCoreApplication> #include <QSyslogMessage> 

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    // 设置 syslog 的标识符和选项

    openlog("MyQtApp", LOG_PID | LOG_CONS, LOG_USER);

    // 创建一个 syslog 消息对象

    QSyslogMessage message;

    // 设置消息的优先级

    message.setPriority(LOG_INFO);

    // 设置消息的内容

    message.setMsg("Hello, world!");

    // 发送 syslog 消息

    syslog() << message;

    return a.exec();

}

485 串口

这里指明了ttyS4 串口哪个程序在占用

T113/log$ cat LCK..ttyS4

5149

smart_cabinet

kunos

ecdc5787de4ab6852e2b911c00000004

143c6549-afd2-4aba-84bb-2b9a3cb2ecd5

4G 串口

ttyUSB1 18295 smart_cabinet 程序正在占用

ttyUSB2 22005 pppd 程序在占用

lxg@lixiaogang:~/code/android_log/T113/log$ cat LCK..ttyUSB1

18295

smart_cabinet

kunos

ecdc5787de4ab6852e2b911c00000004

143c6549-afd2-4aba-84bb-2b9a3cb2ecd5

lxg@lixiaogang:~/code/android_log/T113/log$ cat LCK..ttyUSB2

     22005

resolv.conf

在Linux和其他类Unix操作系统中,/etc/resolv.conf 是一个重要的系统配置文件,用于设置名称解析服务(DNS)的相关参数。当用户尝试访问互联网上的域名时,计算机需要将这些域名转换为IP地址以便进行通信。

sh-4.4# cat resolv.conf

nameserver 211.138.21.66

nameserver 211.138.23.66

var/log/messages

syslog.info syslogd started: BusyBox v1.29.3

Jan  1 08:00:02 kunos syslog.info syslogd started: BusyBox v1.29.3

Jan  1 08:00:03 kunos user.notice kernel: klogd started: BusyBox v1.29.3 (2023-12-12 18:40:05 CST)

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] Booting Linux on physical CPU 0x0

Jan  1 08:00:03 kunos user.notice kernel: [    0.000000] Linux version 5.4.61-ab59 (lxg@lxg) (arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412, GNU ld (Linaro_Binutils-2016.05) 2.25.0 Linaro 2016_02) #1 SMP PREEMPT Tue Dec 12 19:32:15 CST 2023

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] CPU: div instructions available: patching division code

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] OF: fdt: Machine model: rp-t113

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] printk: bootconsole [earlycon0] enabled

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] Memory policy: Data cache writealloc

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] cma: Reserved 32 MiB at 0x46000000

Jan  1 08:00:03 kunos user.debug kernel: [    0.000000] On node 0 totalpages: 32768

Jan  1 08:00:03 kunos user.debug kernel: [    0.000000]   Normal zone: 256 pages used for memmap

Jan  1 08:00:03 kunos user.debug kernel: [    0.000000]   Normal zone: 0 pages reserved

Jan  1 08:00:03 kunos user.debug kernel: [    0.000000]   Normal zone: 32768 pages, LIFO batch:7

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] psci: probing for conduit method from DT.

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] psci: PSCIv1.0 detected in firmware.

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] psci: Using standard PSCI v0.2 function IDs

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] psci: MIGRATE_INFO_TYPE not supported.

Jan  1 08:00:03 kunos user.info kernel: [    0.000000] psci: SMC Calling Convention v1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值