自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轮子工厂

物有本末,事有终始,知所先后,则近道矣。

  • 博客(269)
  • 资源 (9)
  • 收藏
  • 关注

原创 Linux通过系统函数设置系统时间

一、描述通过settimeofday()函数来设置系统时间,这个函数设置的精度可以精确到微秒。#include <time.h>int settimeofday(const struct timeval *tv , const struct timezone *tz);struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */

2021-08-10 20:04:15 2758

原创 sscanf函数使用详解

一、描述sscanf通常被用来解析并转换字符串,其格式定义灵活多变,可以实现很强大的字符串解析功能。sscanf的原型#include <stdio.h>int sscanf(const char *str, const char *format, ...);str:待解析的字符串;format:字符串格式描述;其后是一序列数目不定的指针参数,存储解析后的数据.二、示例用法1. sscanf的基本用法整形数转换int year, month, day

2021-08-04 23:09:16 102648 13

转载 popen使用方法及场景

1. popen的应用场景popen应用于执行shell命令,并读取此命令的返值,或者与执行的命令进行交互。2. popen的实现popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。可以通过这个管道执行标准输入输出操作。这个管道必须由pclose()函数关闭,必须由pclose()函数关闭,必须由pclose()函数关闭,而不是fclose()函数(若使用fclose则会产生僵尸进程)。pclose()函数关闭标准I/O流,等待命令执行

2021-08-02 23:06:03 10053

转载 Linux中的popen函数和system函数

说在前面,在实际编程中尽量减少使用system函数。int system(const char *command);说明:system()通过调用/bin/sh -c命令执行命令中指定的命令,并在命令完成后返回。在执行该命令期间,SIGCHLD将被阻塞,并且SIGINT和SIGQUIT将被忽略。返回值:实际上system调用了三个函数:fork()、exec()、waitpid()。因此有三种返回值:1. fork()失败或者waitpid()返回除了EINTR之外的出错,则sys.

2021-07-31 20:47:27 875

转载 Linux的system和popen的差异

