常用指令0324

休眠唤醒
echo “+5” >/sys/class/rtc/rtc0/wakealarm
echo mem > /sys/power/state

echo 8 > /proc/sys/kernel/printk
echo N > /sys/module/printk/parameters/console_suspend

am start -n com.clock.pt1.keeptesting/.MainActivity

ifconfig eth1 169.254.107.78
ifconfig eth1 up
ifconfig eth1 down
ping 169.254.107.78

fdt set /soc/lcd1 status okay

fdt list /soc@3000000/s_twi0@7081400/pmu@34/regulators@0/cldo4
fdt set /soc@3000000/s_twi0@7081400/pmu@34/regulators@0/cldo4 regulator-always-on;

sunxi_dump指令
cd /sys/class/sunxi_dump

echo 0x66666 > dump;cat dump

cd /sys/devices/soc.0/can.2/

reboot efex

SPDX-License-Identifier: GPL-2.0-only

KERNELDIR = /home/Android/android13_platform/android/longan/out/kernel/build
CURRENT_PATH := ${shell pwd}
MAKE = make ARCH=arm64 CROSS_COMPILE=/home/Android/android13_platform/android/longan/out/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-
GCC = /home/Android/android13_platform/android/longan/out/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc

SUNXI-GMAC = sunxi-gmac

build:kernel_module

kernel_module:
rm -rf KaTeX parse error: Expected 'EOF', got '#' at position 38: … sunxi-gmac.o #̲{GCC} sunxi-gmac.c -o ${SUNXI-GMAC}
${MAKE} -C K E R N E L D I R M = {KERNELDIR} M= KERNELDIRM={CURRENT_PATH} modules

clean:
rm -rf ${SUNXI-GMAC}
${MAKE} -C K E R N E L D I R M = {KERNELDIR} M= KERNELDIRM={CURRENT_PATH} clean

查看下载的环境,repo init的
cat manifest.xml

md reg val
mw reg val

查看中断
cat proc/interrupts | grep kbd

gmac指令
ifconfig eth0
ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:aa:bb:dc

mii write 0x01 0x00 0x0140
setenv ipaddr 169.254.107.72
setenv serverip 169.254.107.75
ping 169.254.107.75
mii read 0x01 0x00
mii info 0x01

TCP吞吐测试:
Server端:
iperf -s -i 1
Client端:
./iperf -c 169.254.107.75 -b 700M -i 1 -t 10 -p 2203
-P 4

UDP吞吐测试:
Server端:
iperf -s -u -i 1
Client端:
iperf -c 169.254.107.75 -u -b 1000M -i 1 -t 10
-P 4

uboot改mac地址
pri
setenv mac 00:11:22:aa:bc:dc
saveenv
boot

pri
setenv loglevel 8
saveenv
pri

boot

udhcpc -b -i eth0

ftrace工具使用
一切操作在此目录进行
/sys/kernel/debug/tracing

如果没有tracing目录,在debug使用以下命令挂载
mount -v | grep debugfs
mount -t debugfs debugfs /sys/kernel/debug
cd /sys/kernel/debug/tracing

  • 关闭静态的插桩点的trace打印信息:
    echo 0 > events/enable
  • 清掉上一次的trace残留:
    echo > trace

设置你想使用的tracer,这里设置为function类型的tracer
echo function > current_tracer

把进场pid号写入
echo 3407 > set_ftrace_pid
echo > set_graph_function
echo > set_ftrace_filter
echo sunxi_can_interrupt > set_ftrace_filter
echo sunxi_can_start_xmit >> set_ftrace_filter
echo trace_printk > set_ftrace_filter
echo can_asm_rx >> set_ftrace_filter
echo can_asm_write_cmdreg >> set_ftrace_filter
cat set_ftrace_filter
cat trace

使能/失能trace
echo 1 > tracing_on
echo 0 > tracing_on

kasan
lock_debug
memory_debug

