- 博客(30)
- 收藏
- 关注
原创 晶晨S905D3切换到外部phy方法
随着芯片的国产化推荐,越来越多的国产芯片被大家重视起来,但是国产的一些稍微高性能的芯片资料太少,这里把调实phy的流程记录一下,不做太多的理论分析。
2023-03-21 10:25:49 420
原创 linux下实现RS485驱动,消除DE引脚抖动
RS485驱动其实就是串口驱动外加一个GPIO驱动,GPIO驱动很好实现,但是RS485最大的问题在于DE引脚拉高拉低的时候,带来的延时,会影响到数据的收发,本文主要介绍6M串口下,几种收发影响。目前我使用的是linux 4.9.113版本,linux定义串口波特率的位置是/*# endif。。。。。。。。。。#define B6000000 0010017 //这里是修改的地方。。。。。下面修改相关程序,在sdk里面找到你自己底层的uart驱动程序,修改。
2023-03-17 16:16:16 2005
原创 内核链表实验一
熟悉内核链表的基本使用,主要是如下几个函数。1.定义内核链表并初始化struct list_head{ struct list_head *prev; //前级指针 struct list_head *next;//后级指针};void INIT_LIST_HEAD(struct list_head *list)//初始化通用链表{ //前后级指针都指向本身 list->next=list; list->prev=list;}显示了内核链
2021-06-19 16:49:25 163
原创 串口遇到问题总结
1.SecureCRT可以正常显示,但是无法输入进行交互【解决办法】在使用的时候把RTS/CTS选项去掉即可2.串口无法正常使用【解决办法】卸载重新安装
2021-06-18 00:06:43 584
原创 结构体与共用体与枚举之间的相互嵌套使用
在面向对象的编程中,嵌套使用有很多好处,这里对我用到的进行简单整理,后续在进行扩充1.在共用体中嵌套结构体说明:共用体中嵌套入结构体,是为了省内存考虑,因为共用体定义的成员变量并不是都会被用到。typedef union{ struct { int a:16; int b:16; }; int temp; }DataInfo;int main(){ DataInfo data; data.temp = 20; p
2021-06-14 00:38:11 2580 1
原创 Linux0.11内核的学习——工具的准备
实现操作系统引导程序的前置工作一 . 用到的命令1.nasmnasm boot.asm -o boot.bin实现汇编代码的编译2.bximagebximage a.img -q -fd -size=1.44-fd是创建虚拟软盘,大小为1.44M3.dddd if=boot.bin of=a.img bs=512 \count=1 conv=notrunc将二进制虚拟码写入软盘if:代码的是输入,编译后的结果of:代表的是输出,输出到a.imgbs=512:写入的大小conv=n
2021-05-24 07:50:27 154
原创 设备驱动入门总结一
驱动模板1.文件操作/*与一些其他函数,特殊功能需求的实现函数*/2.核心数据结构体/*主要是文件操作对应的结构体*/3./*加载函数*/static int __init misc_device_init(void){ /*实现对应驱动设备的注册*/}4./*卸载函数*/static void __exit misc_device_exit(void){ /*实现对应驱动设备的卸载*/}5. 模块说明与开源协议module_init();module_
2021-01-23 01:02:02 107
原创 嵌入式中的函数指针一
函数指针在嵌入式操作中经常被用到,比如一些操作系统中的,钩子函数,回调函数,都是通过函数指针实现的,再次总结一下函数指针,先从函数指针的而基本概念说起:1.函数指针函数指针归根结底还是指针,其形式如下:类型 (*指针名)(参数1,参数2...);比如:int(*p)(int ,float);使用方法如下:#include<stdio.h>int func1(int a, float b){ return a + b;}int func2(int c, float d)
2020-09-08 17:15:49 416
原创 小例子:实现互斥锁,自旋锁
互斥锁,自旋锁在多线程并发访问临界区时,使用上面三种操作,可以实现并发访问。首先创建是个线程 for(i = 0;i<THREAD_COUNT;i++) { pthread_create(&threadid[i],NULL,thread_callback,&count);//返回线程的ID传回的是地址 }其次编辑回调函数,回调函数实现的是让pcount的值达到1000000,达到一百万的过程是十个线程的共同作用结果。void thread
2020-08-29 17:29:06 373
原创 QT编程错误解决——error: no matching function for call to
实现信号与槽函数绑定机制中出现如下错误:error: no matching function for call to 'Widget::connect(QPushButton*&, void (QAbstractButton::*)(bool), Widget*, <unresolved overloaded function type>)'错误原因是因为在进行响应调用...
2020-04-24 00:44:14 43903 2
原创 C++中动态绑定
动态绑定:实际就是多态,多态是指不同的对象,对同一消息的不同响应,通过父类的指针或者引用,调用虚函数时,才会发生动态绑定。举例如下:#include<iostream>using namespace std;class A{ public: int i; A():i(10){ } virtual void...
2020-02-12 20:17:55 273
原创 C++中被默认为const类型的操作举例
下面的例子会从计算机组成原理的角度分析c++里面遇到的一个特殊示例,稍加说明。如下示例:#include<iostream>using namespace std;int main(){ char *q = "abc"; q[0] = 'm'; cout <<"the result is q = " << q <<...
2020-02-11 13:25:49 381 1
原创 Linux下C++继承中函数退出
继承:是在已有的类上进行改造,产生一个新的类对于继承的新的类,对于调用后的#include<iostream>using namespace std;class A{ public: A(){ cout << "A::A()" << endl; } ~A(){ ...
2020-02-09 16:02:37 128
原创 C++中不同对象之间的访问限制
C++中的访问属性有三种,private,public,protectedpublic:表示公开访问权限。private:是私有访问属性,非类内成员不可调用,对于同一类的不同对象可以随意访问。下面示例充分证明了,C++中同一类的不同对象的访问。#include<iostream>using namespace std;class ss{ private: ...
2020-02-08 12:26:07 329
原创 linux 下C++——析构函数分析
摘要:析构函数的形象分析构造函数:在类的定义时,与类同一个名字的函数,无返回类型析构函数:在构造函数形式上加上“~”,功能是:为调用本次类的最后一个需要默认执行的函数实例说明如下:#include<iostream>using namespace std;class ss{ public: ss(int a); ~ss(); ...
2020-02-07 20:27:33 352
原创 讨论#ifndef与#define
讨论#ifndef与#define摘要:在进行头文件的处理时,很多时候关于#ifndef与#define会被大家机械的使用不知所以然,下面总结一下,并配合一定的实例,帮助理解。在头文件中,#ifndef xxx_H_ 表示,如果文件中没有 包含 xxx_H_ 如果是真的,接下来继续执行,如果为假的,接下来就是:`#define xxx_H_..............#endif...
2020-02-06 19:05:47 679
转载 TCP服务器一个端口号可以有多个连接
要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和UDP,前者可以...
2019-12-17 16:30:40 3233
原创 “鸠占鹊巢的”exec
在Linux中,把程序载入内存并执行程序映像的操作与创建新的进程的操作是分离的,一次系统调用会把二进制程序加载到内存中,替换地址原来的内容并开始调用,利用系统调用exec()。另外一种系统调用时创建一个新的进程,基本上相当于复制其父进程,这个过程称为fork().在shell下面运行 ls 的命令,strace ls 查看命令如下:execve("/bin/ls", ["ls"], [/* 6...
2019-09-30 17:04:54 116
翻译 vmware安装无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件
下面转载一篇虚拟机遇到“vmware安装无法打开内核设备 \.\Global\vmx86: 系统找不到指定的文件”问题的解决办法*****问题原因:是虚拟机服务没有开启解决方法:(以管理员的方式运行)点击“开始→运行”,在运行框中输入 CMD 回车打开命令提示符,然后依次执行以下命令net start vmcinet start vmx86net start VMnetuserif...
2019-08-05 09:38:47 399
原创 Linux中的数据结构抽象list_head
在Linux系统中大量使用了双向链表这一数据结构。一般的想法是在使用双向链表数据结构的时候:typedef struct page{ struct page *prev; struct page *next; .........}pagetypedef struct node{ struct node *prev; struct node *next; .........}...
2019-07-31 15:56:25 217
原创 堆栈的先进后出
实现堆栈的先进后出#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_SIZE 10#define Error 0#define True 1typedef struct{ int id; char *name;}ElemtType;/...
2019-06-27 22:38:27 1769
原创 数据结构——循环单链表
代码实现如下:#include <stdio.h>#include <stdlib.h>#include <string.h>/*定义链表的数据结构*/typedef struct{ int id; char *name; }ElemtType;typedef struct Node{ ElemtType data; struc...
2019-06-25 15:20:23 179
原创 虚拟机打开时出现‘内部错误’解决办法
虚拟机好久没用今天突然心血来潮打算搞点事情,结果一打开出现很少扫兴,不过问题已经解决没什么大问题首先 win+R打开dos命令接着输入services.msc回车后出现往下拉找到vmworks开头的字节然后点击启动服务,把所有没有启动的全部启动了,这样就可以打开啦希望对小伙伴有帮助!☺...
2019-06-11 21:19:56 16104 4
原创 基于LabVIEW的串口通信
利用labview实现串行通信一.实现方式上图是整体的代码结构。实现串口传输和保存到txt文本中的目的。二.MATLAB跑串口下载的数据将串口数据送入MATLAB中分析,在串口保存数据的时候注意两个问题:第一:串口传输的是字符串,所以默认带有回车,自己在保存数据的时候,如果原样保存,千万不能加“回车换行符号”,不然保存的txt是无法读取的第二:如果对源字符串进行拆分,拆分后进行组合...
2019-06-10 19:11:47 1197 1
原创 深入理解计算机系统——计算机系统简述
1.总线总线:就是电子管道,负责在各个部件之间传递信息字:总线传递的都是定长的字节快字节数:字中的字节数,比如32位的机器是4个字节,64位的机器是8个字节2.IO设备输入:鼠标,键盘输出:显示器磁盘驱动器:磁盘(存放程序和数据)3.主存临时存储设备,用来存放程序和程序处理的数据由(DRAM)芯片组成,4.处理器是中央处理器的简称(CPU),作用就是解释主存中的指令。PC...
2019-05-25 12:54:54 837
转载 怎么理解(*(void(*)())0)();这条语句
《C陷阱和缺陷》书中所说,表达式(*(void(*)())0)()功能主要用于模拟在计算机启动时,作为硬件调用首地址为0的子程序的C语句,这段语句的含义是什么?下面是转载的一篇博客,在此发一下,并附上作者的链接以示尊敬。https://blog.csdn.net/yxfabcdefg/article/details/829286041、铺垫在分析上面的语句前,我们先从简单的入手。先来区别和理解...
2019-05-14 10:42:54 327
转载 Linux中的双向链表
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3562146.html双向链表也是由节点组成,每个节点是两个指针组成,分别指向直接后继和直接前驱表头为空,表头的后继节点为"节点10"(数据为10的节点);“节点10"的后继节点是"节点20”(数据为10的节点),“节点20"的前继节点是"节点10”;“节点20"的后继节点是"节点30”,“节点30...
2019-05-09 11:27:59 1120
原创 数据结构——链表1
数据结构——链表 1数据结构——链表1//链表结点数据类型struct linknode{ void * data; struct linknode *next;};//链表数据类型//记录链表信息,链表头结点,大小等信息struct linklist{ struct linknode header;//拿到链表的头结点就相当于拿到整个链表 //也可以*header,但是...
2019-05-08 21:07:03 290
原创 通过字符串的查询程序,来了解字符串和字符串指针
在这里插入代码片#include <stdio.h>#include <stdlib.h>/*函数名称:字符串查询函数说明:1.字符串常量可以直接赋值给指针变量字符串中的双引号做了三件事“开辟空间”,“返回地址”“得到’’/0’”2.所以字符串可以和指针直接相等*/const char *key_word[] = {“do”,“for”,“if”,“re...
2018-11-15 11:06:15 137
ChatGpt指令大全,学会如何更好的与ChatGpt交流
2023-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人