1. system()和popen()简介在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信。system()、popen()给我们处理了fork、exec、waitpid等一系列的处理流程,让我们只需要关注最后的返回结果(函数的返回值)即可。2. system()、popen()源码首先我们来看一下这两个函数在源码(伪代码)上面的差异。int system(const char *command

2021-07-30 23:24:06 1683

原创 简单的rtsp交互过程

这里C表示rtsp客户端,S表示rtsp服务端。C->:发送流媒体数据前的准备- C->S:OPTION request //询问S有哪些方法可用- S->C:OPTION response //S回应信息中包括提供的所有可用方法- C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息- S->C:DESCRIBE response //S回应媒体初始化描述信息,主要是sdp- C->S:SETUP re...

2021-07-29 22:46:05 171

原创 工具-虚拟机VMware与Windows主机共享文件介绍

一、设置共享文件夹功能虚拟机VMware提供了在宿主机与虚拟机系统之间交换文件的共享文件夹(Shared Folder)功能。不管虚拟机操作系统是Linux还是Windows都可用。你可以通过设置( Settings)>共享文件夹(Shared Folder)来设置。但是此功能选项必须要安装虚拟机工具(VMware Tools),否则如下所示,否则该功能选项不可用。二、安装虚拟机工具步骤如下所示:1. 在对应虚拟机的设置选项(Settings)下,为虚拟机光驱指定虚拟机系统的镜像文件。

2021-07-28 22:22:28 1209 2

原创 Ubuntu配置NFS及其挂载设备

1.在Ubuntu系统中安装NFS执行命令:sudo apt-get install nfs-kernel-server同时会有两个软件包nfs-common和portmap被安装上,如果没有安装成功多安装几次。2.在Ubuntu系统中的/mnt下建立共享项目nfs_shared# mkdir nfs_shared # chmod 777 -R nfs_shared/保证使用者都能够读、写、执行。如图3.在Ubuntu系统中修改NFS配置文件执行命令:...

2021-07-28 00:33:49 2483

原创 Source Insight 使用技巧整理

通用设置Options - File Type Options:- 显示行号:勾选Show line mumbers- 选中自动高亮:勾选Hightlight references to selected sysmbol- 转换tab成空格:勾选Expand tabs to spaces,设置Tab width:4高亮选中符号:F8代码折叠:View --> Show Outlining代码默认字体大小:Ctrl + 滑动鼠标滑轮,可以增大缩小代码字体大小对所有代码文...

2021-07-27 23:18:11 1219

转载 工具-虚拟机的桥接模式和NAT模式的区别

1.桥接模式通过使用物理机的网卡,有自己的IP地址,就像在电脑上虚拟出来另一台主机,它可以访问网内任何一台主机,需要手工为其配置IP地址、子网掩码、需要和宿主机器处于同一个网段,这样虚拟机才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立主机系统,就可以手工配置他的TCP\IP信息,实现通过局域网的网关或路由进行互联网访问。弊端:1. Ip地址可能会发生变化 192.150.1.100/192.168.1.1012. 如果这时传递文件时需要依靠交换机/路由器2.NAT模

2021-07-26 23:37:09 7160 1

原创 工具-如何配置Windows、虚拟机、开发板的网络

烧录软件和方便调试先要保证电脑windos操作系统、虚拟机linuxr操作系统和开发板三者之间相互Ping通,要做到这些其实很简单:1. 打开windows网络和共享中心更改适配器设置2. 打开这三个的属性,把VMware Bridge Protocol都勾上,如图3. 打开本地连接的属性再打开IPV4的属性选择使用手动IP如下图所示4. 点击VMware的虚拟机-> 设置 网络选择桥接如下图所示网络选择桥接如下图所示5.1 点击VMware的编...

2021-07-26 23:30:39 275

转载 cURL-09_使用curl库进行http通信(转)

一、LibCurl基本编程框架关于libcurl,前面已经有了很多介绍,这里就不详西描述了。在基于LibCurl的程序里,主要采用callback function (回调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时libcurl将调用用户的回调函数实现特定功能。下面是利用libcurl完成传输任务的流程:1. 调用curl_global_init()初始化libcurl2. 调用curl_easy_init()函数得到 easy interface .

2021-07-21 23:52:21 1000

原创 cURL-08_ARM交叉编译

前面提到过libcurl在Ubuntu环境下的编译安装,本章主要是嵌入式环境下的ARM交叉编译。执行前面的操作之后,进行arm的交叉编译./configure --host=arm-himix200-linux CC=arm-himix200-linux-gcc CXX=arm-himix200-linux-g++ 交叉编译,说实话整了好几个小时没怎么明白,不知道为什么不行。但是,我把原有工程的的cURL模块拆分出来,修改了Makefile之后,可以交叉编译可以在设备中运行。目前关于c

2021-07-18 23:17:47 253

原创 cURL-07_Linux下使用libcurl实现FTP文件上传下载功能

Linux下使用libcurl实现FTP单个文件或者压缩包上传下载功能一、关于FTP参考:在WIN10上搭建Ftp服务器二、FTP上传该FTP上传代码为官网上的demo例程代码,若要为己所用,只需将宏定义修改并准备一个要上传的文件即可。当然,该函数只能上传一个文件或者压缩包至FTP服务器,若要上传多个文件,可以在此例程上进行修改。#include <stdio.h>#include <string.h>#include <curl/curl.h&.

2021-07-15 20:42:21 911 1

转载 工具-在WIN10上搭建Ftp服务器(转)

在windows10上面搭建你的FTP服务器,正在学服务器这门课程,刚好学到搭建Ftp服务器。所以就在自己电脑上也搭建了一个Ftp服务器。我的电脑是win10的,所以本教程也是在win10上面搭建Ftp服务器。希望能帮到有需要的同学!一、在windows10中搭建Ftp服务器主要用的是IIS管理器管理控制台1. 在控制面板里面打开程序功能里面的FTP服务器和web管理工具二、打开IIS管理器平台,不知道在哪打开的可以直接搜索IIS打开1.在网站那里右键“添加FTP站点”2. 输入.

2021-07-14 23:12:19 6490 1

原创 cURL-06_cURL和libcurl的安装的安装途径

cURL的安装一般有三种方式:一、ubuntu16.04 安装curl,一般用于命令行工具操作1. 直接安装sudo apt install curl2. 或者是下载软件压缩包安装-Ubuntu下安装cURL库用于libcurl开发2.1 下载curl包可以在这个网站上找最新的版本 http://curl.haxx.se/download/wget https://curl.haxx.se/download/curl-7.55.1.tar.gz2.2 解压tar

2021-07-13 23:48:24 361

转载 cURL-05_curl和libcurl的区别简介(转)

curl简介curl是利用URL语法在命令行方式下工作的开源文件传输工具。它支持很多协议:DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP。curl同样支持SSL证书,HTTP POST, HTTP PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies

2021-07-12 22:06:55 252

原创 shell-shell命令监测程序运行状态

在系统没有断电的前提下,监控脚本一直处于运行中1.将av_streamer -i input_stream.so -o output_app.so 后台重定向到无底洞中去或者是运行在后台中2.检测程序运行的命令ps |grep -w av_streamer |grep -v grep|wc -l监测到运行程序返回1,没有监测到则返回03.根据检测到的状态决定是否启动程序返回0启动程序 av_streamer -i input_stream.so -o output_app.so..

2021-07-11 22:36:55 1755

原创 makefile-1.2 程序的编译和链接

一、程序的存储与运行1.1 程序的存储.text: 代码段.data: 已初始化的全局变量,已初始化的静态变量。数组、结构体也是(它们也属于变量)。.rodata: const变量;字符串.bss: 未初始化或初始化为0的全局变量;未初始化或初始化为0静态变量。数组、结构体也是(属于变量)。stack: 函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并

2021-07-10 22:49:11 227

原创 makefile-1.1-Makefile基本概念

一、一个示例先看一个代码演示:#include<stdio.h>int main(){ printf("hello world!\n"); printf("hello maekfile\n"); return 0;}makefilehello:helloworld.o gcc -o hello helloworld.ohelloworld.o:helloworld.c gcc -o helloworld.o -c helloworld.cclean: r

2021-07-10 22:23:42 234 1

原创 Git-03_gitlab的应用场景

以Linux为例,Windows平台和linux一样。前面(2.2.1点击按钮“New project”建立项目)在建立一个新的project的时候出现Command line instructions,下面几乎所有的操作都是围绕着这几条命令。Command line instructionsGit global setup在第一次使用时需要对Git进行设置git config --global user.name "yhh"git config --global user.email

2021-07-08 23:29:32 177

原创 Git-02_gitlab的配置与准备工作

前面简单介绍了Web端gitlab的一些基本信息,这里主要介绍gitlab 一些配置和准备工作。1.修改密码和邮箱略2.配置SSH Keys前面Web端介绍时提到了SSH Keys的设置(见web端界面2.12账户设置)。在往前我们建立一个新项目的时候也看到了一个SSH协议(见Web界面2.2.1点击按钮“New project”建立一个新项目,那里还有一个http协议,http协议不需要配置,但是push代码比较慢)。都有提到关于SSH,这是因为我们git仓库和Gitlab仓库之间是通

2021-07-08 22:50:59 101

原创 Git-01_gitlab的Web端界面

一、gitlab的登录Web网页输入:http://xxx.wicp.vip/ 进入gitlab登录界面,输入账号密码之后,选择 standard登录,进入Web页面。不同权限的人进入的界面是不一样的。如下:二、gitlab Web端的介绍点击Web端菜单栏上标签按钮,可以进入不同的功能任务主窗口。2.1 gitlab(一个logo标志),进入或者恢复初始界面。2.2 Project,根据下拉列表或者Project标签页中的Tab列表选择同类型的项目。如下图2.2.1点击按钮“

2021-07-06 23:36:58 1896

转载 Linux-TCP之深入浅出send和recv

概念  先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应 socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到socket的内核接收缓冲区之中。 read所做的工作,就是把内核缓冲区中的数据拷贝到应用层用户的buf

2021-06-21 16:37:35 1197

转载 数据通信--ASCII码通信&16进制通信的区别

16进制通信一般用于网络传输等的通信上,传输效率高、数据量大是二进制通信。ASCII码通信一般用与串口通信等通信上,数据量小、易于处理、便于调试,它虽然是文本模式,但本质仍然是二进制通信。在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码

2021-01-21 10:03:16 5540 1

原创 数据通信--大小端转换

一、什么是大小端内存地址 小端模式存放内容 大端模式存放内容 0x0000 0x78 0x12 0x0001 0x56 0x34 0x0002 0x34 0x56 0x0003 0x12 0x78 以0x12345678为例,可以看出。大端,存放规则:12345678 显示规则:12345678即低地址放高位,高地址放地位。小端,存放规则:78563412 显示规则:12345678即低地址放低位,高...

2020-11-08 15:02:25 5764

转载 linux-signal 信号的处理机制

最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因此在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。 每个进程都会采用一个进程控制块对其进行描述,进程控制块中设计了一个si...

2020-07-11 17:04:23 556

转载 git 修改历史提交的commit信息(重写历史)

修改最新的log信息修改历史的log信息修改历史的版本信息(非最新一条),会稍稍麻烦一点,不过也可以搞定,这里用到的方法就是git命令的重写历史功能.假定我们现在的提交信息是这样的$ git logcommit 9ac1179332670365a3e5ea00a6486998eb66db7a (HEAD -> fix_aop_no_class_defined, origin/fix_aop_no_class_defined)Author: candyleer <295198.

2020-07-11 14:14:12 4699

原创 git 切换版本库的历史状态

1. 查看版本库历史状态git log //命令显示从最近到最远的提交日志git log --pretty=oneline //精简信息git reflog //用来记录你的每一次命令(很重要)2. 在当前版本回退到上一个版本$ git reset --hard HEAD^HEAD is now at e475afc add distributed3. 跳转到指定版本号(必须要知道那个版本的commitid)$ git reset --hard 1094a

2020-07-08 20:34:06 369

原创 git merge命令使用

暂无...

2020-07-08 20:17:52 280 2

原创 环形数据结构用法归纳与总结

这里环形数据结构主要包括:环形链表、环形队列等。一、环形链表1. 如何判断一个链表是否有环判断单链表是否有环2. 如何判断一个链表是否为空pHead为指向表头结点的指针,分别写出带有头结点的单链表、单项循环链表和双向循环链表判空的条件单链表 NULL==pHead->next单向循环 pHead==pHead-&gt...

2020-07-08 20:03:55 2019

转载 git 把几个commit点合并成一个commit点

具体步骤:1. git log 查看最近提交的 commit 历史commit3commit2commit12. 执行 git rebase 命令,如果是合并commit3 commit2的命令,则需要执行:git rebase -i commit1 //commit2 和 commit3 合成的commitid最后需要依赖于 commit1注意:commit3 只能合并到commit2中去,commit2不能合并到commit3中去,因为commit3是依赖于commi..

2020-07-08 20:00:10 1313

原创 git 删除远程仓库的最近一次提交

假设你有3个commit如下:commit 3commit 2commit 1其中最后一次提交commit 3是错误的,那么可以执行:git reset --hard HEAD~1你会发现,HEAD is now at commit 2。然后再使用git push --force将本次变更强行推送至服务器。这样在服务器上的最后一次错误提交也彻底消失了具体步骤就是:1. git log //查看最近提交的 commit 历史2. git reset --hard

2020-07-08 19:52:26 2871

转载 git stash 详解

一、应用场景1. 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用 git stash 命令将修改的内容保存至堆栈区,然后顺利切换到其它分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。2. 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。3.

2020-07-08 19:47:48 407

转载 git branch的作用

git合并到主分支合并到分支到master上1、先建一个分支(所有的改动都是在分支上) git branch 分支名2、切换到新建的分支 git checkout 分支名切换到新的分支3、先提交代码到分支上 git add . git commit -m “”4、先切换至主支上 ...

2020-07-08 19:21:24 3741

转载 git 修改未push和已经push的注释信息

1. 修改还未push的注释:git commit --amend 修改后保存退出。2. 刚刚push到远端还没有人其他人下载或改动的:git commit --amend进入修改页面修改注释信息,修改后:wq保存退出。再使用:git push --force-with-lease origin master3. 如果其他人已经下载或改动:git fetch origingit reset --hard origin/master...

2020-07-08 19:11:20 710

转载 git 指定分支拉代码

1.git clone 不指定分支 git clone http://10.1.1.11/service/tmall-service.git2.git clone 指定分支 git clone -b dev_jk http://10.1.1.11/service/tmall-service.git命令中:多了一个 -b dev-jk, 这个dev_jk就是分支,http://10.1.1.11/service/tmall-service.git 为源码的仓库地址。...

2020-07-08 19:08:22 496

原创 STM32的CAN开发注意事项整理收集

一、STM32的bxCAN控制器bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。对于安全紧要的应用, bxCAN提供所有支持时间触发通信模式所需的硬件功能。STM32至少配备一个bxCAN控制器,它具有如下几个特点:支持CAN协议2.0A和2.0B主动模式 波特率最高可达1Mbps 支持时间触发通信功能 11位的标准

2020-05-11 21:36:16 3025 1

原创 CAN FD Driver-裸机模式

一、大致框架CAN总线的系统架构,CAN总线上挂在相应的设备节点。这些设备节点包含:最底层也就是物理层的CAN收发器(和本次使用CAN收发器有所区别,仅供参考)。 信息协议层也就是CAN控制器(和本次使用的CAN2517FD有所区别,仅供参考),主要体现在数据链路层这一部分。 应用程序,具体表现在控制器以不同的通信方式、MCP2517FD提供的相应指令集和指令集格式对CAN2517FD的寄存器进行读写操作,进而实现相应的功能。具体可参考:CAN总线数据链路层分析(四) 二、CAN

2020-05-10 22:03:07 2175 13

转载 CAN总线网络层与传输层的理解(五)

ISO15765-2中定义了网络层和传输层的内容,下面就对这两部分分别进行介绍。一、网络层所有网络层的服务都有统一的结构,为了定义服务,有三种服务原语:服务请求原语:服务用户向服务提供方请求服务 服务指示原语:服务提供方向服务用户通知网络层内部事件或对同级协议层实体服务用户的服务请求 服务确认原语:服务提供方向服务用户通知请求服务的结果所有的网络层服务也有统一的格式,如下:service_name.type { parameter A, .

2020-05-09 23:55:04 4966 1

candictionary_v1_cn.pdf

本词典简要介绍 CAN 技术中使用的词汇和缩写。它并非用于代替任何标准或规范。借助CAN 词典,CAN 新用户可不必查阅标准和规范就能很方便地了解技术文章、手册等。

2020-05-05

字库生成器

字库生成器,可直接生成使用。 无需注册即可使用。。。

2017-11-01

用Eclipse和GDB构建ARM交叉编译和在线调试环境

用Eclipse和GDB构建ARM交叉编译和在线调试环境,很详细,可以参考

2017-05-02

Hi3515C H.264编解码处理器用户指南

Hi3520D/Hi3515A/Hi3515C H.264编解码处理器用户指南

2017-03-06

STM32与AVR的IIC通信例程

STM32F103作为主机,AVR的Mega8A作为从机惊醒通信,已验证没有问题,可以直接使用。

2017-03-04

H264文件查看器

查看H264文件结构层次的工具,可以很方面的查看文件的片组信息。

2017-02-28

AVS到MPEG-4的视频转码研究与实现

AVS到MPEG-4的视频转码研究与实现,随着多媒体技术的飞速发展,无线移动网、因特网等各种网络之间的融合已成为趋势,实现不同网络中视频编码方案之间的无缝连接变得越来越重要。

2017-02-23

h264中文协议(中英文对照)H264解码手册

h264中文协议(中英文对照)H264解码手册

2017-02-19

HEVC(H265)标准文档JCTVC-L1003-v9

HEVC(H265)标准文档JCTVC-L1003-v9,纯英文版

2017-02-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除