DETECT_HUNG_TASK
DEBUG_RT_MUTEXES 1
DEBUG_MUTEXES 1
DEBUG_WW_MUTEX_SLOWPATH
DEBUG_SPINLOCK 1
DEBUG_LOCK_ALLOC 1
PROVE_LOCKING
LOCKDEP 1 2
LOCK_STAT
DEBUG_LOCKDEP
DEBUG_ATOMIC_SLEEP
DEBUG_PAGEALLOC
DEBUG_PAGEALLOC_ENABLE_DEFAULT
PAGE_OWNER
PAGE_POISONING
DEBUG_WX
SLUB_DEBUG_ON
SLUB_STATS
DEBUG_KMEMLEAK
SCHED_STACK_END_CHECK
DEBUG_VM 2
BOOTTIME_TRACING
FUNCTION_TRACER 1 2
FUNCTION_PROFILER
FTRACE_SYSCALLS

头指针分离
把文件夹删掉,重新repo sync。然后加上下载环境时候的repo start tina --all

bsp swc-know 测试文件加上这个结论

swc-know更新到最新的
git stash
git pull --rebase

51RnucNE/SXyWJ5DAN0LfX1MwjeIQwOq6waGg8cZkg

cat /proc/net/can/stats

1、流程是怎么,什么总线清空都不管就切换,(是否空闲)
2、且之前没有数据
3、应用层协议,切之前要通知
4、测试用例 主机发消息从机,切波特率。发数据的话要停止。告诉他要切多少波特率。
5、每个测试用例写个faq

uboot 设置网口的代码。怎么初始化,ping

绑定cpu核
比如绑定核3
echo “8” > /proc/irq/514/smp_affinity
cpu0是00000001 0x1
cpu1是00000010 0x2
cpu2是00000100 0x4
cpu3是00001000 0x8
cpu4是00010000 0x10
cpu5是00100000 0x20
cpu6是01000000 0x40
cpu7是10000000 0x80
用的是虚拟中断号,可以在/proc/interrupt查看

echo “8” > /proc/irq/58/smp_affinity

看cpu核的数量
cat /proc/cpuinfo

使用 dmesg 可以找出内核最新消息中的错误和警告
dmesg | more
dmesg | grep gmac
dmesg | grep mdio
dmesg | grep can
dmesg | grep “phy_reg is”

cd vendor/lib/modules/
insmod sunxi-gmac.ko
insmod sunxi-mdio.ko

pack失败,需要改变分区大小,方法如下:
1、进入 device/config/chips/{CHIP}/configs/{BOARD}/目录
2、根据选的LICHEE_LINUX_DEV,比如longan\bsp\buildroot等,选择需要进入的目录
3、找到sys_partition.fex文件
4、找到 “rootfs” 那行,改变size属性。
相关知识连接
http://wiki.allwinnertech.com/index.php/Tina%E5%88%86%E5%8C%BA%E8%AF%B4%E6%98%8E#.E5.B8.B8.E8.A7.81.E9.94.99.E8.AF.AF

转换文件格式
iconv -f utf-8 -t ascii//TRANSLIT filename.txt > newfilename.txt
iconv -f ascii -t utf-8 filename.txt > newfilename.txt

查看cpu_idle有没有开
zcat /proc/config.gz | grep CPU_IDLE

git status
git add .
git commit -m “add log”
git format-patch -1
mv 0001-add-log.patch …/
git reset --hard b23691ec465680a5b67de2e280ff441d39469d12
git apply …/0001-add-log.patch

git fetch tina
git rebase tina/sunxi-dev
git restore --staged .
git restore .
git rebase --continue

模块上板没有加载
1、首先看看menuconfig有没有打开
2、看看设备树节点有没有打开,有没有引脚复用
3、不确定有没有编译进去,可以在驱动中加一些会出错的东西,如果报错说明有在编译
4、在probe函数中加入打印,看看它跑到哪一步了
5、实在不行可以看看硬件是否有问题(如a523的gmac默认是不行的)
6、让他们多拿几块板,我手里一定要有一块
7、Android有问题就要试试linux
8、第一时间拿到和客户一致的环境
9、给测试部的命令,专门用文档记载,出了问题让他们自查

