自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

(嵌入式)修行悟道

写博客为了总结知识点;高质量程序设计和实现;底层 框架和算法(ARM+linux+Android);持续而缓慢的学习,才能长久的成长;注重实用性

  • 博客(98)
  • 资源 (6)
  • 论坛 (6)
  • 收藏
  • 关注

原创 字符串:如何取出xml文件

要求:不管目录如何变化,取出20190625172036.xmlhttp://192.168.1.111:40006/xml/20190625172036.xmlhttp://192.168.1.111:40006/xml/1D/20190625172036.xml#include <string.h>#include <stdio.h>void get_xml(const char *src_data){ char xml_data[256] = .

2020-08-31 12:25:50 66

转载 示波器分析I2C时序波形图

对于嵌入式开发的朋友来说,I2C协议实在是再熟悉不过了,有太多的器件,采用的都是通过I2C来进行相应的设置。今天,我们就随便聊聊这个I2C协议。I2C协议中最重要的一点是I2C地址。这个地址有7位和10位两种形式。7位能够表示127个地址,而在实际使用中基本上不会挂载如此多的设置,所以很多设备的地址都采用7位,所以本文接下来的说明都是基于此。I2C还有一个很重要的概念,就是“主—从”。对于从设备来说,它是啥都不干的,更不会自动发送数据;而主设备,则是起到控制作用,一切都是从它开始。除了GND以外

2020-08-30 23:18:20 100

转载 四大主流芯片架构(X86、ARM、RISC-V和MIPS)

文章目录1、X86架构2、ARM架构3、RISC-V架构4、MIPS架构没有所谓的“万能芯片架构”目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种:序号 架构 特点 代表性的厂商 运营机构 发明时间1 X86 性能高,速度快,兼容性好 英特尔,AMD 英特尔 1978年2 ARM 成本低,低功耗 苹果,谷歌,IBM,华为 英国ARM公司 1983年3 RISC-V 模块化,极简,可拓展 三星,英伟达,西部数据 RISC-V基金会 2014年4 MIPS 简洁,优化

2020-08-30 16:52:01 1498

转载 国产MCU,Cortex-M和RISC-V核心

北京兆易创新,GD32系列:Cortex-M3 系列Cortex-M4 系列Cortex-M23 系列RISC-V 系列上海灵动微电子,MM32系列:Cortex-M0Cortex-M3华大半导体,HC32系列:Cortex-M0+Cortex-M4国民技术,N32系列:Cortex-M0Cortex-M4深圳航顺,HK32系列:Cortex-M0Cortex-M4Cortex-M7雅特力科技,AT32系列:Cortex-M4南京沁恒微电子,CH32系列:Corte

2020-08-30 16:42:54 649

转载 芯片架构

什么是芯片的架构?我作为一个电脑小白,对这些东西十分的感兴趣,于是关注了很多这方面的东西。我发现当谈到电脑的cpu,显卡,还有手机的soc的时候,总是会出现一个词——架构,但是每个答主只会说这个芯片的架构名称,并不会深入讨论。所以我一直对这个架构不是很理解。请问各位什么是架构呢?架构大致上是指你芯片功能的某一种实现套路,比如:每个核有几个ALU?几个FPU?几发射?各个指令要跑多少个周期?最多允许多少个核?有多少个SIMD处理器?它们之间怎样连接?有没有乱序?大致是怎样的实现?架构和指令集的关系不大。按

2020-08-30 16:41:20 104

转载 Linux驱动之定时器(mod_timer)

文章摘自一下几位网友。非常感谢他们。http://blog.sina.com.cn/s/blog_57330c3401011cq3.html#include<linux/timer.h>struct timer_list { struct list_head list;   unsigned long expires; //定时器到期时间  unsigned long data; //作为参数被传入定时器处理函数 void (*function)(un

2020-08-29 22:14:03 131

转载 JZ2440下载程序到开发板的3种方法

1.使用mount命令进行挂载①开发板必须要和虚拟机、电脑在同一个网段内(相互可以ping通)②将要下载到开发板的程序放到指定目录,这个目录需要在/etc/exports中指定,否则无法被挂载②然后在开发板上执行以下命令,要下载的程序就在开发板的/mnt目录里了mount -t nfs -o nolock,vers=2 192.168.1.100:/design/tools /mnt2.利用SecureCRT上传、下载文件①下载rzsz-3.48.tar.gz:http://downloa..

