比较了以下 ddr3 和 ddr2 初始化:
https://github.com/u-boot/u-boot/blob/master/arch/arm/mach-sunxi/dram_timings/ddr3_1333.c
#include <common.h>
#include <asm/arch/dram.h>
#include <asm/arch/cpu.h>
void mctl_set_timing_params(uint16_t socid, struct dram_para *para)
{
struct sunxi_mctl_ctl_reg * const mctl_ctl =
(struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE;
u8 tccd = 2;
u8 tfaw = ns_to_t(50);
u8 trrd = max(ns_to_t(10), 4);
u8 trcd = ns_to_t(15);
u8 trc = ns_to_t(53);
u8 txp = max(ns_to_t(8), 3);
u8 twtr = max(ns_to_t(8), 4);
u8 trtp = max(ns_to_t(8), 4);
u8 twr = max(ns_to_t(15), 3);
u8 trp = ns_to_t(15);
u8 tras = ns_to_t(38);
u16 trefi = ns_to_t(7800) / 32;
u16 trfc = ns_to_t(350);
u8 tmrw = 0;
u8 tmrd = 4;
u8 tmod = 12;
u8 tcke = 3;
u8 tcksrx = 5;
u8 tcksre = 5;
u8 tckesr = 4;
u8 trasmax = 24;
u8 tcl = 6; /* CL 12 */
u8 tcwl = 4; /* CWL 8 */
u8 t_rdata_en = 4;
u8 wr_latency = 2;
u32 tdinit0 = (500 * CONFIG_DRAM_CLK) + 1; /* 500us */
u32 tdinit1 = (360 * CONFIG_DRAM_CLK) / 1000 + 1; /* 360ns */
u32 tdinit2 = (200 * CONFIG_DRAM_CLK) + 1; /* 200us */
u32 tdinit3 = (1 * CONFIG_DRAM_CLK) + 1; /* 1us */
u8 twtp = tcwl + 2 + twr; /* WL + BL / 2 + tWR */
u8 twr2rd = tcwl + 2 + twtr; /* WL + BL / 2 + tWTR */
u8 trd2wr = tcl + 2 + 1 - tcwl; /* RL + BL / 2 + 2 - WL */
/* set mode register */
writel(0x1c70, &mctl_ctl->mr[0]); /* CL=11, WR=12 */
writel(0x40, &mctl_ctl->mr[1]);
writel(0x18, &mctl_ctl->mr[2]); /* CWL=8 */
writel(0x0, &mctl_ctl->mr[3]);
if (socid == SOCID_R40)
writel(0x3, &mctl_ctl->lp3mr11); /* odt_en[7:4] */
/* set DRAM timing */
writel(DRAMTMG0_TWTP(twtp) | DRAMTMG0_TFAW(tfaw) |
DRAMTMG0_TRAS_MAX(trasmax) | DRAMTMG0_TRAS(tras),
&mctl_ctl->dramtmg[0]);
writel(DRAMTMG1_TXP(txp) | DRAMTMG1_TRTP(trtp) | DRAMTMG1_TRC(trc),
&mctl_ctl->dramtmg[1]);
writel(DRAMTMG2_TCWL(tcwl) | DRAMTMG2_TCL(tcl) |
DRAMTMG2_TRD2WR(trd2wr) | DRAMTMG2_TWR2RD(twr2rd),
&mctl_ctl->dramtmg[2]);
writel(DRAMTMG3_TMRW(tmrw) | DRAMTMG3_TMRD(tmrd) | DRAMTMG3_TMOD(tmod),
&mctl_ctl->dramtmg[3]);
writel(DRAMTMG4_TRCD(trcd) | DRAMTMG4_TCCD(tccd) | DRAMTMG4_TRRD(trrd) |
DRAMTMG4_TRP(trp), &mctl_ctl->dramtmg[4]);
writel(DRAMTMG5_TCKSRX(tcksrx) | DRAMTMG5_TCKSRE(tcksre) |
DRAMTMG5_TCKESR(tckesr) | DRAMTMG5_TCKE(tcke),
&mctl_ctl->dramtmg[5]);
/* set two rank timing */
clrsetbits_le32(&mctl_ctl->dramtmg[8], (0xff << 8) | (0xff << 0),
((socid == SOCID_H5 ? 0x33 : 0x66) << 8) | (0x10 << 0));
/* set PHY interface timing, write latency and read latency configure */
writel((0x2 << 24) | (t_rdata_en << 16) | (0x1 << 8) |
(wr_latency << 0), &mctl_ctl->pitmg[0]);
/* set PHY timing, PTR0-2 use default */
writel(PTR3_TDINIT0(tdinit0) | PTR3_TDINIT1(tdinit1), &mctl_ctl->ptr[3]);
writel(PTR4_TDINIT2(tdinit2) | PTR4_TDINIT3(tdinit3), &mctl_ctl->ptr[4]);
/* set refresh timing */
writel(RFSHTMG_TREFI(trefi) | RFSHTMG_TRFC(trfc), &mctl_ctl->rfshtmg);
}
https://github.com/u-boot/u-boot/blob/master/arch/arm/mach-sunxi/dram_timings/ddr2_v3s.c
#include <common.h>
#include <asm/arch/dram.h>
#include <asm/arch/cpu.h>
void mctl_set_timing_params(uint16_t socid, struct dram_para *para)
{
struct sunxi_mctl_ctl_reg * const mctl_ctl =
(struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE;
u8 tccd = 1;
u8 tfaw = ns_to_t(50);
u8 trrd = max(ns_to_t(10), 2);
u8 trcd = ns_to_t(20);
u8 trc = ns_to_t(65);
u8 txp = 2;
u8 twtr = max(ns_to_t(8), 2);
u8 trtp = max(ns_to_t(8), 2);
u8 twr = max(ns_to_t(15), 3);
u8 trp = ns_to_t(15);
u8 tras = ns_to_t(45);
u16 trefi = ns_to_t(7800) / 32;
u16 trfc = ns_to_t(328);
u8 tmrw = 0;
u8 tmrd = 2;
u8 tmod = 12;
u8 tcke = 3;
u8 tcksrx = 5;
u8 tcksre = 5;
u8 tckesr = 4;
u8 trasmax = 27;
u8 tcl = 3; /* CL 6 */
u8 tcwl = 3; /* CWL 6 */
u8 t_rdata_en = 1;
u8 wr_latency = 1;
u32 tdinit0 = (400 * CONFIG_DRAM_CLK) + 1; /* 400us */
u32 tdinit1 = (500 * CONFIG_DRAM_CLK) / 1000 + 1; /* 500ns */
u32 tdinit2 = (200 * CONFIG_DRAM_CLK) + 1; /* 200us */
u32 tdinit3 = (1 * CONFIG_DRAM_CLK) + 1; /* 1us */
u8 twtp = tcwl + 2 + twr; /* WL + BL / 2 + tWR */
u8 twr2rd = tcwl + 2 + twtr; /* WL + BL / 2 + tWTR */
u8 trd2wr = tcl + 2 + 1 - tcwl; /* RL + BL / 2 + 2 - WL */
/* set mode register */
writel(0x263, &mctl_ctl->mr[0]);
writel(0x4, &mctl_ctl->mr[1]);
writel(0x0, &mctl_ctl->mr[2]);
writel(0x0, &mctl_ctl->mr[3]);
/* set DRAM timing */
writel(DRAMTMG0_TWTP(twtp) | DRAMTMG0_TFAW(tfaw) |
DRAMTMG0_TRAS_MAX(trasmax) | DRAMTMG0_TRAS(tras),
&mctl_ctl->dramtmg[0]);
writel(DRAMTMG1_TXP(txp) | DRAMTMG1_TRTP(trtp) | DRAMTMG1_TRC(trc),
&mctl_ctl->dramtmg[1]);
writel(DRAMTMG2_TCWL(tcwl) | DRAMTMG2_TCL(tcl) |
DRAMTMG2_TRD2WR(trd2wr) | DRAMTMG2_TWR2RD(twr2rd),
&mctl_ctl->dramtmg[2]);
writel(DRAMTMG3_TMRW(tmrw) | DRAMTMG3_TMRD(tmrd) | DRAMTMG3_TMOD(tmod),
&mctl_ctl->dramtmg[3]);
writel(DRAMTMG4_TRCD(trcd) | DRAMTMG4_TCCD(tccd) | DRAMTMG4_TRRD(trrd) |
DRAMTMG4_TRP(trp), &mctl_ctl->dramtmg[4]);
writel(DRAMTMG5_TCKSRX(tcksrx) | DRAMTMG5_TCKSRE(tcksre) |
DRAMTMG5_TCKESR(tckesr) | DRAMTMG5_TCKE(tcke),
&mctl_ctl->dramtmg[5]);
/* set two rank timing */
clrsetbits_le32(&mctl_ctl->dramtmg[8], (0xff << 8) | (0xff << 0),
(0x66 << 8) | (0x10 << 0));
/* set PHY interface timing, write latency and read latency configure */
writel((0x2 << 24) | (t_rdata_en << 16) | (0x1 << 8) |
(wr_latency << 0), &mctl_ctl->pitmg[0]);
/* set PHY timing, PTR0-2 use default */
writel(PTR3_TDINIT0(tdinit0) | PTR3_TDINIT1(tdinit1), &mctl_ctl->ptr[3]);
writel(PTR4_TDINIT2(tdinit2) | PTR4_TDINIT3(tdinit3), &mctl_ctl->ptr[4]);
/* set refresh timing */
writel(RFSHTMG_TREFI(trefi) | RFSHTMG_TRFC(trfc), &mctl_ctl->rfshtmg);
}
IDE(AHL-STM32MP157-20210221.zip)下载地址: http://sumcu.suda.edu.cn/AHLwSTM32MP157/list.htm
STM32MP157快速指南: AHL-STM32MP157快速指南-20210317.pdf
比如 xboot 这个代码段重定位 https://github.com/xboot/xboot/blob/master/src/arch/arm32/mach-f1c100s/start.S
_speedup:
nop
/* Copyself to link address */
adr r0, _start
ldr r1, =_start
cmp r0, r1
beq 1f
bl sys_copyself
第一条语句 adr r0, _start 编译后是 基于PC指针把 _start 的位置读到 r0 寄存器,
在哪个位置运行, r0 值就是多少. 比如程序在 0x800 运行, 那么 _start 就是 0x800
第二条语句 ldr r1, =_start 是取 _start 的链接地址, 也就是重定位地址.
如果 r1 与 r0 寄存器不相等, 他们肯定要进行重定位 (代码段复制)
为了证明这个问题, 我用MDK反汇编看了一下:
https://www.denx.de/wiki/publish/DULG/to-delete/UBootCmdGroupMemory.html
① 都读到内存,用cmp命令比较
② 都读到内存,比较crc值
有道理,感谢版主!
这么多元件不如加个两毛钱的单片机靠谱
因为荔枝派nano的ns2009没有接中断引脚, 所以把下面的轮询驱动:
https://github.com/Lichee-Pi/linux/blob/zero-4.13.y/drivers/input/touchscreen/ns2009.c
https://github.com/Lichee-Pi/linux/blob/zero-4.13.y/drivers/input/touchscreen/Makefile
https://github.com/Lichee-Pi/linux/blob/zero-4.13.y/drivers/input/touchscreen/Kconfig
添加到:
https://github.com/Lichee-Pi/linux/tree/nano-5.2-tf/drivers/input/touchscreen
设备树添加 ns2009:
https://github.com/Lichee-Pi/linux/blob/zero-4.13.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts
&i2c0 {
status = "okay";
ns2009: ns2009@48 {
compatible = "nsiway,ns2009";
reg = <0x48>;
};
};
本站下载: smallwit_x3_tfcard_20201203155930.tgz
1. 解压缩, 用 win32diskimager 把 smallwit_x3_tfcard_20201203155930.img 烧录到 TF卡
2. 把TF卡插入 小智X3开发板, USB插入OTG线启动, 电脑会出现一个U盘, 不要格式化.
3. 用 win32diskimager 把你的 flash img 烧录到 那个U盘即可。
昨天试了一下小智的X3开发板,确实可以用,一开始很快,后面就很慢了,估计是windows缓冲文件系统,加上flash擦写慢引起。最后自己再手动校验一下。
F1C200s主线gstreamer使用openmax调用cedar硬解码
http://whycan.com/t_5824.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
和这个帖子配合一起看,更有参考意义,感谢楼主!
好奇搜了一下, 还真有这玩意: http://www.trivialfeat.com/home/2016/11/17/media-transfer-protocol-in-a-usb-composite-gadget
/etc/init.d/S99-gadget
#!/bin/sh
CONFIGFS="/sys/kernel/config"
GADGET="$CONFIGFS/usb_gadget"
VID="0x0000"
PID="0x0000"
SERIAL="0123456789"
MANUF="Me"
PRODUCT="Radget"
case "$1" in
start)
echo "Creating the USB gadget"
echo "Loading composite module"
modprobe libcomposite
echo "Mounting ConfigFS"
mount -t configfs none $CONFIGFS
cd $GADGET
if [ $? -ne 0 ]; then
echo "Error setting up configfs"
exit 1;
fi
echo "Creating gadget directory"
mkdir gadget
cd gadget
if [ $? -ne 0 ]; then
echo "Error creating usb gadget in configfs"
exit 1;
fi
echo "Setting Vendor and Product ID's"
echo $VID > idVendor
echo $PID > idProduct
echo "Setting English strings"
mkdir strings/0x409
echo $SERIAL > strings/0x409/serialnumber
echo $MANUF > strings/0x409/manufacturer
echo $PRODUCT > strings/0x409/product
echo "Setting configuration"
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "CDC ACM + MTP + Mass Storage" > configs/c.1/strings/0x409/configuration
echo 120 > configs/c.1/MaxPower
echo "Creating ACM interface"
mkdir functions/acm.GS0
ln -s functions/acm.GS0 configs/c.1
echo "Creating MTP interface"
mkdir functions/mtp.mtp
ln -s functions/mtp.mtp configs/c.1
mkdir /dev/mtp
mount -t functionfs mtp /dev/mtp
echo "Creating Mass Storage interface"
mkdir functions/mass_storage.ms0
echo "/dev/mmcblk0" > functions/mass_storage.ms0/lun.0/file
echo "1" > functions/mass_storage.ms0/lun.0/removable
ln -s functions/mass_storage.ms0 configs/c.1/mass_storage.ms0
echo "Binding USB Device Controller"
echo `ls /sys/class/udc` > UDC
echo "Starting the MTP responder daemon"
mtp-server &
;;
stop)
echo "Stopping the USB gadget"
echo "Killing MTP responder daemon"
killall mtp-server
cd $GADGET/gadget
if [ $? -ne 0 ]; then
echo "Error: no configfs gadget found"
exit 1;
fi
echo "Unbinding USB Device Controller"
echo "" > UDC
echo "Removing Mass Storage interface"
rm configs/c.1/mass_storage.ms0
rmdir functions/mass_storage.ms0
echo "Removing MTP interface"
umount /dev/mtp
rmdir /dev/mtp
rm configs/c.1/mtp.mtp
rmdir functions/mtp.mtp
echo "Removing ACM interface"
rm configs/c.1/acm.GS0
rmdir functions/acm.GS0
echo "Clearing English strings"
rmdir strings/0x409
echo "Cleaning up configuration"
rmdir configs/c.1/strings/0x409
rmdir configs/c.1
echo "Removing gadget directory"
cd $GADGET
rmdir gadget
cd /
echo "Unmounting ConfigFS"
umount $CONFIGFS
;;
esac
请问全志V3s使用荔枝派最新的 linux 4.13-y 分支,如何支持声卡?
http://whycan.com/t_489.html#p1595
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
楼主, 给你关键字和链接: SER_RS485_RTS_AFTER_SEND SER_RS485_ENABLED
https://elixir.bootlin.com/linux/v5.4.77/source/drivers/tty/serial/imx.c#L445
https://elixir.bootlin.com/linux/v5.4.77/source/drivers/tty/serial/omap-serial.c#L310
全志的uart驱动修改这个文件就可以了:
https://elixir.bootlin.com/linux/v5.4.77/source/drivers/tty/serial/8250/8250_port.c#L1488
https://elixir.bootlin.com/linux/v5.4.77/source/include/linux/serial_8250.h#L101
照猫画虎, 在这里面实现控制即可:
serial8250_start_tx( )
serial8250_stop_tx( )
https://www.cnblogs.com/leisure_chn/p/10381616.html
https://cloud.tencent.com/developer/article/1409518
dts配置了吗?
最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?
http://whycan.com/t_645.html#p14763
(出处:哇酷开发者社区【Cortex M0/M3/M4/M7】)
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
发现一个好用的一个正则表达式可视化网站 https://regexper.com/
aodzip的sdk不香吗?
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
关于Ubuntu 18.04下编译 SSD202D(卖家给的SDK)的文件无法通过uboot更新到nand上的问题
http://whycan.com/t_5370.html
(出处:哇酷开发者社区【DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/】)
有网友已经玩起来了
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
用这个,然后勾选Qt就可以生成烧写镜像了。
底部的GND焊了,PCB上特地挖了个大的过孔。
今天坑网似乎有问题,原理图一直没上传成功。
如何在本站发图片, 顺便吐槽功能弱智的phpbb半自动步木仑
http://whycan.com/t_588.html#p16351
(出处:哇酷开发者社区【站务公告/网站建设】)
可能上传成功了,要点插入才行。
分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本
http://whycan.com/t_4008.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
分享一个2011年在魅族M9上跑的一个framebuffer plasma 测试程序
http://whycan.com/t_3492.html
(出处:哇酷开发者社区【DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/】)
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
最新的tiny200 sdk已经包含了上面的cedarc
三木同子 说:另外还想请教你一个问题,DB0-DB17怎么知道哪个是分别对应R,G,B?
本站不知道哪个帖子(找不到了)里有份全志A10 LCD的文档,有列出来。
v3s和LCD通过i8080总线模式
http://whycan.com/t_900.html#p3678
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
是这个吗?
我做过驱动MT7688 (widora neo 开发板) 驱动 PCM5102A 声卡的,也是没有I2C控制的, 直接I2S输入输出.
https://whycan.cn/files/members/3/QQ20180407173256.jpg
https://whycan.cn/files/members/3/QQ20180407173253.jpg
https://whycan.cn/files/members/3/QQ20180407173247.jpg
https://whycan.cn/files/members/3/QQ20180407173258.png
原理就是创建一张无需codec的虚拟声卡,然后把MT7688的i2s设置为master(非常重要!!!)
widora的代码驱动WM8960声卡, 声卡处于主模式, 时钟是WM8960提供给MT7688的,
如果用NS4168这种不能作为I2S master的声卡,一定要把mt7688改为master.
这操作够骚,学到了。
仿照aodzip给buildroot打补丁
buildroot-tiny200 (F1C100/200s) 开发包近期更新内容 * 已支持DVP摄像头 *
http://whycan.com/t_5221.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
收到,感谢大佬分享,我先试一试看疗效。
密钥这样放就可以,没必要放/etc目录:
感谢楼主分享宝贵教程,
说句实在话,PyQt5 真香: https://stackoverflow.com/questions/51828943/pyqt5-and-subprocess-popen
可以直接用串口登录X3就可以编程了,无需再烧录:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Console(QtWidgets.QWidget):
errorSignal = QtCore.pyqtSignal(str)
outputSignal = QtCore.pyqtSignal(str)
def __init__(self):
super().__init__()
self.editor = QtWidgets.QPlainTextEdit(self)
self.editor.setReadOnly(True)
self.font = QtGui.QFont()
# self.font.setFamily(editor["editorFont"])
self.font.setPointSize(12)
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.editor, 1)
self.setLayout(self.layout)
self.output = None
self.error = None
self.editor.setFont(self.font)
self.process = QtCore.QProcess()
self.process.readyReadStandardError.connect(self.onReadyReadStandardError)
self.process.readyReadStandardOutput.connect(self.onReadyReadStandardOutput)
def onReadyReadStandardError(self):
error = self.process.readAllStandardError().data().decode()
self.editor.appendPlainText(error)
self.errorSignal.emit(error)
def onReadyReadStandardOutput(self):
result = self.process.readAllStandardOutput().data().decode()
self.editor.appendPlainText(result)
self.outputSignal.emit(result)
def run(self, command):
"""Executes a system command."""
# clear previous text
self.editor.clear()
self.process.start(command)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Console()
w.show()
w.errorSignal.connect(lambda error: print(error))
w.outputSignal.connect(lambda output: print(output))
w.run("ping 8.8.8.8 -c 100")
sys.exit(app.exec_())
这是一个随意调用外部命令,输出日志随意显示到Qt5的例程.
越搞不定,越想搞!!
我用的和你的库一样, 动了这一处,难道不对?
https://whycan.cn/files/members/1398/QQ截图20200515172342.jpg
这么有研究精神我喜欢! 坐等大佬搞定
请教了大佬, 叫我用 valgrind 工具测试内存泄露, 试了一下, 不知道如何看结果.
另外一个大佬说, 逐步屏蔽代码, 然后我看最有嫌疑的就是 libcurl 部分, 然后就屏蔽了,
现在VSZ已经不增长了:
Mem: 23808K used, 30792K free, 52K shrd, 16K buff, 8208K cached
CPU: 2% usr 0% sys 0% nic 97% idle 0% io 0% irq 0% sirq
Load average: 0.10 0.07 0.02 1/43 224
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
213 189 root S 25420 47% 2% /usr/bin/system_char -platfo
20 2 root SW 0 0% 0% [kworker/0:1]
220 189 root R 1600 3% 0% top
121 1 root S 9272 17% 0% /usr/bin/adbd
189 1 root S 1612 3% 0% -/bin/sh
1 0 root S 1600 3% 0% {linuxrc} init
211 1 root S 1596 3% 0% /sbin/udhcpc -i eth1
184 1 root S 1596 3% 0% /sbin/udhcpc -i eth1
73 1 root S 1592 3% 0% /sbin/syslogd -n
77 1 root S 1588 3% 0% /sbin/klogd -n
51 2 root SW 0 0% 0% [kworker/0:2]
60 2 root SWN 0 0% 0% [jffs2_gcd_mtd5]
47 2 root SW 0 0% 0% [spi32766]
8 2 root SW 0 0% 0% [rcu_sched]
7 2 root SW 0 0% 0% [ksoftirqd/0]
164 2 root SW 0 0% 0% [kworker/u2:2]
48 2 root SW 0 0% 0% [kworker/u2:1]
12 2 root SW 0 0% 0% [kdevtmpfs]
3 2 root SW 0 0% 0% [kworker/0:0]
Mem: 25208K used, 29392K free, 44K shrd, 0K buff, 9512K cached
CPU: 6% usr 0% sys 0% nic 93% idle 0% io 0% irq 0% sirq
Load average: 0.03 0.06 0.02 1/39 485
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
203 179 root S 27788 51% 6% /usr/bin/system_char -platfo
51 2 root SW 0 0% 0% [kworker/0:2]
254 179 root R 1600 3% 0% top
107 1 root S 9268 17% 0% /usr/bin/adbd
179 1 root S 1612 3% 0% -/bin/sh
1 0 root S 1600 3% 0% {linuxrc} init
201 1 root S 1596 3% 0% /sbin/udhcpc -i eth1
173 1 root S 1596 3% 0% /sbin/udhcpc -i eth1
70 1 root S 1592 3% 0% /sbin/syslogd -n
74 1 root S 1588 3% 0% /sbin/klogd -n
57 2 root SWN 0 0% 0% [jffs2_gcd_mtd5]
312 2 root SW 0 0% 0% [kworker/0:1]
47 2 root SW 0 0% 0% [spi32766]
8 2 root SW 0 0% 0% [rcu_sched]
7 2 root SW 0 0% 0% [ksoftirqd/0]
48 2 root SW 0 0% 0% [kworker/u2:1]
5 2 root SW 0 0% 0% [kworker/u2:0]
12 2 root SW 0 0% 0% [kdevtmpfs]
11 2 root SW 0 0% 0% [cpuhp/0]
@checkout 我也有点感觉内存泄漏, 这个VSZ不断增长.
[19329.649078] Unable to handle kernel paging request at virtual address c4ec5eec
[19329.656332] pgd = c3380000
[19329.659042] [c4ec5eec] *pgd=00000000
[19329.662640] Internal error: Oops: 80000005 [#1] SMP ARM
[19329.667861] Modules linked in: g_ffs usb_f_fs libcomposite
[19329.673368] CPU: 0 PID: 6104 Comm: kworker/0:1 Not tainted 4.13.16-licheepi-zero+ #53
[19329.681187] Hardware name: Allwinner sun8i Family
[19329.685893] task: c3a29140 task.stack: c3bde000
[19329.690427] PC is at 0xc4ec5eec
[19329.693591] LR is at notifier_call_chain+0x48/0x84
[19329.698380] pc : [<c4ec5eec>] lr : [<c0138a6c>] psr: 60000193
[19329.704639] sp : c3bdfef0 ip : 00000000 fp : c3bdff3c
[19329.709858] r10: c0a03de4 r9 : c0701d04 r8 : c31e4e00
[19329.715077] r7 : c31e4e00 r6 : c39eee00 r5 : c3a29140 r4 : c3deca40
[19329.721598] r3 : c01027a4 r2 : 00000000 r1 : 00000002 r0 : c39eee00
[19329.728123] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment none
[19329.735337] Control: 10c5387d Table: 4338006a DAC: 00000051
[19329.741076] Process kworker/0:1 (pid: 6104, stack limit = 0xc3bde210)
[19329.747511] Stack: (0xc3bdfef0 to 0xc3be0000)
[19329.751872] fee0: 60000013 00000008 c3804500 00000064
[19329.760044] ff00: 00000000 00000008 c064631c 0349f000 c3b7fe50 00000004 c3b7fe50 ffffe000
[19329.768215] ff20: c3dec640 c3dec640 c0a02d00 c3dec658 ffffe000 00000008 c3bdff4c c064631c
[19329.776387] ff40: c3173280 c3dec640 c3dec640 c01327b8 a0000013 c0a38e54 c07e0780 00000000
[19329.784558] ff60: ffffe000 c337c400 c337c700 00000000 c3bde000 c3173280 c01326b8 c391fed8
[19329.792729] ff80: c337c41c c01374b4 c3bde000 c337c700 c0137368 00000000 00000000 00000000
[19329.800899] ffa0: 00000000 00000000 00000000 c0107538 00000000 00000000 00000000 00000000
[19329.809069] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[19329.817239] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[19329.825443] [<c0138a6c>] (notifier_call_chain) from [<00000008>] (0x8)
[19329.831968] Code: bad PC value
[19329.835031] ---[ end trace 87f5bdfbf0efad40 ]---
核心板的厂家已经找到,杭州笃远科技,资料尚未找到。
这都能找到, 人才!