- 博客(29)
- 收藏
- 关注
转载 嵌入式linux自动更新网络时间NTP移植
有些嵌入式设备中为了节省成本或者体积原因都没有配备掉电保存电池,每次上电之后就需要人为手动的更新系统时间,而且系统时间也不准确。有些需要得到实时的比较准确的时间,以和服务器或是设备之间进行时间同步,但是很多嵌入式设备又不能通过人工设置时间的方式来同步时间,需要自动从网络上获取时间,这就需要用到NTP。NTP是网络时间协议(Network Time Protocol)的简称,它是用来同步网络中各个计...
2018-11-22 09:17:11
942
转载 vivado实现ECO
原文地址:https://cloud.tencent.com/developer/article/1044200应用场景:如何利用Tcl 在已完成布局布线的设计上对网表或是布局布线进行局部修改,从而在最短时间内,以最小的代价完成个别的设计改动需求。什么是ECO?ECO 指的是Engineering Change Order,即工程变更指令。目的是为了在设计的后期,快速灵活地做小范围修改...
2018-11-13 15:07:45
3422
转载 vivado使用方法
一、新建工程 首先打开vivado2017.4 点击create project 点击next 为新建的工程起名字,路径和名字都不要有中文 起好名字后点击next 起好名字后点击next 选择RTL project,勾选do not specify sources at this time,表示以后再配置资源文件 选好了之后点击next 输入你的FPGA板的型号,我的是xc...
2018-11-13 11:05:18
74865
7
转载 关于多个.c和.h文件时的相互调用(转)
假如 有一个头文件 1.h 和源文件1.c 还有一个头文件 2.h和源文件2.c 函数的调用假如 有一个函数 在1.h 中声明 void xuexi(void) 在1.c中实现:先包含 #include "1.h" void xuexi(void) ...
2018-07-26 23:36:36
4827
转载 C语言中 .h文件和.c文件的区别 (转)
要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息...
2018-07-26 22:14:57
1109
转载 数组的静态分配和动态分配
原贴:https://blog.youkuaiyun.com/lkasdolka/article/details/12750067相信许多C++的初学者像我一样搞不清楚为什么有时候使用数组的时候需要使用new语句,而有时候直接定义就好。上网找了找资料整理如下:1、在使用数组前用new表达式动态分配数组空间,new表达式在堆中分配空间,但是new之后还需delete,比较麻烦,初学者比较容易忘记,效率较...
2018-07-24 16:38:55
2403
转载 linux下IIC驱动解释
原文地址:https://www.cnblogs.com/lifexy/p/7816324.html1. I2C体系结构分析1.1首先进入linux内核的driver/i2c目录下,如下图所示: 其中重要的文件介绍如下:1)algos文件夹(algorithms)里面保存I2C的通信方面的算法2)busses文件夹里面保存I2C总线驱动相关的文件,比如i2c-oma...
2018-05-24 21:48:37
650
转载 FPGA跨时钟域设计的一点总结
1. 亚稳态的概念说明是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。 在同步系统中,如果触发器的setup time / hold time不满足,...
2018-03-19 21:04:48
1117
转载 linux驱动程序------------ioctl()函数
原文网址:https://www.cnblogs.com/tdyizhen1314/p/4896689.html一、什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …); ...
2018-03-07 19:33:46
242
原创 linux驱动设备--------字符设备的注册
linux中,内核内部使用struct cdev结构来表示字符设备。在内核调用设备操作之前,必须分配并注册一个或多个这种结构。分配和初始化struct cdev结构的方式有两种1 如果打算在独立运行时获取一个独立的cdev结构,则其注册方法为 struct cdev *my_cdev = cdev_alloc( ); my_cdev->ops = &my_fops;2...
2018-03-06 14:40:40
306
原创 linux下设备节点的产生
linux驱动写完之后编译完成,会生成.ko文件,此时执行insmod指令加载完模块后,可在cat /proc/devices看到设备名和设备号,如果要在/dev下生成设备节点,则可执行mknod指令。mkmod 设备文件名 b/c 主设备号 次设备号。例:mknod /dev/test b 124 0 在/dev文件夹下生成设备名为test 主设备号为124 次设备号为...
2018-01-19 21:11:39
2625
转载 linux下Oops消息,及如何弹出Oops消息
原文地址:http://www.360doc.com/content/14/0208/16/10366845_350759740.shtml Oops 信息来源及格式Oops 这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。Oops 信息包含以下几部分内容。1 一段文本描述信息。比如类似“Unable to handle kernel...
2018-01-19 10:25:36
1055
转载 如何修改内核打印级别
手动调整内核printk打印级别有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6 4 1 7# cat /proc/sys/kernel/printk7 4 1 7#该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据...
2018-01-15 15:21:22
2914
转载 Linux内核升级全过程
导读: ============================= 时间:2007-01-08 作者:飘扬 首发:http://www.piaoyang.org/blog Q Q: 47720194 邮箱:piaoyang168#163.com ============================= 序 言由于开发环境需要在linux-2.6内核上进行,于是准备...
2018-01-15 14:10:25
1048
转载 关于linux设备驱动程序scull编译出问题
首先main.c函数中的config.h文件在2.6.19内核版本以后已经没有了取而代之的是linux/autoconf.h ,另外还需要在各个源文件中包含 <linux/sched.h>文件,最后一个问题是在access.c源文件中将 current->uid 和current->euid 这两个值全部替换为 current->cred->uid 和 curr...
2018-01-12 14:04:40
247
转载 2.6.30.4内核无法找到 /linux/config.h 的原因
原文网址:http://blog.chinaunix.net/uid-27120815-id-3416562.html在编ldd3的模块时,提示找不到此文件,在/include/linux下确实没有,网上搜索了下,有人说此文件在2.6.19后的内核不存在了,注释掉即可,显然这是不可行的,既然包含此头文件那么肯定要用里面的东西,后搜索到一个外国人的提问,正是这个问题,回答如下:=======...
2018-01-12 10:39:59
1673
转载 《Linux设备设备驱动程序(第三版)》:scull设备的使用
原文网址:http://blog.youkuaiyun.com/wooin/article/details/1762818 1. 源代码包解压后进入scull文件夹,其中的文件有: access.c main.c 主程序,scull设备的初始化、卸载、open、 write等实现都在这里面。 Makefile ...
2018-01-11 22:25:54
1633
转载 linux 设备驱动程序 hello程序中Makefile详解
原文网址:http://www.embedu.org/Column/Column310.htm 先看一下代码ifeq ($(KERNELRELEASE),) KERNELDIR ?= /home/linux/linux-2.6.22.6 PWD := $(shell pwd) modules: $(MAKE...
2018-01-04 21:36:41
623
转载 构造linux内核树
来源:季义钦BLOG 作者:季义钦 初次接触Linux驱动程序开发,买了一本《Linux设备驱动程序》,第一件事当然就是构建开发环境了!!!它上面有一个Hello World的列子://hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");...
2018-01-04 16:52:21
1333
1
转载 exit()与_exit()函数的区别
原文地址:http://blog.youkuaiyun.com/zz709196484/article/details/54770017 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言...
2017-12-20 10:43:34
580
转载 进程和线程的区别?什么时候用进程?什么时候用线程?
原贴地址:http://www.cnblogs.com/renzhuang/articles/6733461.html答:首先得知道什么是进程什么是线程?我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。线程是进程的一个实体。进程——资源分配的最小单位,线程——程序执行的最小单位。 线程进程的区别体现在几...
2017-11-23 16:14:16
910
原创 socket中的read返回0
在socket中服务器与客户端进行通信,当其中一方调用close(即这一方会发送一个fin)关闭套接字之后,另一方read()会返回一个0。我之前编写的一个服务器与客户端通信(一个服务器只连接一个客户端):服务器开两个进程,一个用于接收客户端发送的数据,另一个进程用于向客户端发送数据。客户端开两个进程也是一个用于发送数据一个用于接收数据。由于创建了两个进程,那么套接字的引用计数都为2,只有...
2017-10-19 20:06:26
8619
转载 epoll()详解
原文地址:http://blog.youkuaiyun.com/ljx0305/article/details/4065058 epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd...
2017-10-19 19:48:14
290
转载 select、poll、epoll之间的区别总结
原文地址:http://www.cnblogs.com/Anker/p/3265058.htmlselect,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说...
2017-10-19 15:57:50
214
转载 TCP/IP协议三次握手与四次握手释放
原文地址:http://www.cnblogs.com/cy568searchx/p/4211124.html 我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:客户端向服务器发送一个SYN J 服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1 客户端再想服务器发一个确认ACK K+1只有就完了三次握手,但是这个三次握手发生在socke...
2017-10-17 21:48:15
294
转载 linux下socket中的
INADDR_ANY选项 网络编程中常用到bind函数,需要绑定IP地址,这时可以设置INADDR_ANY INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。也就是表示本机的所有IP,因为有些机子不止一块网卡,多网卡的情况下,这个就表示所有网卡ip地址的意思。 比如一台电脑有3块网卡,分别连接三...
2017-09-29 15:19:23
194
转载 TCP/IP三次我手四次挥手过程与对应状态转移图
作为互联网通讯的基础,TCP/IP协议建立连接与断开连接的过程非常重要,但是平时写代码的时候很难去关注到这些知识,今天恰好想去整理一下相关知识,发现了下面两张图比较好的解释了三次握手和四次挥手的过程,以及客户端和服务端相应的状态切换过程。TCP/IP协议建立连接的三次握手客户端发送一个带SYN标志的TCP报文(报文1)到服务器端,表示希望建立一个TCP连接。服务器发送一个带ACK标志和SYN...
2017-09-28 22:10:05
277
原创 linux下socket编程读写函数
linux下socket编程,实现服务器与客户端的通信之后,在同一个虚拟机上,打开两个shell,一个运行服务器程序,一个运行客户端程序,课相互发送数据。如果使用的是recv接收函数,当关闭客户端或服务器时,另一个shell界面会不停的输出刚刚接收到的数据。但是用read函数就可以避免这个现象,正常发送时,read函数可以返回接收到的字节数,但是当客户端(或服务器)关闭后,read函数会返...
2017-09-28 20:06:25
807
原创 认识与学习bash------鸟哥的Linux私房菜
变量的显示与设置echo $变量或者echo ${变量}变量的设置规则变量主要就是当变量内容中有空格时应该用双引号或者单引号括起来但是双引号中的特殊字符如$等可保持其原本特性,单引号的特殊字符仅为一般字符可用转义字符“\”将特殊符号(如\,[Enter],空格)变为一般字符export可将一般变量变为环境变量 export PATH父进程中的自定义变量无法在子进程中使用,...
2017-07-16 22:13:39
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人