2020-08-29 17:13:18 89

原创 二.1输入子系统

input.c/* 参考drivers\input\keyboard\gpio_keys.c */#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/interrupt.h>#include <linux/irq.h>#include <

2020-08-29 14:46:53 35

转载 linux各种IPC机制

docker中的资源隔离,一种就是IPC的隔离。IPC是进程间通信。 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基础是没有问题的了。 一)Linux环境进程间通信(一)管道及有...

2020-08-28 08:38:47 65

转载 共享内存:shmget()一直失败,errno=-22

一般代码如下: key = 1234; m_nShmId = shmget(key, 1024, 0666|IPC_CREAT); if (m_nShmId == -1) { GH_LOG_ERROR("shmget() FAILED!"); return false; } 有人奇怪了,这语句是多么的正确,为什么一直错误呢?原因就是,这个key已经存在,而且

2020-08-27 16:39:00 302

转载 Camera ISO、快门、光圈、曝光

种田要知节气,开车要懂离合,任何一样手艺都有行话。虽然我觉得尽量从实际问题说起,尽量不要说的很专业,但有几个词却是谈到摄影无法避开的词,它们是:光圈,快门, 曝光,焦距, ISO,景深。 一、ISO(感光度)与图片质量 ISO -- 感光度,是一个曝光率极高的词,我们在超市买饼干的时候就可能会看见包装袋上写:本公司已通过ISO9001质量体系认证。这个ISO是国际标准组织的缩写,International Organization for Standardization (ISO)。国...

2020-08-27 08:28:24 99

原创 4.C++封装

封装,可以达到,对外提供接口,屏蔽数据,对内开放数据。比如我们用struct 封装的类,即知其接口,又可以直接访问其内部数据,这样却没有达到信息隐蔽的功效。而class 则提供了这样的功能,屏蔽内部数据,对外开放接口。struct 中所有行为和属性都是public 的(默认)。C++中的class 可以指定行为和属性的访问方式,默认为pirvate。struct instance analysis1:#include <iostream>using namespace s

2020-08-24 12:20:06 41

