logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

内存管理与链表

Linux 内核代码非常庞大,主要由进程调度、内存管理、虚拟文件系统、网络子系统、进程通信、设备管理等几个子系统组成,各个子系统相互依赖。本章将介绍 Linux 内核中的内存管理与链表。

#linux#c语言
Linux内核同步机制

众所周知,Linux是一个多用户多任务操作系统。在多处理器(SMP)情况下存在真正的并行运算,因为线程是同时执行的。而在单处理器(uniprocessor,UP)情形中,并行是通过抢占实现的,即通过临时中断一个线程以执行另一个线程的方式来实现。当存在并发访问的可能时,必须使用有效的机制来保证同步和保护资源。另外对中断的处理也会打断正在运行的任务。

文章图片
#linux#c语言
linux驱动程序入门3

(3)文件系统(Filesystem):Linux 内核支持多种文件系统,在 Linux 操作系统中,用户甚至可以访问 Windows 系统的文件,这得益于 Linux 内核中的虚拟文件系统(简称VFS)。Linux内核中的/proc 文件系统是一种特殊的文件系统,通过它可以在运行时访问内核的内部数据结构、改变内核设置,内核可以通过它向进程发送信息。应用程序可以通过/proc 文件系统获取有关进程

文章图片
#c语言#linux
linux驱动程序开发1

linux内核为应用层提供了系统调用接口,应用程序运行在用户态,而设备驱动程序是操作系统的一部分,运行在内核态。设备驱动程序,就是驱使设备按照用户的预期进行工作的软件,它是应用程序与设备沟通的桥梁。每一个字符设备或块设备在文件系统中都有一个特殊设备文件与之对应,这个文件是设备节点。第4列是主设备号,第5列是次设备号。应用程序要控制硬件设备,首先系统调用访问内核,内核层调用驱动程序来访问设备。内核模

#linux#运维#服务器
加密算法-AES

分组长度和密钥长度可以指定为位,192位和256位。一般128位密钥需要10轮加密。加密主要分为4个部分:字节代换、行位移、列混合、轮密钥加,最后一轮不执行列混合,第一轮前将明文和原始密钥进行一次XOR或者加密操作。下面是加密和解密过程。

文章图片
#密码学
vivado问题解决- ila抓波形时,抓取的数据变成了constant

ila抓波形时,抓取的数据变成了constant,我用ila抓取了1024位的数据data_out[1023:0],但显示的是ila/constant0_n。在messages中发现warning信息,信息提示要抓取的数据有多驱动行为,选择修改代码,解决多驱动问题后再抓取数据即可。

文章图片
Vivado报错信息[Place 30-574] Poor placement for routing between an IO pin and BUFG

摘要:使用Vivado时出现差分时钟输入报错,原因是将信号绑定在普通IO而非晶振上。解决方案有两种:1)将信号正确绑定到晶振;2)在xdc文件中添加set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets adc_dclk_p]命令,将报错转为警告以生成比特流。该问题可通过修改时钟路由约束解决,参考相关博客获取详细说明。

vivado问题解决- ila抓波形时,抓取的数据变成了constant

ila抓波形时,抓取的数据变成了constant,我用ila抓取了1024位的数据data_out[1023:0],但显示的是ila/constant0_n。在messages中发现warning信息,信息提示要抓取的数据有多驱动行为,选择修改代码,解决多驱动问题后再抓取数据即可。

文章图片
vivado报错[Synth 8-3391] Unable to infer a block/distributed RAM for ‘buff‘ because the memory pattern

分析原因:下面是我的memory定义。报错原因是我的WRITE_LENGTH值太大。

文章图片
vivado综合报错,但没有明确报错信息

文章摘要:代码在组合逻辑中使用temp_reg进行自运算导致综合报错,原因是组合逻辑中自运算会产生自依赖问题。解决方案是通过引入临时变量作为中转,有效避免了组合逻辑中的自依赖报错问题。修改后代码进行赋值操作,综合时不再报错,功能验证正确。修改方案简单高效,仅需增加临时变量中转即可解决该问题。

文章图片
到底了