- 博客(147)
- 资源 (27)
- 收藏
- 关注
原创 C语言运算符优先级表
同一优先级的运算符,运算次序由结合方向所决定。(表达式)/函数名(形参表)++变量名/变量名++--变量名/变量名--sizeof(表达式)整型表达式%整型表达式。数组名[常量表达式]表达式2: 表达式3。
2024-12-03 10:57:03
880
1
原创 PCIe—预取和非预取
通过BAR请求内存资源的PCI Express Endpoint必须设置BAR的Prefetchable位,除非该范围包含具有读副作用的空间或该EP不允许写合并的空间,例如,如果请求者请求从一个地址读取128个字节,则Completer可能也会预取下一个128字节,以便在被请求时将其放在手边以提高性能。这样的读取行为通常发生在具有特殊需求的设备上,例如DMA(Direct Memory Access)控制器,其需要获取实时的、即时的数据,而不需要进行缓存.强烈建议映射到内存空间的资源尽可能设计为可预取的。
2024-10-31 17:04:14
498
原创 print_hex_dump调试内核,嘎嘎香
prefix_type: 地址的输出格式是按照偏移、绝对地址或者不输出地址 (%DUMP_PREFIX_OFFSET, %DUMP_PREFIX_ADDRESS, %DUMP_PREFIX_NONE)print_hex_dump是 Linux 内核中的一个函数,用于以十六进制和 ASCII 码格式打印内存数据块。最近在验证芯片功能的过程中发现了一个好用的内核调试接口,print_hex_dump,除了直接打印16进制和ascii外,还支持动态调试打印。@prefix_str: 打印的前缀字符串。
2024-10-23 15:48:39
1120
5
原创 【Linux内核】sysctl命令使用和解析
sysctl是一个用于运行时配置内核参数的命令,实现用户态和内核态的交互,这些内核参数位于/proc/sys目录下。sysctl配置与显示在/proc/sys目录中的内核参数。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。sysctl机制在/proc/sys下创建出配置节点。sysctl创建新的sysctl节点,可以参考ctl_tablesysctl node结构体,包括name、data、proc、mode。
2024-10-22 10:59:32
448
原创 内核initcall解读
如果module在编译时不是builtin的方式,而是编译为ko,则initcall接口会被替换为module_init。initcall提供了不同的优先级,允许module通过initcall接口把初始化函数添加到某个优先级初始化列表中。cmdline添加”initcall_debug=1 loglevel=9”,会打印所有执行的initcall。时,会按照优先级顺序遍历每个initcall列表,逐一执行module的初始化函数。initcall是builtin的module启动阶段初始化的机制。
2024-10-15 18:33:27
246
原创 Ubuntu 开机进 initramfs问题修复
再initramfs下输入 fsck /dev/sda1 进行修复。界面会提示dev/sdaxx的盘需要manua fsck。修复完成后reboot即可正常启动了。
2024-07-26 17:41:25
388
原创 【PCIe】P2P DMA
PCIe P2P (peer-to-peer communication)是PCIe的一种特性,它使两个PCIe设备之间可以直接传输数据,而不需要使用主机RAM作为临时存储。如下图3的走向比如EP1要发送和数据给EP2,操作流程如下:1. 打开EP1的dma控制器;--client侧2.src=EP1的内存地址,dst=EP2的BAR地址空间(provider),EP2的BAR地址一般会与自己的某段内存空间有一个映射关系,也就是将EP2的bar暴漏给了EP1去操作。
2024-07-04 15:45:02
1610
1
原创 【PCIe】 Switch
如图所示,pcie Switch 被定义为多个虚拟PCI-to-PCI Bridge设备的逻辑集合。不允许将数据包分成更小的数据包,例如,一个具有256字节有效载荷的单个数据包不能分成两个128字节有效载荷的数据包。switch必须在任意一组端口之间转发所有类型的TLPs (Transaction Layer packet)。例如,基于地址的路由,不包括在多播中使用。. Switch在配置软件中表现为两个或多个逻辑PCI-to-PCI桥。不需要支持下行端口作为锁定请求的发起端口.
2024-07-02 20:17:05
1872
原创 linux动态调试 dev_dbg
打开内核动态调试开关,make menuconfig选中CONFIG_DYNAMIC_DEBUG以及CONFIG_DEBUG_FS。当调试结束,不再想输出dev_dbg()信息了,使用下面命令关闭即可。运行程序,使用dmesg则可以看到相应dev_dbg()的输出信息。Linux启动后,使用命令行挂载上dbgfs。1.控制某个文件所有dev_dbg(),2.控制某个函数所有dev_dbg(),通过下面的命令可以查看有哪些打印时开启的。
2024-06-06 11:11:17
465
原创 linux - 主次设备号自动申请
alloc_chrdev_region 原型如下,该函数向内核申请一个空闲的主设备号。第四个参数是我们使用cat /proc/devices 看到的名称。
2024-05-07 17:30:35
517
1
原创 MobaxXterm限制解除--绝对好使
注意:很多朋友说设置MobaXterm.ini文件, 在[Misc]下面添加SettingsSave=0,保存,重启MobaXterm即可。当Xterm会话数量到14个时,发现新增的会话没有保存下来,在左侧菜单无法新增保存会话session。建议直接使用Everything软件搜索MobaXterm.ini,修改所有MobaXterm.ini。
2024-04-29 10:35:25
3408
1
原创 关闭Pcie ACS 重定向服务
在PCIe总线中,P2P(Peer-to-Peer)直通是指在PCIe拓扑中两个EndPoint设备之间直接进行数据传输,而不经过RC侧Memory,P2P直通可以提高数据传输的效率和软件设计的灵活性,P2P通信方式如下图所示。1.1 pcie p2p配置,地址匹配举例EP1 InBound 配置:target_addr: 0x900000000 (ep的ddr地址);
2024-04-25 17:26:43
2528
原创 zigbee cc2530的室内/矿井等定位系统RSSI原理
c# 设计上位机,通过串口连接协调器节点,传输数据到pc上位机,显示节点坐标信息。需要4个节点,其中一个协调器,两个路由器作为参考节点,一个终端作为盲节点。需要资料和实物的加🐧qq🐧: 2711326046。1. 定位节点软件设计流程。cc2530 最小系统。
2024-04-22 23:06:45
479
原创 基于51单片机的宠物自动喂食语音播报,有实物
LCD第一屏显示食物重量,当前时间,温湿度。第二屏显示喂食时间,第三屏显示喂食重量。可通过点击查看喂食时间翻转屏幕显示。点击查看喂食时间后,显示喂食时间,可以设置三个时间,再点击设置,可以设置喂食时间。需要资料或者事物的加🐧qq🐧: 2711326046。
2024-04-22 22:32:39
576
原创 国产化/非国产化项目总结
SRIO代码设计,支持与POWERPC,DSP通信,swrite,nwrite,doorbell等等。纯逻辑千兆网,万兆网UDP/ TCP代码实现,可过交换机。NVMe存储(高速)/sata存储(低速)ZYNQ 挂 axi can驱动设计。ZYNQ主控设计,支持多种外设控制。基于PCIE裸核或者XDMA通信。总结下过去几年做过的一些项目。飞腾-S2500/D2000。网络交换/RAPIDIO交换。欢迎进行技术交流。STM32国产化替代。
2024-03-19 14:40:46
399
原创 微软驱动HLK数字签名认证-非常详细
经过两个月的 环境搭建,bug修改,测试认证,终于通过了微软官方的认证。目前只在win10系统上通过了HLK的测试,其他系版本系统需要重新认证。windows驱动想要在非测试模式下安装,需要通过微软的数字签名认证,认证的前期准备网上有很多文章。
2024-02-21 14:29:23
3063
20
原创 vxworks7.0在线断点调试应用配置过程
相比之前的版本,7.0的配置步骤还是很方便简单的。如下图内核开启debug agent,重新编译后下载vxworks镜像到开发板。弹出的配置界面配置如下,主要是目标板ip地址和下载到板子中的vxWorks镜像,点击finish等待连接到开发板。连接成功后,在线加载dkm应用,然后就可以在串口sp启动任务,进行断点调试了。下拉点击选择New connection。
2023-04-13 10:23:48
1674
原创 TCP和UDP的“保护消息边界“ ,粘包问题
这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。对于UDP,不会使用块的合并优化算法,这样,实际上目前认为,是由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的UDP包,在每个UDP包中就有了消息头(消息来源地址,端口等信息),这样,对于接收端来说,就容易进行区分处理了。(1)发送固定长度的消息,如1024字节,不到1024的补0;的包长,来进行UDP数据的发送。而UDP,由于面向的是消息传输,它把所有接收到的消息都挂接到缓冲。
2023-02-13 15:30:56
1436
3
原创 一文带你熟悉内核调试工具 --Ftrace
👆👀前言Ftrace是一个内部跟踪程序,旨在帮助软件开发人员和系统的设计者去发现内核内部发生了什么。它可以用于调试或分析延迟和发生在用户空间之外的性能问题。ftrace通常被认为是函数跟踪程序,但它实际上是由几个不同的跟踪实用程序组成的框架。ftrace最常见的用法之一是事件跟踪。可以通过tracefs文件系统启用贯穿内核的是数百个静态事件点,查看是内核的哪些接口被调用。
2023-02-06 06:00:00
3199
5
翻译 对齐 Align解释
对于正整数2^n(n>1)来说,存在这样的特性,如果整数X是2^n的整数倍,则X的二进制形式的低n位为0, 如果X不是2^n的整数倍,则X与(~(2^n-1))进行与运算可以得到一个与X相近的是2^n整数倍的正整数。上面代码中,typeof(x)表示取x的类型,如果x是int,则typeof(x)为int。(typeof(x))(a)-1,表明把a转化为x的类型,并减1,作为对齐掩码。另外還有一種以下界對齊的方式 #define ALIGN(x,a) ((x)&~(a-1))x = 4095,结果為0。
2023-02-01 13:47:23
1284
原创 一文带你看懂健康管理系统----IPMI
设备的IPMI分为主模块和从模块,其中IPMI的主模块可以放到CPU模块上,IPMI主模块通过IIC总线采集各个从模块的信息,通过网口统一上报给外部的监测设备。本软件采用分层架构和监控管理代理方式,并提供一个基于B/S架构的统一Web监控管理门户实现从处理器到业务应用全覆盖式监控与管理,具有监控信息采集与处理、实时状态展示、网络拓扑呈现、事件告警、高可用集群管理、安全管控、资源管理与任务调度、日志操作等功能,为整个单元高效安全可靠运行和便捷管理提供有力工具。下图为典型的IPMI实现的管理检测系统。
2023-02-01 07:30:00
5430
2
转载 一文带你看懂缓存淘汰算法--LRU
如果你去看LinkedHashMap的源码可知,LRU算法是通过双向链表来实现,当某个位置被命中,通过调整链表的指向将该位置调整到头位置,新加入的内容直接放在链表头,如此一来,最近被命中的内容就向链表头移动,需要替换时,链表最后的位置就是最近最少使用的位置。只有当数据的访问次数达到K次的时候,才将数据放入缓存。LRU-K具有LRU的优点,同时能够避免LRU的缺点,实际应用中LRU-2是综合各种因素后最优的选择,LRU-3或者更大的K值命中率会高,但适应性差,需要大量的数据访问才能将历史访问记录清除掉。
2023-01-30 11:14:12
1694
2
原创 阿里云Docker仓库操作
如果不创建镜像仓库,上传的时候指定仓库名称会自动创建的。输入密码后会提示密码保存在目录: /root/.docker/config.json.点击仓库进去后,可以看到阿里云仓库推送,拉取的指南,没什么技术,照着做就行。网上有说下次登录不用再输入密码,试了下,每次都要输入密码的。登录阿里云创建一个命名空间,这里面是我们的仓库镜像。设置下固定密码,docker登陆的时候会用到。阿里云上查看上传的镜像,id好也是能对上的。这里随便创建一个仓库,用于测试。回到虚拟机下,登录阿里云。
2023-01-12 14:12:44
3890
29
原创 Docker简介
Docker官网链接: http://docker.p2hp.com/我们开发的嵌入式项目基本是基于虚拟机下的ubuntu的,如果每一个项目要求的系统版本、库版本、交叉编译工具链等不一样,我们就需要为每一个项目安装一个对应的ubuntu,这既浪费存储又浪费时间,也不方便拷贝给别的同事。如果说有一种工具,可以将各个环境隔离开来,相互之间不会影响,就像一个个沙箱盒子一样独立包装,那么Docker可以做到。Docker (码头工人)是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司(后由于 D
2023-01-03 16:27:36
1501
13
原创 我的2022总结
买了一本网络相关的专业书籍,讲的是底层的网络收发,网络优化,和相关的源码,对网络相关上的理解也更明白了。看了几本电子书小说,悉达多,西方神话故事,大部分内容已经想不起来了,B站上看了两个动漫,以前觉得动漫没有真人好看有意思,不过现在技术发展已经比以前有太大进步,内容制动作和细腻度已经非常好了,最近在看三体动漫,就是更新太慢了。又重新开发,好在都是些基本功能,一周软件问题基本是结束了。去年十一去了宁夏,前年十一去的湖北恩施,出去玩一趟身心确实很放松,今年十一疫情比较严重,没去什么远的地方,只是去了几个公园。
2023-01-01 11:14:55
3143
51
原创 ubunt配置samba服务器,匿名访问
muchx是ubuntu的用户名,path是ubuntu下共享的目录,然后mkdir /home/muchx/share。在windows下打开文件夹,在任务栏输入如下\\10.0.1.110,就可以访问samba共享文件夹了。在文件夹下输入\\ ip地址,这里我的ubuntu ipdizhi shi 10.0.1.110。配置完成后,重启samba服务: /etc/init.d/samba restart。控制面板->程序-> 启用或关闭windows功能 勾选所有关于SMB文件共享支持选项。
2022-12-20 18:30:41
2423
6
原创 vxworks7.0 下载代码和rapidio配置等
安装STM32 ST-LINK Utility v4.2.0 setup.exe软件,即安装了烧录软件,以及ST-LINK V2的驱动程序。烧录软件:STM32 ST-LINK Utility-V4。烧写器:ST-LINK V2,如下图所示。IPMI软件烧录说明。
2022-11-30 17:28:36
243
原创 两数之和--练习题
数据范围:2\leq len(numbers) \leq 10^52≤len(numbers)≤105,-10 \leq numbers_i \leq 10^9−10≤numbersi≤109,0 \leq target \leq 10^90≤target≤109。给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
2022-11-11 12:01:52
805
原创 uboot引导vxworks6.9(T4240) 启动
vxworks内核配置下搜索RAM_LOW_ADRS, 值为0x01000000, 是vxworks下载启动的地址,uboot启动时会用到。vxworks6.9 t4240用的是32地址空间,uboot下用的是64位地址空间,去uboot下修改law物理地址空间为32位。vxworks下flash基地址为 0xff000000, 将vx下的地址修改为0xe0000000,和uboot下地址一致。uboot下flash基地址为0xe000000,vxworks内核配置为build-in 符号表。
2022-10-24 10:00:00
2728
4
原创 uboot命令添加记录
3. config_cmd_default.h 添加;1. 添加U_BOOT_CMD宏定义。2.makefile添加编译选项。
2022-09-20 13:10:36
1163
原创 t4240 uboot下网络调试(88e1111)
根据这些修改board_eth_init(),去掉无关的10G网络相关代码,serdes相关的也可以去掉,没有用到serdes网络,接口类型改成rgmii。在driver/net/phy/phy.c下修改下phy_init() 只保留phy_marvell_init(),别的也用不上。两个网口,分别从EC1 EC2出来连接的88e1111。board/freescale/t4rdb/eth.c下 board_eth_init().烧写验证下,FM2.MAC5是EC1,就是我直出的网口,可以ping通了。..
2022-08-17 16:15:44
2732
原创 t4240 ddr调试
调试uboot部分主要是卡在ddr部分,调了一周多。大部分时间在搞validation不上的问题,感觉是codewarrior软件或硬件设备的问题。没办法开始盲调ddr参数,还真被调出来了,uboot也起来了。arch/powerpc/cpu/mpc85xx/cpu.c 下,如下图是p2020部分调用过程,在board/freescale/t4rdb/ddr.c下去参考p2020配置过程。ddr参数,t4240只有dimm的参数配置方式,自己仿照的p2020的fixed ddr配置方式。..........
2022-08-16 15:23:54
1481
原创 uboot引导vxworks--t2080调试记录
开发环境: t2080rdb, uboot2015, vxworks7.01. 《VxWorks_7_fsl_t2t4_BSP_Supplement_Guide__SR0620.pdf》描述: 实际上默认创建的vip,profile选项为none时,vip内核配置中是包含了INCLUDE_END选项的。所以在创建vip的时候最好就添加上PROFILE_DEVELOPMENT。 2. 内核参数bootargs是一些网络参数设置=> pri bootargsbootargs=memac(1,0)b109304
2022-07-04 15:11:30
1790
4
原创 linux内核添加系统调用
准备:再虚拟机上运行的 Linux桌面或者服务器;去Linux官方下载Linux内核源码。1. 解压下载的内核源码;2. 更新系统调用表: 增加调用号335的系统调用函数3: 添加系统调用函数声明修改 4: 在内核源代码添加函数定义vim kernel/sys.c 5:编译内核6: 之后选择并退出。7 :编译: make -j88: 安装模块: make modules_install make install9:切换内核重启虚拟机,按住选择进入高级选项。看到我们修改的内核版本去选择它 10
2022-06-26 13:41:35
2439
原创 c51实现老人跌倒,心率异常报警系统
器件选型:mcu单片机: STC12C5A60S2GSM/GPRS: SIM800C加速度模块: ADXL345心率: PulseSensor 主程序代码:
2022-06-26 13:03:31
2091
1
原创 ffmpeg云服务器推流
使用正点原子的 STM32MP157 开发板,使用了 SDIO 接口的 WIFI 芯片 RTL8723DS。WIFI 驱动不需要我们编写,因为 realtek 公司提供了 WIFI 驱动源码,因此我们只需要将 WIFI 驱动源码添加到 Linux 内核中,然后通过图形界面配置,选择将其编译成模块即可。将rtl8723ds 目 录 拷 贝 到 ubuntu 下 Linux 内 核 源 码 中 的drivers/net/wireless/realtek/目录下。打开 drivers/net/wireless/
2022-06-26 12:51:22
2439
Proteus仿真51单片机100个例子
2022-05-15
IDT_CPS-1848_MAN_20140602_1.pdf
2020-07-20
P2020RM.pdf
2020-07-20
CMake3_14_3_win64.rar
2020-05-16
计算机USB系统原理及其主从机设计.rar
2020-04-18
嵌入式面试试题
2014-01-08
c++与osg学习
2013-12-07
计算机网络-万字word文档
2024-07-08
Java经典问题算法大全-A
2024-07-08
ROS总体结构演示效果
2024-07-08
Python单元测试框架
2024-07-08
linux下Nginx+tomcat安装与配置
2024-07-08
浅谈PCIe体系结构-中文13w字
2024-07-02
DesignWare Cores PCI Express Controller Databook
2024-05-28
存储随笔《PCIe科普教程》pdf
2024-05-27
51单片机心率异常及意外跌倒报警完整资料
2024-04-27
stm32的智能门禁设计+wifi系统
2024-04-27
基于51单片机的智能药盒
2024-04-27
stm32智能鱼缸水质检测+蓝牙
2024-04-27
51单片机电容频率测量设计
2024-04-27
基于stm32的过载保护系统
2024-04-27
基于zigbee的烟雾报警系统,两个节点,终端节点和协调器,协调器有oled显示烟雾和温度信息,声光报警
2024-04-24
使用百度AI去实现人脸识别,物体检测方法步骤。
2023-01-17
关于#docker#的问题:阿里云docker仓库操作方法:
2023-01-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人