自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (5)
  • 收藏
  • 关注

原创 基于IMX6ULL平台的停车场管理系统

基于IMX6ULL平台的停车场管理系统前言一、pandas是什么?二、使用步骤1.引入库2.读入数据三、是是是总结前言开发板:百问网imx6ull、stm32f103zet6开发工具:qt一、pandas是什么?二、使用步骤1.引入库2.读入数据三、是是是总结...

2022-05-05 12:06:17 2696 1

原创 UBOOT——①顶层Makefile分析

UBOOT——①顶层Makefile分析一、通识1、版本号2、 MAKEFLAGS 变量3、编译选项4、常用变量二、 make xxx_defconfig 过程——生成.config三、make过程——生成 u-boot.bin总结一、通识1、版本号VERSION = 2016 //主版本号PATCHLEVEL = 03 //补丁版本号SUBLEVEL = //次版本号EXTRAVERSION = //附加版本信息NAME = //名字

2022-04-01 15:53:59 833

原创 uboot命令

uboot命令基础命令内存操作命令网络操作命令EMMC和SD命令FAT格式文件操作命令NAND操作指令BOOT操作指令基础命令1、help / ? xx 查看帮助信息2、bdinfo 板子信息 printenv 查看板子环境变量3、setenv 设置环境变量4、saveenv 保存环境变量5、setenv xxx 新建环境变量 内存操作命令数字都是十六进制!!不是十进制1、md 显示内存值 2、nm 修改指定地址内存值 3、mm 修改

2022-03-26 23:21:30 1719

原创 RAM和ROM

RAM:内存 掉电不可存储ROM:硬盘 掉电可存储一般把rom的程序放到ram里 cpu才可以去读取指令执行eeprom:一般存放掉电时数据暂存方便下次恢复,例如关闭电视后重新打开时还是原来的频道片内可执行:不需把程序拷到内存,cpu可直接去读取nor flash:片内可执行,读写速度快,随机访问,写速度慢nand flash:片内可执行,读写速度慢,不可随机访问,写速度快一般搭配两种来使用,nor里放引导程序和驱动nand flash管理nand flash 存放内核根文件系统.

2022-03-24 23:42:47 267

原创 查看可执行文件的动态库 软连接硬链接

一、查看可执行文件的动态库objdump -x yourfile :输出 yourfile 的全部 Header 信息带有 NEEDED 属性的即为所依赖的库,所以可通过 objdump -x toolbox | grep NEEDED 指令来筛选要查找的内容。objdump -x test |grep NEEDED如果要查看 arm 上的文件,则使用 arm 的交叉工具链即可(arm-linux-gnueabihf-objdump)arm-linux-gnueabihf-objdump

2022-03-24 23:42:08 1250

原创 c++强制类型转换 static_case、const_case、reinterpret_case、dynamic_case

一、static_case:类似于C语言常用的强制类型转换const_case:将const的变量、去掉const属性,但必须是指针或引用作为左值。reinterpret_case:将指针引用转成更长的类型,int *—> double *dynamic_case:基类必须有虚函数、将基类指针指向派生类的指针转成派生类指针指向派生类(安全的向下转换)二、序列容器:vector:数组deque :双端队列,可前插入和尾部插入queue :普通队列,尾部插入关联容器:list :

2022-03-24 23:40:02 1338

原创 笔试疑惑题目

