- 博客(359)
- 资源 (1)
- 收藏
- 关注
原创 获取当前进程或线程PID方法
pthread_self返回的是同一个进程中各个线程之间的标识号,对于这个进程内是唯一的,而不同进程中,每个线程返回的pthread_self可能是一样的。而gettid是整个系统内各个线程间的标识符,由于linux采用轻量级进程实现的,它其实返回是pid号。pthread_t由pthread线程库分配和维护,仅能保证同一个进程中是唯一的。但POSIX标准并没有规定pthread_t的具体格式,不同系统中pthread_t的实现可能是不一样的。sys_getpid,进程ID。TID( LWP),线程ID。
2023-07-03 17:14:24 766
原创 修改buildroot中某个软件包的版本
用于hash校验,比对从网络传输到本地的文件是否正确,也可以直接删除ethtool.hash文件,那么编译时会跳过hash校验步骤。以ethtool为例,在buildroot-2020.02.8中,ethtool默认版本为5.4,现将其修改为5.2。修改后,直接make。
2023-07-03 17:12:13 1065 1
原创 存储介质block和sector的区别
A number of bytes, basic data transfer unit (SD中最小的读写单位,一般为512B)。SD卡协议中 与 HardDisk(文件系统)的block和sector不一个意思。可以看到sector大小为512B,总共30031872个sector。Block是文件系统上的概念,一般文件系统block大小为4K。Sector是硬盘/U盘最小读写单元,一般为512字节。这里的block,即U盘最小读写单位,512字节。Linux中,block和sector的区别。
2023-07-03 17:09:34 705
原创 内核模块间的符号调用
模块B编译好后会生成符号表文件Module.symvers,里面有导出的符号名,把该文件拷贝到需要调用的模块A的源代码下,然后重新编译模块A。EXPORT_SYMBOL_GPL():和EXPORT_SYMBOL类似,但范围只适合GPL许可的模块进行调用。EXPORT_SYMBOL():括号中定义的函数对全部内核代码公开。模块A需要调用模块B中定义的函数或变量。先extern声明需要调用的函数或变量。加载模块顺序必须先B后A,卸载相反。两个内核模块:模块A和模块B。1. 模块B导出函数或变量。
2023-06-09 18:51:13 747
原创 重新编译buildroot中的某个软件包
而根据我们的需要是要修改然后重新编译,安装即可。所以删除.stamp_built和.stamp_target_installed就可以。buildroot中的软件包一但编译完成后,后面重新make,不会再编译该软件包,即使你修改了该软件包的代码。每个工具包里都有.stamp_xxx文件,这几个文件主要控制这个工具包的下载,解压,打包,配置,编译,安装。在main函数中添加:printf("test buildroot rebuild\n");以buildroot-2020.02.8中ethtool为例。
2023-06-09 18:45:31 905
原创 USB外设汇总
USB转M.2接口(NVME或SATA)USB采集卡(通常指视频采集卡)USB转HDMI,VGA,DP。USB 无线wifi。USB SD/TF卡。
2023-06-09 18:35:50 150
原创 USB HAPS验证
3)调试high-speed时,可以考虑使用USB以太网卡,网络协议我比较熟悉。另外也可以将demo板USB2.0接口虚拟成串口设备接到HAPS,这样调试也很方便。2)U盘测试如果出现问题,由于存在SCSI协议,比较复杂,不太好调试。串口相对简单,利用串口可以进行数据收发测试,方便调试。full-speed device:usb串口(PL2303,CH340等)1)full-speed相较于high-speed,timing要求更低。建议先从full-speed开始验证,利用USB串口进行测试。
2023-06-09 18:28:38 219
原创 以太网卡EMAC FPGA验证建议
如果遇到问题,可以先调MAC loopback,再调PHY loopback。先调试10M,再调100M,1000M由于timing关系,可能调不了。先MAC loopback,再PHY loopback。先调试RMII 10M,再调试RMII 100M模式。中断统计,cat /proc/interrupts。抓包工具:tcpdump,wireshark。统计寄存器,ethtool -S eth0。如果能有小code,调试起来会更加方便。先RMII,再RGMII。先10M,再100M。
2023-05-24 20:38:45 276
原创 linux虚拟内存布局
Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。虚拟地址空间的内部又被分为内核空间和用户空间两部分。
2023-05-24 20:27:24 424
原创 __weak 关键字的作用
加上了__weak 修饰符的函数,用户可以重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。所以我们可以在别的地方定义一个相同名字的函数,而不必也尽量不要修改之前的函数。函数名称前面加上__weak 修饰符,我们一般称这个函数为“弱函数”。
2023-05-24 20:23:34 190
原创 intel 82574 1000M pcie 网卡 kernel driver
intel 82574 1000M pcie 网卡 kernel driver
2022-12-09 20:28:08 520
原创 windows PCIe 工具: TeleScan
用户可以通过TeleScan PE来扫描系统中的PCI/PCIe设备,并提供了读写其配置空间中的寄存器的功能。
2022-12-09 20:23:52 6337 1
原创 优化USB UVC ISO传输速度
USB3.0单路uvc iso传输速率只有92MB/s, 1080p yuv 23.4fps,我们需要提高UVC传输速率(YUV帧率)
2022-10-09 14:50:45 2346
原创 linux 网络远程唤醒 WOL
WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设备提供的一项管理功能。该功能可以当电脑处于关机或休眠状态时,通过给网卡发送特定的数据包从而命令网卡向主板发送开机指令,进而实现上电开机。WOL支持 Magic Packet &Remote Wakeup packet两种机制,工作原理都一样,只是唤醒的包类型不一样。Magic Packet是一种特殊的唤醒包,而Remote Wakeup支持多种唤醒包类型,比如常见的单播和广播包等。
2022-10-09 14:23:58 3803
原创 dwmac/stmmac/eqos 远程唤醒(WOL) 驱动
如果通过ethtool启用了wol功能,那么在系统休眠时,在suspend函数中会调用stmmac_pmt来进入powerdown模式(低功耗模式),可通过remote wakeup来唤醒。如果在休眠期间收到了magic packet或remote wakeup packet,eqos会产生PMT中断,执行resume操作。注册唤醒中断(PMT中断),当收到magic packet或remote wakeup packet时,产生一个唤醒中断,执行唤醒操作。
2022-10-09 14:22:18 665
原创 路由器上网设置(宽带上网)
如果电脑与宽带直接连接,需要将运营商提供的固定IP地址等参数手动填写在电脑上,才可以正常上网。动态IP也叫自动获得IP地址上网,是以太网线接入的上网方式之一,电脑通过宽带自动获取IP地址、子网掩码、网关以及DNS地址。在没有路由器的时候,您的电脑单机连接宽带,使用宽带服务商(电信或联通等)提供的宽带账号密码拨号上网,这种上网方式叫做PPPoE上网或宽带拨号上网。购买路由器后,就不需要在电脑上拨号了,只需要将宽带线连接到路由器的WAN口,在路由器界面上设置宽带拨号上网,您的所有终端设备都可以直接上网。
2022-10-09 14:15:25 7802
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人