原创 2.1文件IO:open

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(int argc,char *argv[]){ int fd; /* *int open(const c.

2020-08-23 15:30:34 34

原创 linux动态库libxx.so

head.h#ifndef _HEAD_H#define _HEAD_Hextern int add(int a,int b);extern int sub(int a,int b);extern int mul(int a,int b);extern int div(int a,int b);#endifaddsub.cint add(int a,int b){ return a + b;}int sub(int a,int b){ return a - b

2020-08-23 15:28:04 74

原创 linux制作静态库 libxx.a

head.h#ifndef _HEAD_H#define _HEAD_Hextern int add(int a,int b);extern int sub(int a,int b);extern int mul(int a,int b);extern int div(int a,int b);#endifmuldiv.cint mul(int a,int b){ return a * b;}int div(int a,int b){ return a / .

2020-08-23 15:27:42 32

原创 linux0.12分析

我之所以能成功 ,是因为我站在巨人的肩上。这句话是由著名物理学bai家牛顿说的。要想弄懂操作系统,还得看最简单的linux内核

2020-08-23 12:21:22 65

原创 pthread

instance analysis1:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <pthread.h>void *thread_function(void *arg){ int *p = (int *)arg; int value = *( (int *) arg); while(1) { .

2020-08-23 10:01:28 54

原创 快速排序

#include <stdio.h>#include <stdlib.h>void quick_sort(int a[],int low,int high){ int i,j,key;// printf("sizeof(a) = %d.\n",sizeof(a)); i = low; j = high; key = a[low]; while(i < j && a[j] > key) j --; if(i < j) a[.

2020-08-23 10:01:02 33

原创 FTP

文件传输服务器1.客户端请求的是"put file"第一次:客户端告诉服务器端文件名和文件大小第二次:客户端给服务器端传送数据和数据的大小2.客户端请求的是"get file"第一次:客户端传送文件名接下来:客户端等待服务器的结果:A.要下载的文件存在,服务器端就告诉文件大小B.要下载的文件不存在,服务器就告诉错误信息第二次:服务器给客户端传送数据和数据的大小-------------------------------------------------

2020-08-23 09:59:27 32

原创 myping

myping www.baidu.com#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <

2020-08-23 09:58:12 68

原创 网络字节序

ARM soc程序为小端结构InterNet 网络为大端结构ARM soc ->InterNet 网络 必须经过转换才能传输#include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>//./a.out 255int main(int argc, const char *argv[]){ int data = atoi(argv[1]); int net_order; in..

2020-08-23 09:57:14 64

原创 Linux进程通信共享内存

共享内存效率最高,分析一下高在哪里:共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. shmget函数原型shmget(得到一个共享内存标识符或创建一个共享内存对象)所需头文件#include #include 函数说明

2020-08-23 09:51:50 27

原创 exec族

exec族,先上代码#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, const char *argv[]){ printf("Before execl.\n"); if(execl("/bin/ls","ls","-l",NULL) < 0) { perror("Fail to execl"); exit(EXIT_FAILU

2020-08-23 09:48:56 40

原创 fork父子进程IO读写数据

父子进程IO读写数据;跟FILE *fp有点类似#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int _child_process_read(int fd){ int n; i

2020-08-23 09:48:34 57

原创 线性队列或顺序队列

代码:#include <stdio.h>#include <stdlib.h>#define MAX 5typedef int DATAYTYPE;typedef struct { //存放数据 DATAYTYPE buf[MAX]; //记录第一个元素的下标 //出队的时候通过front出队 int front; //记录最后一个元素的下标 //入队的时候通过rear入队 int rear;}SeqQueue;SeqQueue

2020-08-23 09:47:22 38

原创 链栈

一 LinKStack节点类型struct node{ DATATYPE data; struct node *next;};栈头的类型typedef struct{ //记录栈顶的位置 struct node *top; //记录栈中元素的个数 int n;}LinKStack;A.创建空栈LinKStack *create_empty_stack(){ LinKStack *s; s = (LinKSta...

2020-08-23 09:46:21 37

原创 线性栈

介绍:一 顺序栈规定:先进后出数据类型#define MAX 10typedef struct{ DATATYPE buf[MAX]; int top;//栈顶元素的下标}SeqStack;A .创建SeqStack *create_stack(){ SeqStack *s; s = 分配空间; s->top = -1; return s;}B.栈空int is_empty_stack(SeqStack *s);C.栈满int

2020-08-23 09:46:08 40

原创 循环队列

一 循环队列typedef struct{ DATATYPE buf[MAX]; int front; int rear;}LoopQueue;规定:1.队空条件q->front == q->rear;2.队满条件(q->rear + 1) % MAX == q->front;3.front和rear更新原则q->front = (q->front + 1) % MAX;q->rear = (q-&gt...

2020-08-23 09:45:34 37

原创 链队

一 链式队列//节点类型struct node{ DATATYPE data; struct node *next;};//队列头类型typedef struct{ //记录链表头的位置 struct node *front; //记录链表尾的位置 struct node *rear;}LinkQueue;二 操作LinkQueue *create_empty_queue(){ 1.分配链表头 2.分配队列头...

2020-08-23 09:45:06 39

原创 链表

链式存储:前一个元素记录后一个元素的位置链表特点:1.有一个头节点,头节点不存放数据,只记录第一个元素所在的地址2.有个尾部节点,它的指针域为NULL数据类型typedef struct node{ DATATYPE data; struct node *next;}LinkList;A.创建一个空链表LinkList *create_empty_linklist(){ 1.head : 分配空间 2.head->next = NULL; 3.return he.

2020-08-23 09:44:21 41

原创 顺序表

分析和整理思路:一 线性表关系:一对一关系1.顺序存储A.数据类型typedef int DATATYPE;typedef struct{ //存放数据 DATATYPE buf[MAX]; //数据的个数 int n;}SeqList;B.常用的算法(1).创建顺序表SeqList *create_seqlist(){ 分配空间 初始化n的值 return addr}(2)插入元素int insert_seqlist(SeqList *L

2020-08-23 09:43:54 38

转载 学习:MQTT协议及原理

1 MQTT协议实现方式:实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。服务器端:消息代理客户端:主要消息的发布者和订阅MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收

2020-08-22 21:40:44 87

转载 5G+区块链+边缘计算+机器学习+物联网能创造出什么-幻想篇

前言:2017年12月21日,在葡萄牙里斯本举行的3GPP RAN第78次全会上,来自通信全产业链企业的近300位代表,一致通过了5G-NR的首发版标准,亲历和见证了无线蜂窝通信产业发展的历史性时刻。5G-NR标准首发版的确立,标志着5G从研究、定义、标准化走向部署和商用的新阶段,是移动通信产业发展的里程碑。更为重要的是,中国的通信产业经过了无数的曲折和博弈,终于在5G探索的道路上走向了全球标准的统一。5G-NR标准不仅是ICT商业模式进入下一个20年发展的基石,也勾勒出了通信行业驱动万物感知

2020-08-22 13:41:59 169

转载 ARM内存屏障 (memory barrier)

barrier.h#define isb() asm volatile("isb" : : : "memory")#define dmb(opt) asm volatile("dmb " #opt : : : "memory")#define dsb(opt) asm volatile("dsb " #opt : : : "memory")#define csdb() asm volatile("hint #20" : : : "memory...

2020-08-21 16:18:02 238

原创 2.file_operations结构体介绍

内核中file_operations源码 linux-2.6.38/include/linux/fs.h/* * NOTE: * all file operations except setlease can be called without * the big kernel lock held in all filesystems. */struct file_operations { struct module *owner; loff_t (*llseek) (struct fi

2020-08-20 14:07:50 103

转载 linux中如何在fb上显示

framebuffer 帧缓冲https://blog.csdn.net/readnap/article/details/83006523帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过fra...

2020-08-20 13:50:57 407

原创 TCP

server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>//./server ip portint main(int argc, const char *arg

2020-08-20 11:29:20 32

原创 fork

fork 先看代码(下象棋五步不出军,必输;十行看不到代码,讲的再有理都是空谈)#include <stdio.h>#include <stdlib.h>int global_var = 10;int main(int argc, const char *argv[]){ int pid; int local_var = 20; local_var ++; pid = fork(); // printf("PID = %d.\n",pid);

2020-08-20 08:43:32 40

原创 信号灯

write:#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/shm.h>#include <string.h>#include <signal.h>#include <sys/sem.h>union semun { int val; /* Value for SETVAL */ struct semid_

2020-08-20 08:37:03 42

原创 msgqueue

消息发送与接受:msg_a.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <signal.h>#define MSG_TYPE_A 100#define MSG_TYPE_B 200ty

2020-08-20 08:36:25 46

解析神秘H264格式-从开始1-6帧.zip

用二进制工具打开H264文件,查看头部数据格式,从数据上看解析神秘的H264,了解协议的组成格式和快速的上手

2020-07-22

Z01068C语言数值算法程序大全(第二版).pdf

宝贵的资源,本书一般可买200多,可见很有价值,有缘人好好研究一下。

2019-05-28

C#入门经典(第7版).pdf

很有含金量的一本书,需要多次阅读,多次写代码,一点一点领悟!

2019-05-27

波分复用技术

波分复用技术,随着移动互联网的发展,波分复用运用越来越广。

2019-01-15

实战攻略与高速pcb

PADS是一款制作PCB板的软件。PADS包括PADS Logic、PADS Layout和PADS Router。 PADSLayout(PowerPCB)提供了与其他PCB设计软件、CAM加工软件、机械设计软件的接口(如下图所示),方便了不同设计环境下的数据转换和传递工作。兼容Protel设计 PADS Layout(PowerPCB)具备Protel设计转换器,可与Protel进行PCB设计和封装库的双向数据转换。 支持OrCAD原理图网表

2018-05-03

4412英文资料详解

4412英文芯片详解,要有一定的英语基础,熟悉ARM结构。

2015-10-26

空空如也

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

TA关注的人 TA的粉丝

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