1、逗号表达式从左到右执行,取最后一个表达式的值。int main(){ double d; printf("d=1,d+5,d++ = %lf \r\n",(d=1,d+5,d++)); // 1.000000 有括号,表达式的值等于括号最右边的值。逗号之间从左到右一个一个计算。 printf("d= %lf\r\n",d); //2.000000 逗号分隔之间看作整体 从左到右一个一个计算。 printf("d=(1,d+5,d++)= %lf d= %lf\r\n",d=(1,d+5

2022-03-24 23:39:12 264

原创 根文件系统启动、init分析、配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档根文件系统启动、init分析、配置 一、根文件系统启动一个应用程序二、init进行分析三、配置根文件系统1、额外挂载虚拟文件系统目录2、udev 自动创建设备节点3、NFS文件系统一、根文件系统启动一个应用程序内核:启动应用程序{1、挂接根文件系统2、启动第一个应用程序}1、挂接根文件系统mount yaffs:内部含有第一应用程序2、内核启动第一个应用程序:a: 打开一个设备 open (“/dev/console.

2022-03-24 23:34:34 659

原创 内核、配置编译、启动流程

内核启动流程前言一、内核配置编译1、配置:生成.config2、编译二、启动流程前言一、内核配置编译1、配置:生成.config①、make menuconfig②、默认 arch/arm/configs 找到相似 xxx_defconfig -->make xxx_defconfig 执行完生成.config③、使用厂家提供 cp xxxconfig .config 再 make menuconfig 配置使得:.config —&gt.

2022-03-24 23:33:57 372

原创 u-boot

u-boot前言一、uboot编译过程1、配置过程:2、编译过程二、UBOOT第一阶段总结前言U-BOOT功能:启动内核流程:1、硬件相关初始化: | 开发功能:关闭看门狗 | 烧写flash 初始化时钟 | 网卡初始化SDRAM | USB从Flash读出内核到SDRAM | 串口启动内.

2022-03-24 23:33:11 527

原创 Ping 过程

跨网段:https://www.cnblogs.com/jackpang/p/3556587.html同一局域网:https://www.cnblogs.com/xiaolincoding/p/12571184.html1、同一局域网:A主机先构建一个icmp回送请求报文(类型8、序号、开始时间)载加上ip头,检查目标ip对应的网段,是否是该网段下,是的话,先通过arp映射表看是否存在对应目标ip的mac地址,有直接使用在ip头上加mac头,没有会发送arp报文去目标ip查找得到mac,再加上mac头

2021-10-12 20:18:16 96

原创 面试常见需要实现的库函数

常见的字符串函数实现:strlenstrcpy strncpystrcmp strncmpstrcat strncatstrstr内存操作:memset、memcmp、memcpy、memmove字符串和数组转换:atoi itoa

2021-08-27 22:51:14 134

原创 八大排序算法(C语言)

冒泡排序简单选择排序直接插入排序希尔排序快速排序归并排序堆排序基数排序时间复杂度空间复杂度稳定性选择O(N*N)O(1)无冒泡O(N*N)O(1)有插入O(N*N)O(1)有归并O(N*logN)O(N)有快排(随)O(N*logN)O(logN)无堆O(N*logN)O(1)无1)基数比较 时间复杂度小于0(N*logN) ------>不行2)时间复杂.

2021-08-27 22:43:42 118

原创 继承、多态、虚函数、纯虚函数、抽象类

继承与多态一、继承1、继承概念2、继承使用方法3、三种继承方式:4、继承中构造函数和析构函数关系5、派生类的重定义(隐藏的一种)重载、重定义(隐藏的一种)、多态关系:6、类指针7、虚继承与虚基类二、多态1.虚函数2.多态3、虚析构函数4 、纯虚函数、抽象类①、纯虚函数②、抽象类(包含纯虚函数)一、继承1、继承概念在原有类的基础上派生出新的类,新类继承原有类的属性和方法,称原有的类为基类, 又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。从一个基类派生的继承称为单继承、从多个基类派生的继.

2021-08-20 20:58:55 255

原创 c++ 类内部枚举 和 类内部宏

类内部枚举 和 类内部宏前言一、类内部枚举二、类内部宏前言#include <iostream>using namespace std;class test{public: enum type{One = 4,Two, Three}; //内部枚举声明 #define PI 3.14; //内部宏定义 void getT(); private: type t; //定义枚举变量 };void test::getT(){ t .

2021-08-19 16:57:15 2854

原创 构造函数、析构函数、构造函数初始化列表、命名空间、对象大小、地址

构造函数、析构函数、构造函数初始化列表前言一、构造函数1、默认构造函数2、重载构造函数3、拷贝构造函数二、在构造函数中使用初始化列表三、析构函数四、命名空间前言当创建类的对象时,创建好空间后自动调用构造函数,结束自动调用析构函数析构函数调用顺序与构造相反。一、构造函数#include<iostream>using namespace std;#include <stdio.h>#include <string.h>class Student{p.

2021-08-14 21:54:15 206

原创 c++常用基础知识点

c++常用基础知识点1、强制类型转换 static_cas2、域运算符 ::3、动态分配内存 new和delect4、函数重载不同形式:5、带默认形参值的函数6、内联函数inline7、引用类型&1、强制类型转换 static_casstatic_cast<类型>(变量); char b = '1';int a = static_cast<int>(b)其他 const_cast<类型>(变量);2、域运算符 ::#include

2021-08-14 18:11:16 74

原创 c结构体之位域

