本系列调试说明记录了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

1万+

被折叠的 条评论
为什么被折叠?