printk(“\033[44m [%s][%d] cfg_size=%x,va_cfg_base=%llx\033[0m \n\r”, func, LINE,cfg_size,(unsigned long long )va_cfg_base);
https://blog.csdn.net/weixin_69553582/article/details/125700943

Android相关知识
SDK 路径:a523_t_android

一般进去先 source build/envsetup.sh

然后执行 ./longan/build.sh config
依次选择 android -> a523 -> evb -> default

然后 lunch 选择 a523_evb_arm_go-userdebug

可以按上面的命令试试,都配置好后,如果要进行编译,则执行
./longan/build.sh && make -j16 && pack
./longan/build.sh && make -j16 && pack -v

编译模块的时候,menuconfig要选择M
在目录R:\a523_t_android\device\softwinner\saturn\a523-evb添加一个文件夹gmac
里面有两个文件 config.mk init.gmac.rc
内容分别是
config.mk:
LOCAL_MODULE_PATH := $(shell dirname $(lastword $(MAKEFILE_LIST)))

PRODUCT_COPY_FILES +=
( L O C A L M O D U L E P A T H ) / i n i t . g m a c . r c : (LOCAL_MODULE_PATH)/init.gmac.rc: (LOCALMODULEPATH)/init.gmac.rc:(TARGET_COPY_OUT_VENDOR)/etc/init/init.gmac.rc \

init.gmac.rc:
on boot
# insmode gpio-leds module
insmod /vendor/lib/modules/sunxi-gmac.ko
insmod /vendor/lib/modules/sunxi-mdio.ko

还要关闭gki
在目录R:\a523_t_android\device\softwinner\saturn\a523-evb的BoardConfig.mk文件最上方添加
CONFIG_AW_ENABLE_GKI := false

android固件烧录以后
小机端要输入su

cp命令
复制一整个文件夹为另外一个文件夹使用命令
cp -af linux-5.4 linux-5.4-bk

git tag命令查看已存在的tag
回退到某一个tag
git reset --hard auto-t113-i-linux-v1.0

烧录固件的方法
1、按住uboot再按reset,先松手uboot
2、按住reset再按fel,先松手fel
3、reboot + 按键2
4、reboot efex

cpu调频
echo 118000 > /sys/class/thermal/thermal_zone0/emul_temp
比112000要大,温度才会变化

cat /sys/class/thermal/thermal_zone0/temp

while [ 1 -eq 1 ]; do
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_*_freq
echo ========
sleep 2
done

查看当前频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

echo “performance” > scaling_governor

查看文件有没有用硬浮点
strings -a linpack32 | grep fpu

查看sdk用的是用的是哪个defconfig
1、修改一下menuconfig的配置,git status看看改的是哪个文件
2、删掉内核目录下的.config.config.mark.config.old,重新编译,编译过程中会打印出defconfig

在A服务器上复制B服务器的文件到A服务器
scp -r linux02@172.20.1.85:/home/linux02/lianglonghui/sdk/ino_pintai/a40i/linux-3.10/auto_change_to_assembly_file.txt ./

linux-3.10 buildroot编译工具
1、一般是进入buildroot-2016目录
make menuconfig
把需要的工具的宏打开,can的是iproute2\libsocketcan\can-utils
然后make
把out目录的东西删掉,重新编译打包即可

2、如果buildroot目录make失败
在目录out/sun8iw11p1/linux/common/buildroot$
make iproute2
make libsocketcan
make can-utils
然后重新编译打包

3、linux-5.4 buildroot编译工具

linux-3.10 配置menuconfig
make sun8iw11p1smp_defconfig
make ARCH=arm menuconfig
然后,要用compare工具,把.config修改了的东西复制到sun8iw11p1smp_defconfig,
不然每次重新./build.sh config的时候都会重新生成一份.config,这样之前的修改就保存不下来 defconfig是原版,其他的是copy版

汇川新系统掉帧问题
1、检查defconfig,客户用的是sun8iw11p1smp_ubi_h6u_defconfig,据说之前的plc系统并没有问题,对比两个的config配置
CONFIG_SLUB_DEBUG | s
CONFIG_SLABINFO 1 | s CONFIG_HW_PERF_EVENTS
CONFIG_CPU_IDLE_SUNXI |
CONFIG_FPE_NWFPE 1 | s
CONFIG_PRIVATE |
CONFIG_POWER_DOWN_SAVE_MESSAGE |
CONFIG_ION 1 | s

FPGA验证准备工作
1、搞清楚验证的对象、流程、
2、准备好驱动
dma模式怎么实现
对比gmac的内容来学习

fpga验证流程
1、准备好驱动代码
2、准备设备树
3、查看spec,确定ccmu\pinctrl配置
4、

汇川问题解决步骤
1、先看能不能复现环境
2、如果不能的话,让客户perf捉正常情况和不正常情况的图,对比一下有什么差距
3、定位可能出现问题的地方,在里面加打印
4、每一个调试版本都需要记录下来,例如2.4-debug-v1,让客户跑的时候把驱动版本打印出来,看看是不是一样的(免得被坑)
5、创建一个git,保存各个版本的代码

32深度,加打印,做实验,深度最深用了多少

vim tags生成
在需要的目录下输入这个指令,比如在kernel目录
~/.vim/buildenv.sh

查看中断有没有触发
cat /proc/Interrupt

串口线 焊接
1、橙——黑
2、黑——白
3、红——绿

头指针分离
git branch -av
git branch -vv
git stash //把修改保存起来
git stash show
git stash list
git stash apply 0 //恢复
git stash list
git checkout .
git checkout tina

cp /tmp/amp_rv0.bin /lib/firmware/amp_rv0.bin
echo start > sys/class/remoteproc/remoteproc1/state //开启rv核
echo stop > sys/class/remoteproc/remoteproc1/state //关闭rv核

echo -e “/tmp\c” > /sys/module/firmware_class/parameters/path
echo stop > /sys/class/remoteproc/remoteproc1/state
echo amp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware
echo start > /sys/class/remoteproc/remoteproc1/state


hal_awlink_xmit awlink1 -I i -D i -L i -e -o 10000
hal_awlink_xmit awlink1 -I i -D i -L i -n 10000 -t 100 -e -R

hal_awlink_open awlink1 bitrate 1000000 loopback_off

awlink_rx_test awlink1 up
awlink_rx_test awlink1 down
hal_awlink_close awlink1

hal_can_open can0 loopback_on

ip -detail -statistics link show can0
ip link set can0 down
ip link set can0 type can restart-ms 10
ip link set can0 type can bitrate 1000000 loopback on
ip link set can0 qlen 300
ip -detail -statistics -s link show can0
ip link set can0 up

candump -x -d can0 &
cangen can0 -L i -D i -I i -e -n 100

把rv固件adb push到根目录
adb push A:\workspace\t113-tina\rtos\lichee\rtos\build\t113_i_c906_evb1_auto\img\rt_system.elf /amp_rv0.bin

dsp固件start的时候会有异常log,警告, pinnic之类的"sunxi-rproc 3000008.dsp_rproc: Direct firmware load for rproc-dsp_rproc-fw failed with error -2"
因为没有把固件名字弄进去。

madonglin@GZExdroid05:~/workspace/t113-tina/rtos/lichee/rtos/build/t113_i_c906_evb1_auto/drivers/rtos-hal/hal/source/can$
/home/madonglin/workspace/t113-tina/rtos/lichee/rtos/tools/riscv64-elf-x86_64-20201104/bin/riscv64-unknown-elf-ar -r libcan.a sunxi_can_slib.o sunxi_can.o

./…/…/…/…/…/lichee/rtos/tools/riscv64-elf-x86_64-20201104/riscv64-unknown-elf/bin/objdump -h text libcan.a --wide //查看段再文件的偏移
./…/…/…/…/…/lichee/rtos/tools/riscv64-elf-x86_64-20201104/riscv64-unknown-elf/bin/objdump -s -D libcan.a //找到函数的偏移

以太网问题排查
1、phy id有无问题
(1)读出来的id是0,注意驱动加载顺序,phyrst引脚上下拉,复位情况 分析各个引脚是否配置准确
(2)读出来的id是1FFF,注意phyrst引脚上拉下,复位情况
(3)有可能是驱动加载顺序错了,正常的顺序应该是先gmac驱动再mdio驱动。

echo 0x00 0x02 > mii_read;cat mii_read

修改驱动加载顺序
1、修改驱动在drivers/Makefile里面的顺序
2、修改驱动的initcall优先级,查看优先级或者修改有没有生效可以在目录
out/kernel/staging/的System.map查相应的驱动名字。
(!注意!这是linux固件编译进内核的情况,如果不是编译进内核,编译成ko的话,有可能这个顺序还是会打乱)

phy id概率性为0的问题,就是因为在vendor_ramdisk.modules里面写insmod sunxi-gmac.ko insmod sunxi-mdio.ko。但是实际上上板还是mdio先加载导致的。
可以在init.ethernet.rc里添加如下代码。

insmode gmac module

on late-init
insmod /vendor/lib/modules/sunxi-gmac.ko

on boot
insmod /vendor/lib/modules/sunxi-mdio.ko

加载顺序,最早加载的是on early-init,其次是on late-init,然后是on boot。这样限定以后gmac就会比mdio先加载啦

qt bug导致光标消失
echo -e “\033[?25h”

怎么切换分支
git checkout remotes/tidy/sunxi-dev
此时头指针会分离
git checkout -b sunxi-dev-oright
创建一个新分支名字,就可以了

如果没有显示位于分支xxx,您的分支与上游分支xxx一直,可以用下面这个命令,前面的是远程仓库的分支,后面是自己创建的分支
git branch --set-upstream-to=tidy/<分支> aiot-android13-stable
git branch --set-upstream-to=tidy/product-aiot-android13-stable aiot-android13-stable

meils编译指令
cd /home/madonglin/workspace/f133-meils/lichee/melis-v3.0/source
(source melis-env.sh
lunch ->f133-evb
make menuconfig)
make -j16 && pack

回溯调用栈
把死机打印的信息写在ba.txt里面
callstack ba.txt

怎么知道编译的编译链是哪个?
cat .buildconfig
LICHEE_COMPILER_TAR那一项就是

t527编译汇编
ccflags-y += -O0 -v -Wno-error -march=armv8-a //不编译优化

gcc编译不优化
#pragma GCC push_options
#pragma GCC optimize (“00”)

#pragma GCC pop_options

clang编译不优化
#pragma clang optimize off

#pragma clang optimize on

Makefile指定不优化
ccflags-y += -O0 -v -Wno-error -march=armv8-a

android编译链
make CC=clang HOSTCC=clang LD=ld.lld NM=llvm-nm OBJCOPY=llvm-objcopy LLVM=1 HOSTLD=ld.lld
ARCH=arm64 -j16 O=/home/madonglin/workspace/android_t527/longan/out/t527/kernel/build
KERNEL_SRC=/home/madonglin/workspace/android_t527/longan/kernel/linux-5.15
INSTALL_MOD_PATH=/home/madonglin/workspace/android_t527/longan/out/t527/kernel/staging

linux编译链
make CROSS_COMPILE=/home/madonglin/workspace/t527_linux_aiot/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
ARCH=arm64 -j16 O=/home/madonglin/workspace/t527_linux_aiot/out/t527/kernel/build
KERNEL_SRC=/home/madonglin/workspace/t527_linux_aiot/kernel/linux-5.15
INSTALL_MOD_PATH=/home/madonglin/workspace/t527_linux_aiot/out/t527/kernel/staging

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值