一、 结构体之位域struct A{ int a:4; int b:3; //4}; //4字节struct B{ int i: 8; int j: 4; //i + j = 8字节 double b; //8字节 int a:3; // 8字节}; 24字节struct C{ int i: 8; int j: 4; int a: 3; //i+j+a = 8 double b; // 8}; 16字节

2021-08-14 17:25:52 138

原创 c/c++ const与static

c/c++ const与static前言一、C语言与C++ 的const 区别二、C++ const在函数的使用(类外)1.作为参数的const修饰符2.作为函数返回值的const修饰符三、const / static 在类的使用1、const 修饰类对象2、const 修饰类成员变量3、const 修饰类成员函数4、static 修饰类成员变量5、static 修饰类成员函数6、static 与 const 修饰成员变量前言const 在C++里是常量 存在于符合常量表里。static .

2021-08-14 15:34:44 138

原创 进程间的通讯:SOCKET(UDP)、广播、多播、丢包问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档SOCKET(UDP)前言一、使用的API1、socket()创建2、bind()绑定地址①、bind()②、网络字节序转换:3、connect()请求连接服务端4、sendto() 发送 与 recvfrom()接收5、close()关闭socket二、案例1、单播2、组播3、广播总结前言UDP可分为单播,组播,广播使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址

2021-08-08 13:48:56 963

原创 进程间的通讯:SOCKET(TCP)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档SOCKET(TCP)前言一、使用的API1、socket()创建2、bind()绑定地址①、bind()②、网络字节序转换:3、listen()转为被动监听4、accept()等待请求连接5、connect()请求连接服务端6、send() 发送 与 recv()接收7、close()关闭socket二、案例1.简单服务端和客户端连接互传信息2.服务端可被多个客户端连接(thread)3、服务器可被多个客户端连接(I/O多路复用)总结

2021-08-06 23:57:40 784

原创 同步方式:文件锁flock()/fcntl()、互斥锁与条件变量、信号量、读写锁

文件锁前言一、flock()给文件加锁二、fcntl()给记录(文件)加锁1、write_lock.c 互斥写2、read_lock.c 共享读前言1、文件锁包含劝告式锁和强制式锁。劝告式锁:要求每个使用上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。在一般情况下,内核和系统都不使用建议性锁,它们依靠程序员遵守这个规定。强制式锁:是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每次读写操作都必须检查是否有锁存在。.

2021-08-05 18:03:22 1334

原创 HTTP、TCP、UDP 区别原理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、网络协议层OSI七层与TCP/IP四层1、OSI七层2、TCP/IP四层二、HTTP、TCP、SOCKET区别与原理1、TCP协议的三次握手和四次挥手①、三次握手②、四次挥手③、常见面试问题2、HTTP协议总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、网络协议层OSI七层与TCP/IP四层

2021-08-04 20:56:23 459

原创 进程间的通讯:共享内存

共享内存前言一、System V 共享内存shmget()1、创建或打开 shmget()2、使用 shmat() / 分离shmdt()①、标题使用 shmat()②、分离shmdt()3、控制操作(删除) shmctl()4、共享内存内放置posix无名信号量二、Posix 共享内存shm_open()1、创建/打开 shm_open()+ftruncate()①第一步先shm_open()创建内存对象②第二步设置/修改共享内存大小ftruncate()2、将内存对象映射到进程mmap()3、关闭映射.

2021-08-02 23:25:34 428

原创 进程间的通信:信号量

信号量前言一、POSIX信号量:有名sem_open/无名sem_init1、有名信号量sem_open()①、创建打开信号量sem_open()②、关闭sem_close()/删除sem_unlink()信号量2、无名信号量sem_init()①、初始化信号量 sem_init()②、摧毁信号量sem_destroy()3、无/有名共用等待( P)sem_wait/发布(V)sem_post()4、sem_trywait()/sem_timedwait()5、例子①、使用无名信号量,对共享变量的访问②、.

2021-08-01 22:43:38 654

原创 进程间的通讯:消息队列

消息队列前言一、System V 消息队列1、创建或打开msgget()2、控制(删除)msgctl()3、发送/接收消息 msgsnd()/msgrcv()4、demo.c5、修改消息队列参数二、POSIX 消息队列1.创建,关闭和删除2.发送与接收3.消息通知mq_notify()前言消息队列:1、消息队列是进程或线程间通讯的其中一种方式。遵循先进先出的原则,保证了时间的顺序性。拥有该消息队列读权限的进程可以从消息队列读出数据,拥有该消息队列写权限的进程可以向消息队列发送数据。2、消息作为.

2021-08-01 14:47:56 2016 1

原创 进程间的通信:管道与FIFO

管道与FIFO前言一、管道pipe()二、FIFO1.FIFO创建mkfifo()2、open()、read()、write()3、FIFO删除unlink()前言管道:无名管道,pipe()单向传递,父子进程之间进行传递 read writeFIFO:有名管道,mkfifo(),任意进程。open read write close unlink一、管道pipe()字节流传输,一次传输按规定大小才传送出去。注意关闭未使用管道文件描述符函数说明pipe(建立管道):1) 头文件 #i.

