口袋物联
作者: 口袋物联
主要从事Linux系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统
展开
-
uboot下板级头文件(configs/include)怎样引用的呢?
最新在移植zturn-lite开发板,发现include/configs下的zynq-common.h文件被引用,按照以前的经验,应该是一个开发板的名字,那么,对于include/configs目录下的头文件,系统到底是什么选择的呢?对比zynq_altk_defconfig与xilinx_zynq_virt_defconfig,发现正点原子下,多了对CONFIG_SYS_CONFIG_NAM的定义,且配置下正好有此文件,是巧合还是有意?百度的AI答案,似乎回答了,又似乎没有回答。1 一切答案都在源码中。原创 2024-11-19 16:07:15 · 115 阅读 · 0 评论 -
Linux system-timesyncd同步机制梳理
chronyd是一个用于网络时间同步的守护进程,设计用来替代传统的 ntpd(Network Time Protocol Daemon),通过提供更快的收敛速度、更低的资源消耗和更简单的配置,成为了 ntpd 的一个有力的替代品,尤其适合那些对性能和资源敏感的场景。代码实现,主要基于dbus封装接口,如果对此了解,看容易理清楚逻辑,在src/timesync目录下,主要有4个文件。配置文件位于:/lib/systemd/system/systemd-timesyncd.service。原创 2024-11-19 08:44:42 · 314 阅读 · 0 评论 -
yocto下编译perf失败的解决方法
由类似No libzstd found错误,结合参考【1】难道是库没有安装成功?尝试在ubuntu下安装,没有重新安装,确认已经安装了。在新环境使用yocto编译镜像时,发现最后一直编译不过perf,具体的编译提示错误如下。再对比同样的sdk,以前编译成功的打印,同样存在类似的错误,故应该不是库的问题。再参考【2】,经确认,确实存在.gitignore文件。通过如下命令,发现有多处存在.gitignore文件。原创 2024-11-08 10:18:30 · 152 阅读 · 0 评论 -
shell之if语句
{parameter:=word} 如果parameter为空,则表达式和parameter的值为word,否则表达式的值为parameter的值。${parameter:-word} 如果parameter为空,则表达式的值为word,否则表达式的值为parameter的值。${parameter:+word} 如果parameter为空,则表达式的值为word,否则表达式的值空。${parameter%%word}从尾开始扫描word,将匹配word正则表达式的字符过滤掉,最长匹配。原创 2024-09-20 14:45:23 · 137 阅读 · 0 评论 -
yocto传递宏(bitbake传递宏)
在移植pulseaudio的过程中,发现出问题时,会abort,致使应用退出,而abort信号,主要有如下3种情况。由上可知,默认没有定义NDEBUG,故pa_assert会发挥作用,导致有问题时,断言触发abort,应用退出。pa_assert定义在macro.h文件中,如下所示。代码里,充斥着大量的pa_assert代码,如下所示。在bb文件中,增加NDEBUG的定义。原创 2024-09-06 10:40:13 · 182 阅读 · 0 评论 -
ubuntu qt15.5 :QT License check failed! Giving up…
4 确认无解,需要license。3 出现源码,但不能运行。1 确认Qt安装位置。原创 2024-08-29 18:03:46 · 389 阅读 · 0 评论 -
am62x芯片安全类型确认(HS-SE, HS-FS or GP)
如下是从sk-am62x参考板上获取到的真实数据,值的一提的是,数据的第1个0没有打印出来,这个可以从后面的打印看出,它应该是每隔一定的时间,重新打印一次,中间打印C字符。但在获取SOC的类型时,需要从UART启动获取数据,需要将启动模式设置为UART启动。在开发过程中,一般设置启动方法为SD卡启动,如下设置。• HS-FS:高安全性 - 现场安全型。• HS-SE:高安全性 - 强制安全型。在SD卡启动文件中,可以查看到,我们可以通过给定的示例获取,如。但板上的芯片,到底是那种呢?有没有方法可以确认?原创 2024-06-20 12:08:10 · 451 阅读 · 0 评论 -
github安全问题token和sshkeys
一般在系统的~/.ssh/id_rsa.pub目录,如果没有,可能通过命令ssh-keygen生成,其中t表示加密类型,支持dsa | ecdsa | ed25519 | rsa | rsa1,最后通过cat ~/.ssh/id_rsa.pub或cat ~/.ssh/id_ecdsa.pub获取真正的密钥。在菜单中,选择点击“Personal access tokens”–>或“Tokens(classic)”按钮。依次输入Title、Key,最后点击点击“Add SSH key”按钮完成添加。原创 2024-06-19 18:38:08 · 689 阅读 · 0 评论 -
arm系统中双网卡共存问题
参考Linux C 获取主机网卡名及 IP 的几种方法。原创 2024-06-05 10:25:55 · 360 阅读 · 0 评论 -
Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
在这里插入代码片在这里插入代码片在这里插入代码片在这里插入代码片##IO多路复用在这里插入代码片在这里插入代码片在这里插入代码片[1][1][1][1][1]原创 2024-06-05 10:10:55 · 379 阅读 · 0 评论 -
Win10下CodeBlock实现socket TCP server/client
文章目录1 安装codeblock2 适配libws2_32.a库3 TCP socket工作原理4 代码实现服务端客户端5 运行效果1 安装codeblock官方免费下载值得一提的是,安装时,指定安装路径,其他默认安装即可2 适配libws2_32.a库默认安装,只有3个库,如果编译socket,需要专门的库libws2_32.a,可下载同时需要在项目中设置3 TCP socket工作原理4 代码实现服务端//server.c#include <stdio.h>原创 2024-06-05 09:51:30 · 369 阅读 · 0 评论 -
am62x edp屏调试
1 dtbo文件格式的了解2 pwm的类型及使用3 gpio配置的准确。原创 2024-05-09 15:51:10 · 201 阅读 · 0 评论 -
am62x A53与M4F通信
而在ipc_rpmsg_echo.c中,主要实现ipc_rpmsg_echo_main,该函数中,首先等待linux启动,然后注册一个回调函数,用来处理IPC_NOTIFY_CLIENT_ID_RP_MBOX信息 ,然后创建接收任务ipc_rpmsg_create_recv_tasks,用来处理RPMESSAGE_CHAR_PING和RPMESSAGE_PING。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。原创 2024-04-30 11:02:04 · 936 阅读 · 0 评论 -
am62x A53与R5F通信
AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。原创 2024-04-30 10:04:26 · 680 阅读 · 1 评论 -
am62x SD卡启动
下载镜像后,解压成wic格式文件,使用balenaEtcher工具制作SD启动卡。由原理图可知,经FT4232芯片,将CPU的4个串口引出。(2)连接USB power和USB uart。原创 2024-04-30 02:45:00 · 292 阅读 · 0 评论 -
am62x Ti官方资源一览
打开主页,最左侧显示如下,当前分为7大类Arm@-based microcontrollers Arm系列微控制器Arm@-based processors ARM系列处理器C2000 real-time microcontrollers C2000系列实时微控制器Delelopment Tools 开发工具mmWave radar sensors 雷达传感器MSP430 microcontrollers MSP430系列单片机Wireless connectivity 无线模块。原创 2024-04-29 00:00:00 · 274 阅读 · 0 评论 -
am62x uboot启动流程及镜像组成(tiboot3.bin tispl.bin u-boot.img)
[1]AM62 Platforms[2]TIFS - TI Foundational Security Firmware - Consists of purely firmware meant to run on the security enclave.DM - Device Management firmware also called TI System Control Interface server (TISCI Server) - This component purely plays the原创 2024-04-28 18:03:19 · 696 阅读 · 0 评论 -
am62x MCU SDK编译环境搭建
选择MCU SDK下载。原创 2024-04-28 17:39:05 · 546 阅读 · 0 评论 -
am62x linux sdk环境搭建
PLATFORM 代表SDK支持设备的机器名称,此名称与Arago项目编译系统直接 相关ARCH代表机器的架构UBOOT_MACHINE当编译uboot时,配置正确的uboot源码TI_SDK_PATH,指向SDK目录DESTDIR指向应用或驱动存放的目录LINUX_DEVKIT_PATH 即linux-devkit目录,存放交叉编译器目录CROSS_COMPILE指定交叉编译器ENV_SETUP 指向linux-devkit目录下环境setup脚本。原创 2024-04-28 17:36:20 · 755 阅读 · 0 评论 -
systemd之journalctl
默认情况下(当 Storage= 在文件 /etc/systemd/journald.conf 中被设置为 auto),日志记录将被写入 /var/log/journal/。该目录是 systemd 软件包的一部分。如果该目录缺失,systemd 会将日志记录写入 /run/systemd/journal。Systemd是Linux发行版的初始化系统,负责启动系统后的所有服务,并监视它们在系统运行期间的状态。journalctl是Journal的主要接口,提供丰富的功能来检索和显示日志条目。原创 2024-02-04 16:25:18 · 105 阅读 · 0 评论 -
am62x yocto编译环境搭建
下载meta-qt5失败,经确认,meta-qt5是从github上下载,由于网络的限制,导致下载失败后,直接退出,1)尝试暂时注释掉meta-qt5(configs/processor-sdk/processor-sdk-09.0。processor-sdk-09.00.00-am62xxsip-config.txt),先下载其他的,成功。2)打开meta-qt5,重新尝试,直到下载成功。machine可以为。原创 2024-01-17 16:53:35 · 228 阅读 · 0 评论 -
3.3.17内核基数树radix_tree源码解析与示例分析
union {原创 2023-11-27 17:21:52 · 189 阅读 · 0 评论 -
3.3.5内核idr(ida)管理id大解密
IDR 提供将 ID 映射到指针的功能,常内嵌到数据结构中使用。IDA 只提供 ID 分配,因此内存效率更高。原创 2023-11-27 15:41:12 · 171 阅读 · 0 评论 -
3.3.4打开cpu初始化大门之cpumask
即为typedef struct cpumask {。原创 2023-11-25 23:18:20 · 464 阅读 · 0 评论 -
3.3.3 linux内核位图bit操作知多少( bitmap, bitops, bitmask, bit find)
/即set_bit(bit, addr)表示将addr的第bit位置1clear_bit(bit, addr) 表示将addr的第bit位置0change_bit(bit, addr) 表示将addr的bit位的翻转,即bit位为0时被置位,为1时则被清零test_bit(bit, addr) 表示返回addr第bit位的值test_and_set_bit(bit, addr)表示将addr的第bit位置1,并返回原始addr第bit位的值。原创 2023-11-25 21:04:02 · 371 阅读 · 0 评论 -
3.3.2 深度理解BITS_TO_LONGS函数
BITS_TO_LONGS定义在include/linux/bitops.h中,具体如下8sizeoflongsizeofsizeof而DIV_ROUND_UP的定义可以追溯到如下1即DIV_ROUND_UP意为向上取整,具体的数学解释可见参考【1】,此宏多用在存储数据的应用场景,如:n表示申请的存储空间的大小,d表示 存储空间增长的步长,通过此宏,可以得到正好容纳存放n的合适大小,不会有太多的冗余,即使申请的多了,也不会超过d,比如。原创 2023-11-25 16:25:31 · 238 阅读 · 0 评论 -
ubuntu环境删除qtcreator方法
不同的安装方法,对应不同的删除方法。apt-get或者dpkg。原创 2023-11-24 09:31:41 · 912 阅读 · 0 评论 -
3.3.1详解linux内核链表list_head及其接口应用
在一般的链表学习过程中,链表的数据结构组成,如下所示,通过增加next结点指针来实现数据的相连。void *data;但这样的缺点就是,实现链表与数据宿主耦合到一起,链表的数据组织(增删修改)不能重用,不同的数据,需要重复的造轮子。而将用户数据结构定义成如下形式,void *data;这样,sk_custom通过list_head的接口,进行链表的增删查,避免重复造轮子。// 定义一个链表// 用INIT_LIST_HEAD函数初始化链表。原创 2023-11-23 19:07:50 · 945 阅读 · 0 评论 -
13.3 uboot显示logo
【代码】13.3 uboot显示logo。原创 2023-11-23 16:02:01 · 673 阅读 · 0 评论 -
13.2 uboot适配ite6161驱动
文章目录1 ite6161工作原理2 ite6161适配驱动3 ite6161 dts适配4 uboot显示框架1 ite6161工作原理2 ite6161适配驱动3 ite6161 dts适配4 uboot显示框架原创 2023-11-23 15:54:59 · 164 阅读 · 0 评论 -
13.1 uboot适配pca9545
文章目录1 认识PCA95452 uboot驱动模型中的PCA95453 Uboot中识别PCA95451 认识PCA95452 uboot驱动模型中的PCA95453 Uboot中识别PCA9545原创 2023-11-23 15:50:15 · 202 阅读 · 0 评论 -
1.5.1 git/svn日志格式规范
规则1》小步提交,每个功能模块分别提交。modify 修改内容概述,一定要全面。scope 本次修改影响范围或重大改变。《规则2》源文件与修改文件,分别提交。修改内容全面,如背景、关联信息等。备注,如bug连接等。原创 2023-11-23 15:41:07 · 572 阅读 · 0 评论 -
15.1 自动化黑屏监测系统
python+opencv实现显示摄像头,截取相关图片,录取相关视频https://blog.youkuaiyun.com/weixin_51883798/article/details/132030733。python图像质量检测(一):黑屏检测。python识别视频黑屏或者低清晰度。原创 2023-11-23 15:35:53 · 241 阅读 · 0 评论 -
3.1 Linux时间子系统
从驱动层,给出timer和hrtimer的使用示例。分别从介绍各个模块初始化做了些什么工作。从应用层,分析其使用方法。timer驱动代码分析。原创 2023-11-23 15:24:41 · 80 阅读 · 0 评论 -
3.1.1 Linux时间子系统 timer示例使用
检查timer 状态是否为空,为真不为空。原创 2023-11-23 15:13:24 · 78 阅读 · 0 评论 -
3.1.2 Linux时间子系统 hrtimer示例使用
常用的结构体定义,有2种形式,一种是关键字struct 结构体形式,如下struct tag其中struct是关键字,tag是结构体名,member-list是结构体成员列表,variable-list是定义的变量列表tag、member-list、variable-list这3部分至少要出现2个,其实常用定义为如下形式struct 结构体名 {成员类型 成员名;//成员间用分号隔开 };//最后分号不能省略一种是关键字typedef形式,如下,tag可有可无成员类型 成员名;原创 2023-11-23 14:45:09 · 512 阅读 · 0 评论 -
1.2.1 C语言结构体初始化方法总结
常用的结构体定义,有2种形式,一种是关键字struct 结构体形式,如下struct tag其中struct是关键字,tag是结构体名,member-list是结构体成员列表,variable-list是定义的变量列表tag、member-list、variable-list这3部分至少要出现2个,其实常用定义为如下形式struct 结构体名 {成员类型 成员名;//成员间用分号隔开 };//最后分号不能省略一种是关键字typedef形式,如下,tag可有可无成员类型 成员名;原创 2023-11-23 14:35:15 · 646 阅读 · 0 评论 -
2yocto 自启动程序(服务)
单独为主程序创建服务,且设置如果启动失败,则2s后重新启动[Unit][Service][Install]可以配置为 inherit, null, tty, journal, syslog, kmsg, journal+console, syslog+console, kmsg+console, file:path, append:path, socket, fd:name。运行结果如下,从信息来看,确认第一次失败了,第二次成功了。原创 2023-11-09 18:28:50 · 482 阅读 · 1 评论 -
pca954x系列芯片对比(pca9543,pca9544,pca9545,pca9546,pca9547,pca9548)
pca954x系列芯片对比本文主要内容:1 pca9543 通用描述,原理框架,PDF下载连接2 pca9544 通用描述,原理框架,PDF下载连接3 pca9545 通用描述,原理框架,PDF下载连接4 pca9546 通用描述,原理框架,PDF下载连接5 pca9547 通用描述,原理框架,PDF下载连接6 pca9548 通用描述,原理框架,PDF下载连接7 pca954x 对比总结,PDF下载连接。原创 2023-11-03 10:09:15 · 941 阅读 · 0 评论 -
13.1 linux命令行查看控制串口(uart)全攻略
本文主要内容:1 串口启动驱动打印2 sys目录下的串口信息3 proc目录下的串口信息4 etc目录下的串口信息5 dev目录下的串口信息6 stty控制具体的串口7 命令行控制串口读写8 串口数据解析。原创 2023-11-01 17:29:00 · 1777 阅读 · 1 评论