- 博客(19)
- 收藏
- 关注
原创 ES8326声卡原理
I2S(Inter-IC Sound)是一种用于数字音频传输的串行通信协议。它主要用于将音频数据传输到数字音频处理器(例如解码器、编码器等)或其他数字音频设备。I2S协议使用三根线进行数据传输:时钟线(SCLK)、帧同步线(LRCLK)和数据线(SD)。时钟线用于同步数据传输,帧同步线用于标识数据帧的开始和结束,数据线则传输实际的音频数据。在此次移植中soc与es8326芯片之间使用I2S数据传输模式。
2026-01-09 14:07:45
1023
原创 KDB调试记录
最近发现我的内核调试方法除了printk就是触发内核panic的oops信息,调试手段太单一,就想着能不能像调试用户程序一样单步调试内核。网上找了一些资料,发现在linux2以后就合入了KDB/KGDB工具,可以单步调试内核,查看全部变量,局部变量等。它的主要功能是在系统挂起、无响应或进入锁死状态时,通过特定按键组合向内核发送指令,用于执行紧急操作,如安全重启、关机或收集调试信息。可以看到这里并没有g的sysrq_key_op,所以当我们echo g的时候没有任何响应。不过内核提供了动态注册key的功能。
2025-12-09 10:22:21
706
原创 随笔记录-杂记
编译内核环境:source /opt/xilinx/2023.2/petalinux/settings.sh编译对应arm平台程序:source /opt/petalinux/2023.2/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi。
2025-11-26 08:38:48
561
原创 top/htop常用调试
的增强版,界面友好,支持颜色、鼠标操作、树状进程视图。显示系统负载、CPU、内存使用、进程等信息。是最原始、最通用的实时进程监控工具。-d <十分之一秒>
2025-11-25 09:46:56
402
原创 记一次驱动调试经过
设备树:6.1内核的spidev驱动中新增了idtable属性,不能再使用compatible = “spidev”来匹配了,只能使用idtable中的compatible = "rohm,dh2228fv", 驱动匹配成功会在/dev/下生成设备文件spidevx.y。奇怪的是,在6.1和4.19内核的spidev驱动中,of_match_table中均没有设备树中的compatible = "spidev";那就是说在4.19的设备树中,compatible = "spidev";
2025-11-25 09:46:39
756
原创 NAT地址转换协议
实际上NAT应该归属于网络层,但它又依赖于传输层的port字段,这也是NAT协议饱受诟病的一点(NAT把传输层报文和网络层报文的内容综合起来形成了新的传输层的内容——port号, 违背了分层原则,即单独的网络的报文是无法通过NAT做ip地址转换的)思考:本质上,NAT是牺牲了IP+port的范围,即把多个ip的port范围缩小到一个ip的port范围,试想,如果每个局域网主机的传输层的所有port都正在与公网通信,NAT地址转换还能工作吗?目的:缓解IPv4地址不足的问题。
2025-11-24 16:10:12
132
原创 vmstat
cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。我的机器内存充裕,一切正常。所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。
2025-11-24 16:09:49
369
原创 linux性能分析方法
(system jiffies)分别记录了线程在用户态和内核态消耗的 jiffies(时钟滴答)。要区分“线程执行业务代码(用户态)” 和 “内核为该线程做大量工作(如驱动 DMA、系统调用频繁)”,使用。ftrace / trace-cmd / bpftrace / BCC(可以按函数/系统调用聚合内核时间),或用 BPF 工具(bcc 或 bpftrace)做火焰图/热点分析(比如。(显示线程级的 CPU% 和 user/system,来自。(system)给出系统整体用户态/内核态比例;
2025-11-21 11:45:55
698
原创 eclipse 远程调试python
老版本的插件就在eclipse的安装目的下的plugin目录,新版本为了减少冗余(比如安装了多个eclipse,每个里面都有相同的插件),在安装eclipse时会在c://user//dell目录下生成.eclipse和.p2两个目录用于保存插件。通过修改安装目录下的配置文件来修改插件路径,可以将eclipse安装的插件目录复制到安装目录,从而不依赖系统文件,可以便于将自己安装好插件的eclipse给其他人使用。修改/etc/ssh/sshd_config。2019配置ssh允许root登录。
2025-11-21 11:43:05
146
原创 以太网协议
由于802.3格式的报文最大长度为1500,所有在S MAC后面的两个字节如果不超过1500,则是802.3格式,如果大于1536,则是Ethernet II帧格式。如果length等于0,则小于60长度的包会被接受,否则认为是一个sizeerr,被丢弃(这个结论是从sja1105交换机的表现上看出来的,并不清楚这样做的原因)为了更加灵活的分配物理网络资源,于是诞生了VLAN(IEEE 802.1Q),通过vlan的分配可以将一个物理网络分成多个逻辑网络,便于网络管理,减轻网络负担,避免网络风暴等。
2025-11-20 09:12:07
651
原创 openipc记录
部分摄像头也可能默认的波特率为57600,不同的厂商有不同的键位组合,最常见的有ctrl-c,也有些是enter,esc,*,甚至任意键。作为一款开源的操作系统,旨在替换IP摄像头的那些闭源,不安全,不可定制,甚至不再被厂商支持的预安装的固件,提供预编译的二进制安装文件,也提供源码,遵循最简单的开源协议MIT License。5、确定SOC的flash的size,可以从PCB上的芯片的型号上读取,也可以从uboot的打印中获取。(因为不同的cpu的ram,flash的地址不同,大小不同,地址空间也不同)。
2025-11-20 09:10:58
1347
原创 DSA架构交换芯片测试
网络拓扑测试目的:验证host端口和slave端口是否为独立的网络设备(即dsa switch生成的网络设备是否可以看成独立的网卡设备)环境:DA1 扣板为ksz9896,系统中host对应的网络设备为ethbus,5个slave端口对应的网络设备为swp0~4DA2 主要使用ethcfg口用于ping命令测试连接方式:DA2的ethcfg口通过网线连接DA1的port4(对应网络设备swp3)test1:ip配置 ethcfg = 192.168.200.10 swp3 = 192.168.20
2025-11-17 08:37:31
809
原创 修改ubuntu内核版本
这是因为Ubuntu默认注释掉了软件报的代码源,可以根据需要恢复/etc/src/sources.list中被注释掉的deb-src或者添加自己的代码源,我选择了阿里云的源。本文在Ubuntu20上面获取本发行版本对应的内核,并修改源码(添加调试代码),然后编译新内核,修改grub从新的内核启动Ubuntu。这里配置内核时,执行一些check时会报错,提示/temp目录下的一些文件找不到,不知道具体原因和产生的影响是什么。如果编译成功,会在目录的上一级目录生成多个*.deb文件。3/配置kernel。
2025-11-17 08:36:56
327
原创 can错误帧详解
在这一状态下,节点Node_A检测到一个错误就会发送带有被动错误标志的错误帧,因为被动错误标志是连续六个隐性位,所以这个时候总线上正在传输的报文位流不会受到该被动错误帧的影响,其它的节点该发送的发送,该接收的接收,没人搭理这个发送被动错误帧的节点Node_A。Tips: 处于主动错误状态,说明这个节点目前是比较可靠的,出现错误的原因可能不是它本身的问题,即刚刚检测到的错误可能不仅仅只有它自己遇到,正是因为这一点,整个总线才相信它报告的错误,允许它破坏掉发送中的报文,也就是将这一次的发送作废。
2025-11-14 14:53:33
904
原创 petalinux2023添加文件到rootfs
在meta-user/recipe-app下创建firmware文件夹,参考2019,将file中的firmware.c和makefile删除,替换为。此时在meta-user/conf文件夹下的user-rootfsconfig文件中会新增用户配置配置项CONFIG_firmware。WIFI_MT7961_patch_mcu_1_2_hdr.bin和WIFI_RAM_CODE_MT7961_1.bin。此时需要注意的是,2019版本的firmware.bb中。提示中告诉我们是FILES变量未设置正确。
2025-11-14 14:44:29
374
原创 /tmp/tmp.RyDQQuCamY/petalinux-env-check文件找不到
安装petalinux时报如上错误,因为缺少gawk安装包,使用如下命令解决:
2023-07-05 19:50:19
275
原创 QT文件操作Qfile中writeonly/append和readwrite的区别
readwrite在写入时不会清空文件内容,但会从文件头位置开始写入内容。Append在写入内容时不会清空文件内容,从文件末尾写入内容。writeonly在写入前会清空文件内容。
2023-06-27 17:20:43
1151
原创 数组左上方到右下方的路径
考虑使用递归回溯的算法,每走一步都将坐标记录进vector中,如果当前坐标为最右下方,则保存下这条路径,在递归函数退出时需要将当前坐标从vector中拿出。小兔子在一个M*N的方格的左上方,家在方格的右下方,其中部分方格有蛇,小兔子不能走有蛇的方格。5,如果兔子不是只能向右或者向下,而是上下左右所有的方向都可以走,只是一个格子最多只能走一次,那么如何记录所有的路径。因此采用动态规划的方法,此时的时间复杂度和空间复杂度都是M*N。4,设计一个函数返回的是所有的路径,而不是路径的数目。到右下方的路径均为2。
2023-03-08 23:13:04
182
原创 找出数组中两个元素之差为值diff
110,20,50,130,200,10,90,60,120,40] 差值:30,40,100, 160,0,-20。[2,5,11,15,16,18,20,22,23,24]差值:1, 6,3, 16,0,-2。借鉴基数排序的思想,统计元素的个数,然后比较下标差为diff的统计数组是否都有值。无序数组[ 1,3,5,8,4,2,9,7,15,10] 差值:1, 6,3, 16,0,-2。有序数组:[1,2,3,4,5,6,7,8,9,10]差值:1, 6,3, 16,0,-2。
2023-03-08 21:55:37
921
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