自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 收藏
  • 关注

原创 杂记(学习过程中出现的问题)

2022-09-04 11:56:21 235

原创 字符设备驱动

驱动开发基础

2022-08-25 17:53:42 517 1

原创 uboot添加新板子

基于imx6ull 开发板进行板级信息的添加。

2022-08-14 13:14:59 433

原创 uboot内存相关命令操作

uboot

2022-07-31 13:15:42 1344

原创 Uboot

uboot

2022-07-30 09:43:15 7285

原创 Git相关使用 (2)

目录一、Git基本理论(重要)二、工作流程三、Git项目搭建一、Git基本理论(重要)Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下: Workspace:工作区,就是你平时存放项目代码的地方 Index / Stage:暂.

2021-12-08 16:46:32 88

原创 Git相关使用(1)

目录一、什么是版本控制?二、常见的版本控制工具三、版本控制分类1、本地版本控制2、集中版本控制 SVN3、分布式版本控制 Git四、Git与SVN的主要区别五、配置Git1.下载Git2.安装:3.相关介绍4.配置用户账号一、什么是版本控制?版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开...

2021-12-06 15:50:00 97

原创 驱动开发(1)——字符设备驱动

一、驱动含义字符设备是Linux驱动中最基本的一类设备驱动,字符设备就是一个字节,按照字节进行读写操作设备,读写数据是分先后顺序的。比如我们常见的点灯、按键、IIC、SPI、LCD等都是字符设备,这些设备的驱动就叫做字符设备驱动。 在Linux中开发一般只能是用户态,也就是用户只能编写应用程序,但是要作用于内核,那么就需要了解Linux中应用程序是如何调用内核中的驱动程序的,Linux 应用程序对驱动程序的调用如下图所示:在Linux 中...

2021-09-26 09:32:03 3010 1

原创 浅谈内核结构\shell

一、Linux系统怎么构成的?Linux系统由两部分构成:1.用户空间:基础的c语言和C库,包括(管道、消息队列、socket、网络等一些编程),C库提供了应用程序支配内核干活的接口(C库与系统调用接口打交道)。open、read、write系统调用接口:open-->sys_open;read-->sys_read;write-->sys_write2.内核空间:Linux内核的任务:1.从技术层面讲,内核是硬件与软件之间的一个中间层...

2021-09-25 10:05:13 339

原创 反转链表——迭代法

1->2->3->4->5反转为:5->4->3->2->1#include <stdio.h>#include<stdlib.h>struct node{ int num; struct node *next;};void PrintLink(struct node *p){ struct node *head=p; while(head!=NULL) { printf("%d ",head->n

2021-09-22 23:45:06 117

原创 并发与竞争

一、什么是并发与竞争?并发:多个“用户”同时访问一个共享的内存。竞争:多个“用户”同时访问一段共享的内存并对其修改,就会造成数据混乱,甚至程序崩溃,这就是竞争。二、造成Linux系统产生并发的原因是什么呢?(1)多任务(线程)并发访问(2)抢占式并发访问(3)中断程序并发访问(4)SMP(多核)核间并发访问三、什么是同步?显然,我们不希望这种情况发生,就有了对临界资源的保护,让每个时间只能有一个进程/线程访问,甚至有序访问,这就叫同步。同步的手段有多种,比如:自旋锁、

2021-09-22 20:33:15 350

原创 浅谈IIC协议

IIC 简介 IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。PS: 这里要注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI...

2021-09-22 10:01:36 1241

原创 映翰通——嵌入式软件面试

映翰通和朗驰欣创是同一天面试的。映翰通在下午,面了大概30分钟。面试的时候直接来了3个人,这阵势.....不得了不得了1.首先请你做一个自我介绍吧2.我看了你简历上面的智能家居项目,你能简单说一下智能家居吗?3.接触过驱动开发吗?4.语音识别模块儿又没有进行内核开发?5.进程间通信方式6.简单说说你的实习项目7.多多智能家居里面的多线程这个吧自己都给说糊涂了,没有说好8.socket网络编程的步骤9.你说说accept怎么确定连接上了一个客户端10.手机怎么控

2021-09-19 10:23:24 371

原创 朗驰欣创——嵌入式软件面试

我是校招投的朗驰欣创,然后宣讲会的时候就进了我们学校的校招群,再做了嵌入式红外的笔试题后(一个工作日)就被电话通知去面试。也是秋招找工作的第一次面试,冲冲冲。面试时间是上午的10点钟,然后我提前半个小时我就到了,填写了一个个人信息单子之后就在外面等面试,面试的人一个一个被叫进去,整的我的心情十分紧张。到我面试的时候是一个中年大哥,一看样子就是一个老高级工程师了,哈哈。但面试官很随和,一进来没有让我自我介绍直接就开始面试了。1.你给我简单说一些什么是嵌入式?这个问题还好我上嵌入式系统原理的时候