2021-07-30 17:34:47 354

原创 时间、定时器与休眠

时间、定时器与休眠前言1、时间:2、定时器与休眠一、时间数据结构与转化函数二、定时器与休眠总结前言1、时间:日历时间:UTC,格林威治时间,从1970.1.1.00:00开始,以秒数度量,存储于time_t类型时区:不同国家使用不同时区和夏时制,时区定义于系统本地时区文件/etc/localtime地区:显示格式差异,地区信息维护于/usr/hare/local软件时钟(jiffies):各系统调用的精度受限于此,大小定义于常量HZ(100=HZ=10ms)时间转换函数:日历时间、分解时间.

2021-07-29 11:53:47 1382

原创 信号处理函数创建signal、sigaction、kill、sigqueue

信号前言一、信号处理函数signal()1、信号处理函数注册signal()2、信号发送kill()3、阻塞信号(信号掩码)sigprocmask()与等待状态信号sigpending()①、阻塞状态字获取和设置②、信号集操作函数(状态字表示)4、等待信号pause()二、信号处理函数sigaction() 首选1、信号处理函数注册sigaction()2.信号发送sigqueue()总结前言信号是事件发生时对进程的通知机制。也称之为软件中断信号分两类:①、用于内核向进程通知事件,构成标准信号。.

2021-07-28 11:12:44 549

原创 线程创建、终止取消、同步(互斥锁条件变量)

线程创建、终止取消、同步前言一、线程创建pthread_create1、创建非分离线程2、创建分离线程①、在线程里使用 pthread_detach分离②、使用线程属性pthread_attr_t ,创建线程就分离3、线程连接pthread_join二、线程终止与取消1.线程正常终止 pthread_exit2.线程取消 pthread_cancel①、取消状态及类型、取消点②、清理函数push/pop三、线程同步:互斥量和条件变量1、互斥量①、静态/动态分配互斥量②、加锁和解锁互斥量③、互斥量死锁:④、.

2021-07-26 10:08:11 448

原创 进程的创建、终止、监控、执行

进程前言一、进程的创建 fork()/vfork()1、获得进程id2、fork()3、vfork()二、进程的终止 exit()/_exit()1、正常结束进程 exit()2、结束进程执行 _exit()3、exit()与_exit()区别三、监控子进程 wait()/waitpid()1、wait()2、waitpid()四、程序的执行 exec()族1、exec()族2、system()五、僵尸进程和孤儿进程1、概念2、危害与解决方法六、守护进程与后台进程前言fork创建一个子进程,该.

2021-07-23 19:38:18 349

原创 程序存储结构与虚拟内存

