- 博客(14)
- 收藏
- 关注
原创 Linux系统下的phy驱动调试记录
在Linux下添加一块新的网卡驱动(以下简称phy芯片)时,需要实现mac驱动和phy驱动。通常,mac驱动已由CPU厂家实现。作为驱动工程师,我们仅需匹配phy驱动即可。以下的phy驱动调试均在Linux5.10的源码下进行。
2024-08-18 18:50:53
1754
1
原创 openwrt系统启动分析
openwrt系统的启动分析,从uboot启动,到kernel启动,再到第一个进程启动,以及preinit和inittab的启动
2023-11-07 23:26:06
713
原创 QT问题总结
在写QT程序的时候,遇到了很多问题,通过搜索软件能够解决大部分问题,也有一些问题不容易在网上找到或者需要找很久,在此将问题记录下来并给出相应的解决方案,以供后面快速查找问题。欢迎使用QT的同行在这里提问或者给出问题的解决方案。
2022-09-03 16:55:19
351
原创 嵌入式平台使用相对时间实现精准定时器
一、现存问题对于资源受限的嵌入式平台,由于多线程抢占内核,在某个线程中使用系统定时器可能达不到理想的定时效果。例如我使用的MIPS7628,操作系统为Linux,最小的睡眠时间单位为4ms,想要定时10ms去内存数据并做相应的处理。 ,但是定时10ms不准确,每次定时都存在误差,时间长了以后,误差累计越来越大。处理数据的数量越多,遍历的时间也越长,误差也会越来越大。对于时间要求很严格的情况下,这是无法接受的。那么如何消除这个累计误差呢?二、消除累计时间误差方案考虑使用相对时间来消除累计误差,即使有
2022-03-26 15:46:00
1876
原创 如何使用ubuntu编译stm32程序
之前一直在做Linux应用层相关的工作,使用ubuntu编译代码。最近的项目中需要用到stm32,stm32的编译环境为keil5。在一台电脑上装两个编译器总数觉得麻烦,故而想能不能直接使用ubuntu来编译stm32的程序。在网上搜索“使用ubuntu编译stm32程序”,发现有很多教程,但是都不太全面,自己试着编译一下,在编译过程中也遇到了一些问题,现在将编译过程和遇到的问题总结如下。...
2019-06-16 19:42:37
3278
2
原创 volatile 关键字
以前总是听说volatile关键字的用法,却没有正真的使用过它,直到最近的项目中遇到一个问题,才发现它的作用。 具体问题如下:在stm32程序的中断处理函数中改变了一个全局变量的值,在main函数中一直轮询该值,如果检测到该值发生变化,则进入相应的处理流程,最开始这个全局 变量并没有加volatile关键字修饰,导致中断已经发生了,但是main函数中检测到该全局变...
2019-06-08 11:27:46
323
原创 Linux 禁止root用户登录
本文的Linux操作系统运行在Cortex-A8的硬件之上,其为我们公司的一款产品,为了保护产品的安全,我们限制了root用户的本地登录和远程登录权限。 一、禁止root本地登录: 方法: 在/etc 目录下创建文件 securetty,即 touch /etc/securetty 原因:本...
2018-09-17 19:37:35
2492
原创 Linux PAM安全认证模块 移植
PAM为Linux的安全认证模块,其详细介绍、工作原理及认证方法可参考网址:https://blog.youkuaiyun.com/yuanlaijike/article/details/78726606, 本文主要介绍PAM的移植以及移植以后的环境配置。本次移植的硬件环境为ARM -a8平台,编译器为armv7-linux-gcc ,PAM源码下载地址为:https://github.com/lin...
2018-09-08 09:43:18
2951
6
原创 TCP 应用层 心跳包
TCP/IP协议分为4层,分别为应用层、传输层、网络层、数据链路层,TCP协议在TCP/IP协议族的传输层,它提供一种面向连接的、可靠的字节流服务,服务器和客户端交换数据之前必须先建立一个连接,在此基础之上双方进行通信。但实际中会存在各种问题导致掉线(如有的防火墙会关闭长时间没有数据交换的网络、中间路由器断掉等),对于TCP长连接而言,服务器和客户端在很长一段时间内可能不会进行数据...
2018-08-13 16:15:01
2312
原创 数据结构之哈希表
之前一直采用链表的方式存储数据,但是在实际应用中发现若链表长度太长且要经常查找数据时程序反应会比较慢,这是由于链表查找效率比较低,后来发现一种比较高效的链表查找方式——哈希表。哈希表为可通过关键字查找数据的数组,数据(关键字k)可通过某种关系(映射函数,也叫散列表,例如:y = f(k))存储在数组中,我们根据关键字就可在数组中查找到数据。若对于不同的关键字可得到到相同的值即k1!=...
2018-08-03 15:58:41
210
原创 Linux can编程
1、 CAN总线协议: 控制器局域网CAN最初用于汽车的检测与控制,采用两根差分线(CAN_H和CAN_L)传输,能够实现多主机通信,详细内容可参考网址http://blog.sina.com.cn/s/blog_5049ed020102vzra.html和博客https://www.cnblogs.com/spoorer/p/6649303.html,个人认为这两篇文章已经讲的足...
2018-08-03 14:56:26
2039
原创 Linux 串口编程之GPS
之前编写了一个读取GPS内容的代码,现将之贴出来。此代码中涉及到串口初始化、串口操作的打开、关闭、读写,还涉及到GPS相关协议的解析,如接收到的GPS数据如何处理,如何发送数据到GPS模块等。协议采用的是SIM68VB NMEA协议。 1、 串口初始化代码如下: 此函数为设置串口 属性如波特率、数据位、校验位、停止位,此函数将串口设置为非阻塞,在读串口时可采用I/O多路复...
2018-07-19 21:26:42
1823
4
原创 多进程之间共享内存通信之pthread_mutex_t
在做项目的过程中发现一种简便的多进程通信的方法,现将它记录下来。该项目采用多进程的方式向多个客户端同时发视频数据。 1、创建共享内存结构体 struct shm_mutex { int pic_size; char pic_buf[PIC_COUNT]; struct env_msg env; pthread_mutex_t mutex; pthread_mutexattr...
2018-05-16 09:05:12
3931
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人