- 博客(15)
- 收藏
- 关注
原创 关于stm8s105K6遇到的坑
至于是什么引起的一直没有头绪,以为是编译器不支持某些特殊操作;最后发现是中断过程中不能处理32位数据,这会导致非法操作重启;后面通过对复位寄存器数据的判断确认是非法操作码引起的重启;最近在处理一个项目的时候,发现单片机总是异常重启。这个问题折腾了很久,以后解决问题还是不能纯靠经验;分析了很长时间的程序,并未找到什么非法操作;最初判断是看门狗复位导致的重启;
2024-06-27 18:16:46
159
原创 HC32F460使用JLink-RTT功能输出调试信息
为方便调试程序,并且不使用浪费其他串口,直接使用JLINK自身输出调试信息RTT 是Jlink的一种实时终端的方式连接输出调试信息,网上有很多说明之间按照做就可以,我仅仅是记录一下自己的步骤,和自己遇到的坑,记录一下自己的解决方案,下载RTT文件: http://download.segger.com/J-Link/RTT/RTT_Implementation_140925.zip。
2023-09-20 11:04:19
1436
1
原创 rs485避坑指南
rs485串口通讯为半双工模式,接受数据时需要将控制端电平拉低,发送数据时,将控制端电平拉高。然而,在发送数据的时候存在一个现象,最后一位数据总是不能成功发送。
2023-09-13 15:39:11
350
1
原创 linux操作系统的引导
由pc机的BIOS(0xFFFF0是BIOS存储的总线地址)把bootsect从某个固定地址拿到内存中的某个固定地址(0x90000),并进行了一系列的硬件初始化和参数设置。设置系统内核运行的LDT(局部描述符) IDT(终端描述符寄存器)全局描述符(设置全局描述符寄存器)作用:首先将后续的setup.s代码从磁盘加载到紧接着bootsect.s的地方。磁盘引导块程序,在磁盘的第一个山区中的程序(0磁道 0磁头 1扇区)跳转到SYSTEM模块的最前面的代码运行(head.s)设置内存管理的分页机制。
2023-08-26 12:18:07
102
1
原创 汇编初学习
eax 32位函数返回值ax 低16位ah 高8位al 低8位ebx 32位ecx 32位循环次数this指针(C++)edx 32位ebp 32位 栈底寄存器esp 32位 栈顶寄存器eip 程序计数器 无法操作状态标志寄存器。
2023-08-10 13:36:56
77
1
原创 强大的{函数括号},危险的堆栈
下面我们来看其生成的对应汇编代码:其中rbp指向当前函数栈帧的栈底,rsp指向当前函数栈帧的栈顶这里的左花括号对应了第一个红色方框内的两条汇编指令,一是将主函数的栈底入栈,即保护主调函数的栈帧,二是将现在的栈顶指针,作为被调函数的栈底右花括号对应了第二个红色方框,即将之前入栈的栈底取出来还给rbp寄存器,放弃被调函数栈帧。
2023-07-26 23:15:51
88
1
原创 关于sql注入
针对程序员编写疏于检查用户输入参数,拼接字符串造成,数据库服务器误认为是正常的sql语句运行;其中#注释当前字符到行尾,服务器真正检查的语句就是。攻击者采用sql注入,输入用户账户为。同理修改密码可得到如下的sql语句,也可成功登录。这样攻击者就成功登录。甚至于利用分号分割命令,执行非法操作。
2023-07-25 09:40:27
90
原创 查看内存泄露的几种方法
该方法采用宏定义替换函数,函数的实现放在上面的原因很简单,如果把宏定义放在前面,会产生递归调用,产生错误,下面就是代码的实现,该方法的局限性,适用于单文件,往往一个工程有很多文件,采用这种方法,就必须在每个文件下复制一遍。下图即为运行结果,可以很明显的看出,该程序,调用了两次malloc,一次free,产生了内存泄漏。
2023-07-16 00:51:31
1629
1
原创 高性能并发服务器模型设计思路(epoll+线程池)
因为这里的套接字都是非阻塞的,收到一条数据,会交给一条线程处理,如果该数据未被处理完毕,又发送另外一条数据,服务器会把该套接字交给另一个线程处理,造成多个套接字被多个线程共享,产生资源竞争,会引发一些不可预料的错误,比如可能会导致数据的重复读取或者丢失等,也会造成非必要的上下文切换的开销。先创建一个epoll池,for循环创建多个socket,分别绑定不同的端口号,并将每个套接字,进入监听状态,再把每个套接字放到这一个epoll池里,然后while(1)进入epoll_wait等待状态,其他步骤同上。
2023-07-15 09:22:17
530
1
原创 TCP学习
当客户端发送链接请求后,服务器收到这个请求,即第一次握手时,服务器会对该连接请求的合法性进行验证,验证通过后,会分配一个TCP控制块,并将该控制块放到半连接队列中,如果不合法,服务器会发送RST响应给客户端,表示拒绝连接。客户端收到一个包后,并不会立即应答,而是等待一段时间,接收下一个包,直到超时后,会将收到的数据包一次进行确认,如果收到了编号为1,2,3的包,此时应答4,说明客户端前四个包都受到了,服务器就会从编号为4的包开始发送。在客户端,三次握手是在connect()函数完成的。
2023-07-14 13:34:39
67
1
原创 linux (epoll + 线程池)聊天室(在上一版的思路改进简化版本聊天室)
【代码】linux (epoll + 线程池)聊天室(在上一版的思路改进简化版本聊天室)
2023-05-07 21:56:11
794
1
原创 LinuxC TCP实现简易聊天室
纯c语言实现聊天室,采用TCP协议实现聊天室注册登录,消息收发,注册vip,禁言,踢人等功能,项目主要运用数据库进行操作。
2023-05-02 13:02:59
7971
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人