程序存储结构与虚拟内存一、程序存储结构1、存储时2、运行时二、虚拟内存一、程序存储结构程序存储结构分为:存储时和运行时的结构1、存储时C语言在还没调入内存之前,分为3个区域:代码区(text)、数据区(data)、未初始化数据区(bss)。代码区(text):存放二进制代码,代码区可共享(被别的程序调用)、只读防止被修改。数据区(data):包含全局初始化数据区和静态数据区。存放已经被初始化的全局变量、静态变量(包括全局静态变量和局部静态变量)和常量数据(如字符串常量)。未初始化数据区(b.

2021-07-23 10:23:31 609 3

原创 静态库与动态库

静态库与动态库前言一、静态库生成二、动态库生成三、利用动态库做成的程序无法运行?前言我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。①、静态库:在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。静态库的名字一般是libxxx.a(Linux),xxx是该lib的名称。②、动态库:在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。动态库的名字一般是libxxx.so(Linux),有时候也是 libx.

2021-07-22 10:54:33 106

原创 文件IO与标准库IO

文件IO与标准库IO一、文件(系统)IO与标准库IO二、标准IO 相关的API1.fopen / fcolse2.fread/fwrite/fseek/ftell3.fgetc/fgets fputc/fputs三、文件IO相关API1.open/close2.read/write3.lseek4.ioctl/fcntl四、进阶文件I/O1.独占方式创建文件2.向文件尾部追加数据 与非阻塞IO3.复制文件描述符4.在文件特定偏移量处的I/O:pread/pwrite5.分散输入和集中输出:readv/w

2021-07-21 23:56:52 145

原创 arm板+gdb+gdbserver 调试

一、gdbserver远程调试 安装在开发板运行时出现段错误,很难用ubuntu里的gdb方式,需要借助gdbservergdbserver:一般在配套的交叉工具链里有,没有的话需要自己编译 解压 安装 GDB如下:从工具链里找到 把它拷到开发板的 /bin 下 (使用前提是开发板有线或无线连接到主机、我是通过nfs挂载共享目录的)移植到开发板后,就是开始使用了二、gdb+gdbserver使用已知:主机ip : 192.168.137.120开发板ip :192.168.137

2021-07-17 21:54:35 613

原创 makefile错误、找不到头文件、交叉编译

一、*** No rule to make target 'disp_manager.h', needed by 'disp_manager.o'. Stop.错误原因:1、编译依赖错误,2、引用之前使用过得makefile 当make clean 时 一些依赖并没有全部清除解决:使用 make distclean 彻底清除**二、fatal error: ft2build.h: No such file or directory描述:已经把编译好的库 头文件都放到交叉编译

2021-07-13 23:36:25 15876

原创 环境变量

环境变量、更改软件源一、临时设置二、当前用户的全局设置三、所以用户的全局设置四、更改软件源一、临时设置终端直接输入,对应工具链bin的绝对路径export PATH=$PATH:/home/lyc/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin export ARCH=arm //架构export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- //编辑器二、当前用户的全局设

2021-05-17 21:56:03 64 1

原创 基于imx6ull视频监控

基于imx6ull视频监控前言一、mjpg-streamer1、编译mjpg-streamer2、运行mjpg3、mjpg框架二、流媒体1、ffmpeg2、nginx服务器3、实现flv.js访问和ip地址访问4、内网穿透总结前言基于韦东山课程的视频监控方案https://www.100ask.net/detail/p_5f0fc9e9e4b0ee0b8872c2c3/61、mjpg-streamer2、流媒体一、mjpg-streamer1、编译mjpg-streamer有两种方法.

2021-03-27 18:11:01 2079 1

原创 阻塞和非阻塞、中断的线程化

阻塞和非阻塞、中断的线程化一、阻塞和非阻塞1、应用层2、驱动层二、中断的线程化1、创建线程化中断 request_threaded_irq2、卸载中断 free_irq一、阻塞和非阻塞所谓阻塞,就是等待某件事情发生。比如调用 read 读取按键时,如果没有按键数据则 read 函数不会返回,它会让线程休眠等待。使用 poll 时,如果传入的超时时间不为 0,这种访问方法也是阻塞的。APP 调用 open 函数时,传入 O_NONBLOCK,就表示要使用非阻塞方式;默认是阻塞方式。注意:对于普通文

2021-03-20 17:03:34 334

原创 异步通知

异步通知前言一、异步通知机制二、四要素三、应用层要做的事1、利用signal设置SIGIO信号处理函数2、打开驱动3、把进程ID告诉驱动4、使能驱动的FASYNC功能四、驱动层要做的事1、添加一个fasync_struct 结构体指针2、实现设备操作结构体中的fasync函数3、在需要向用户空间通知的地方(例如中断中)调用内核的kill_fasync函数五、总结+源码前言使用异步通知(信号)实现按键驱动一、异步通知机制驱动程序发出信号,应用程序接受到信号处理相对应的函数二、四要素1、应用程.

2021-03-20 10:02:32 745

基于IMX6ULL平台的停车场管理系统

开发板:百问网imx6ull、stm32f103zet6 开发工具:qt5.12.8 + keil5 1、利用STM32模块连接超声波与舵机模拟真实停车杆环境 2、STM32与imx6ull开发板串口连接通信 3、车辆进入测距检测,自动触发车牌识别 4、车牌识别成功后与数据库比对是否可以入库 入库后自动更新出入库数据 6、可以添加与删除数据库数据 7、可以自动计算费用并在车辆出库扣除相应费用 8、可以对卡片进行充值费用 9、实时监控

2022-05-05

常见面试需要实现的函数std_func.c

* 常见的字符串函数实现: * strlen * strcpy strncpy * strcmp strncmp * strcat strncat * strstr * * 内存操作: * memset、memcmp、memcpy、memmove * * 字符串和数组转换: * atoi itoa *

2021-08-27

八大排序C语言实现sort.c

八大排序C语言实现

2021-08-27

face_recognition.rar

基于翔云平台人脸识别 C语言https请求实现

2021-08-04

namesem.rar

System V 信号量封装成类似posix的模式

2021-08-01

空空如也

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

TA关注的人

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