2021-09-19 09:40:41 231

原创 libcurl库相关编程

Libcurl库简介在linux下用c语言做HTTP的编程有一种方法是依赖于这个libcurlv库,以后做跨平台网络协议相关的开发,第一个要想到的就是它。libcurl是一个跨平台的网络协议库,支持http, https, ftp等协议,libcurl同样支持:(1)HTTPS证书授权(2)HTTP POST, HTTP PUT, FTP 上传(3) HTTP基本表单上传,代理,cookies,和用户认证Libcurl库的下载安装就不用多操作了libcurl函数库常用字段解读

2021-09-14 14:49:42 137

转载 http协议相关编程

一、http协议的特性http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http协议的的特点是无状态,无连接

2021-09-13 15:16:51 136

原创 socket、http、tcp他们的关系

区别一、 socket什么是socket?套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。(其实就是bind绑定)为什么需要socket?应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据

2021-09-12 11:48:32 218

原创 TCP&IP的三次握手和四次挥手

TCP 三次握手建立连接所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文。三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。三次握手过程的示意图如下:其中:(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(简单说.

2021-09-11 11:11:48 188

转载 知识点(1):OSI网络模型

一、OSI模型概念:OSI 模型(Open System Interconnection model)是一个由国际标准化组织????提出的概念模型,试图????供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。它将计算机网络体系结构划分为七层,每层都可以????供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。OSI 模型各层间关系和通讯时的数据流向如图所示:二、具体功能:1.应用层应用层(Application Layer)是

2021-09-11 09:27:40 1051

原创 回文数、反转字符串

一、判断一个字符串是否回文数#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ char *huiwen=(char *)malloc(128); while(1) { memset(huiwen,'\0',128); printf("Please Input:\n"

2021-09-07 20:55:25 102

原创 火焰传感器与蜂鸣器组成火灾报警

主控制器为树莓派3b,火焰传感器和蜂鸣器为组成模块,通过树莓派读取火焰传感器来控制蜂鸣器。硬件组成如下:代码:#include<wiringPi.h>#include<stdio.h>#define warn 2#define fire 25void fireInit(){ if(-1==wiringPiSetup()) { return; } pinMode(warn,OUTPUT); pinMode(fire,INPUT); d.

2021-09-05 16:36:55 2459 1

原创 一道经典的c语言字符串题目

一、请问运行 Test 函数会有什么样的结果?void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}答案是:NULL传入函数 GetMemory( char *p )的形参为字符串指针,在函数内部修改形参并不..

2021-09-04 23:21:41 573 3

原创 智能家居(2)——核心框架与实现方法

一、智能家居的核心框图大致如下:二、详细结构:主控芯片:树莓派控制输入点有两个线程:1.语音模块LD3320通过串口的方式将识别的指令传给树莓派。2.我们的移动客户端通过TCP协议将控制信号传给树莓派。外设——灯、火灾报警器、摄像头:1.智能家居的灯直接由树莓派供电,通过对GPIO控制进而控制继电器组合就可以实现灯的控制。2.火灾报警器直接由树莓派供电。3.摄像头实现监控和人脸识别的作用,需要单独开一个线程。WemosD1:在某些场景由于主控制模块资源限制..

2021-09-04 10:40:25 2698

原创 智能家居(1)——设计模式引入(工厂模式)

一、什么是设计模式?前任设计经验的总结,具有稳定性强、拓展性强、容易理解的一些列编程思想和经验。设计模式一共有23种,项目只运用到了工厂模式。二、什么是类和对象?类是一种用户自定义的引用数据类型(模板),对象就是类实例出的一个具象。二、什么是工厂模式?工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。好处:在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建

2021-09-04 05:20:48 331

原创 vector容器

#include<iostream>using namespace std;#include<vector>void test01(){ vector<int> v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); //第一种遍历 vector<int>::iterator itBegin=v.begin().

2021-09-02 22:04:34 101

原创 排序算法(冒泡、选择、插入)

一、冒泡排序:#include<stdio.h>void maopao(int a[],int len){ int i; int j; for(i=0;i<9;i++)//只运行8次 { for (j= 0; j <9-1-i; j++) { /* code */ if(a[j+1]>a[j]) {

2021-09-02 15:01:50 56

原创 C++——二进制文件的写入读取

二进制的文件肉眼我们是读不懂的,如果通过二进制的读写操作就可以读懂。写操作:#include<iostream>#include<fstream>using namespace std;class Person{public: char m_Name[64]; int m_Age;};void test(){ ofstream ofs; ofs.open("Person.txt", ios::out | ios::binary); if (!o

2021-08-26 15:55:49 1441 5

原创 C++——文件操作

一、写文件比如:#include<iostream>#include<fstream>using namespace std;//写文件void test1(){ //创建一个对象 ofstream ofs; ofs.open("text.txt", ios::out); ofs << "张三"<< endl; ofs << "男" << endl; ofs << "18" &l..

2021-08-25 22:15:35 269 2

原创 C++——电脑运作案例

#include<iostream>using namespace std;//抽象不同的类//CPUclass CPU{public: //抽象计算函数 virtual void calculate() = 0;};//内存条class Memory{public: //抽象内存函数 virtual void storage() = 0;};//显卡class Display{public: //抽象显示函数 virtual void d.

2021-08-25 20:06:08 199

原创 C++多态计算器、纯虚函数

#include<iostream>using namespace std;class Calc{public: virtual int Calclute() { return 0; } int m_Num1; int m_Num2;};//运算过程class AddCalc : public Calc{public: int Calclute() { return m_Num1 + m_Num2; }};class JianCalc : pu.

2021-08-24 16:51:35 126

转载 树莓派Linux源码配置

一.为什么要进行树莓派源码的配置呢?因为如果我们要从事驱动代码的编写的话肯定要对编写的代码进行编译,如果要对驱动代码进行编译的话就必须要一个提前编译好的内核,因此编译内核就必须配置。配置的最终目标生成一个.config文件,改文件指导Makefile去把有用的东西组织成内核。配置方式:1.厂家配置Linux内核源码...

2021-08-20 20:05:28 466 1

原创 操作系统的启动过程

x86,intel windows设备启动过程:电源-->BIOS-->windows内核-->c盘、d盘--应用程序启动BIOS:BIOS(Basic Input/Output System)是基本输入输出系统的简称。BIOS 能为电脑提供最低级、最直 接的硬件控制与支持,是联系最底层的硬件系统和软件系统的桥梁。为了在关机后使 BIOS 不会丢失,早 期的 BIOS 存储在 ROM 中,并且其大小不会超过 64KB;而目前的 BIOS 大多有 1MB 到 2MB,...

2021-08-19 21:30:37 98

原创 常用的 gcc -I与-L作用scp

首先将我的编译命令附上:arm-linux-gnueabihf-gcc serial1.c -I /home/mr_qin/lessonPi/WiringPi/wiringPi -L /home/mr_qin/lessonPi/ -lwiringPi我们来具体分析一下:1.-I(include)表示编译时将/home/mr_qin/lessonPi/WiringPi/wiringPi作为第一个寻找头文件的目录,然后再是-->usr/include最后再是-->/usr/loca

2021-08-19 21:05:57 184

原创 Linux——软链接和硬链接

命令:ln -s功能:为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s。ln -slibwiringPi.so.2.50 libwiringPi.so软链接命令 要链接的文件 软连接文件的名字1.类似于window的快捷方式。2.在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。3.在选定的位置上生成一个文件的镜像,不会占用磁盘空间。硬链接:lnlibwiringPi.so.2.50 libwiringPi.so..

2021-08-19 20:13:13 168

原创 QT学习记录QPixmap、QImage、QPicture

QPixmap#include "widget.h"#include "ui_widget.h"#include<QPixmap>#include<QPainter>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); //Pixmap绘图 专门为平台做了现实的优化 QPixmap pix(3.

2021-08-16 15:49:07 456

原创 Qt学习记录

#include "widget.h"#include "ui_widget.h"#include<QPainter>#include<QBrush>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);}void Widget::paintEvent(QPaintEvent *){ //实例化画家对.

2021-08-16 11:21:31 83

原创 STM32——寄存器点亮流水灯

硬件平台:正点原子——mini版一、用ODR寄存器main.c#include"stm32f10x.h"#include "led.h"#include "delay.h"int main(){ LED_Init(); delay_init(); while(1) { GPIOA->ODR|=1<<8; GPIOD->ODR|=1<<2; delay_ms(500); GPIOA->O

2021-08-12 20:30:41 352

原创 STM32——库函数点亮流水灯

LED.h#ifndef __LED_H#define __LED_Hvoid LED_init();#endifled.c#include "led.h"#include "stm32f10x.h"void LED_init(){ GPIO_InitTypeDef GPIO_InitStructA; GPIO_InitTypeDef GPIO_InitStructD;//定义两个初始化GPIO的结构体 RCC_APB2PeriphClockCmd(RCC

2021-08-08 21:56:48 359

原创 C++菱形继承

B和C从A中继承,而D多重继承于B,C。那就意味着D中会有A中的两个拷贝。因为成员函数不体现在类的内存大小上,所以实际上可以看到的情况是D的内存分布中含有2组A的成员变量。#include<iostream>using namespace std;class Animal{public: int m_Age;};class Sheep :public Animal{};class Tuo :public Animal{};class Sheep...

2021-08-08 11:05:50 131

原创 QTreeWidget 树控件、QTableWidget 表格控件

QTreeWidget 树控件#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); //设置水平头 ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<.

2021-08-07 15:36:21 417

空空如也

空空如也

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

TA关注的人

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