自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (7)
  • 收藏
  • 关注

原创 我是穷人,可以不买开发板了吗?---QEMU 模拟arm系统

文章目录序言准备工作QEMU开始Linux内核U-boot 的修改及编译序言一直很佩服古人的那种豁达的情怀,就如《冒险雷探长》一集纪录片用作结束的一句话:“人人都是大忙人,忙着长大,弄丢了纯真;忙着赚钱,忽略了思想;忙着成功,错过了风景,岁月中的营养,匆忙间吃成了果腹的快餐。那些光阴中本该难忘的故事,就这样紧赶慢赶,没能抓住我们的影子。”正如赵秉文《青杏儿》中的词句:“风雨替花愁。风雨罢,花也应休。劝君莫惜花前醉,今年花谢,明年花谢,白了人头。乘性两三瓯。捡溪山好处追游。但教有酒身无事,有花也好,

2020-06-29 15:39:34 649

原创 剑指offer---树刷题专题(c/c++),一篇文章就可以读懂树了吗?

文章目录1、重建二叉树1、重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。先回顾一下,什么是前序遍历,中序遍历和后序遍历:(1)前序遍历:先访问根节点再先序访问左子树再先序右子树。(2)中序遍历:中序遍历左子树再访问根节点再中序遍历右子树(3)后序遍历:先后序遍历左子树再

2020-06-16 15:25:17 203

原创 剑指offer 一一 一篇文章能搞懂剑指offer的笔试题(C/C++)?

文章目录二维数组中的查找替换空格从尾到头打印链表用两个栈实现队列旋转数组的最小数字递归循环(斐波那契数列)递归循环(跳台阶)递归循环(变态跳台阶)二维数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解决代码:class Solution {public: bool Find(int target, vector<vector

2020-05-31 10:28:39 629

原创 C语言读取TXT文档,要求:按行读取,然后按行分别输出到指定的TXT文件中

C语言读取TXT文档,要求:按行读取,然后按行分别输出到指定的TXT文件中一个复习:所遭遇的问题及情况需求:从北京雷灾检测网站上获取到的2002年到2013年的北京地区的雷灾数据,一共629条,为了进行文本聚类,需要把一个txt文件中的629条数据分散到成629个txt文件,手动分类的话至少要耗费5个小时,为了节省时间,选择C语言对629条数据划分为629个txt文件,为以后的文本聚类作准...

2020-03-01 16:07:13 6213 2

原创 Linux内核移植

Linux内核移植Linux内核启动过程在移植Linux之前,先了解它的启动过程。Linux的启动过程分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。如下图所示是ARM架构处理器上Linux内核vmlinux的启动过程。之所以强调是vmlinux,是因为其他格式的内核在进行与vmlinux相同的例如流程之前会有一些独特的操作。比如对应压缩格式的内核zImage,它首先自解压得到vm...

2019-12-13 15:06:41 409

原创 linux驱动之设备树

文章目录linux驱动之设备树设备树的由来---什么是设备树Linux设备树的由来---为什么会有设备树快速编译设备树---DTC(device tree compiler)快速了解设备树---编译设备树文件dtb使用的过程设备树语法及内部构成设备树语法设备树实战linux驱动之设备树设备树的由来—什么是设备树Open Firmware Device Tree 开发固件设备树(1)Dev...

2019-09-22 18:59:42 1010 2

原创 Linux内核转储---kdump原理梳理

Kdump的实现可以分为两部分:内核和用户工具。内核提供机制,用户工具在这些机制上实现各种转储策略,内核机制对用户工具的接口是一个系统调用:kexec_load(),其被用来加载捕获内核和传递一些相关信息。Kdump是一种先进的基于kexec的内核转储机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。当内核产生错误(系统崩溃、死锁或者死机)时,kdump会将内存导出为vmcore保存到磁盘。Kdump是kexec机制工作的,kexec是一个快速启动机制,允许通过已经运行

2023-02-14 14:35:45 989

原创 Linux内核转储---空指针触发kdump

Linux内核转储---空指针触发kdump

2023-02-14 14:21:07 965

原创 Linux内核转储---Kdump,Crash使用介绍

Linux内核转储---Kdump,Crash使用介绍

2023-02-14 10:19:25 3226 2

原创 usbmon+tcpdump+wireshark USB抓包

usbmon+tcpdump+wireshark USB抓包

2023-02-14 09:54:48 1341

原创 usbmon---Linux下USB数据传输监控

Linux下USB抓包工具

2023-02-14 09:41:12 2671 2

原创 USB枚举过程

USB枚举过程

2022-05-16 21:56:48 3681

原创 LFS?从零开始构建LFS系统---2

文章目录准备虚拟内核文件系统进入Chroot环境创建目录与一些必要的文件和符号连接安装必要的软件包(前边临时系统构建正确的话,一般在编译期间不会出现错误)编译内核让LFS系统可引导LFS系统的完成与启动结语上文说到:构建 LFS 的临时系统已经完成。本篇将进行正式 LFS 系统的构建工作。准备虚拟内核文件系统基本步骤:创建将用来挂载文件系统的目录创建初始设备节点挂载和激活 /dev挂载虚拟文件系统完成上述步骤的脚本文件内容为:#!/bin/bashLFS=/home/lfs/LFS_

2021-05-13 19:47:33 799

原创 LFS?从零开始构建LFS系统---1

文章目录LFS介绍准备工作构建临时系统清理无用内容改变属主LFS介绍LFS—Linux from Scratch,是一种从网上直接下载源码,从头编译LINUX的安装方式。本篇内容宿主机环境选择为Centos 7,LFS系统选择的 Linux 内核版本为:Linux5.1.6. Linux内核版本下载方式如下:https://mirrors.edge.kernel.org/pub/linux/kernel/同时构建的 LFS 系统,选择官方版本为:8.4. 其所需软件包下载方式为:http://

2021-05-13 11:07:36 2412

原创 LFS(Linux from Scratch)构建完成

这篇文章算是一个记录,不讲知识,只讲结果。LFS(Linux from Scratch)经过一个周的查资料、看文档,总算是构建完成了在进行软件包配置、编译、安装过程中,遇到挺多问题,一度都有放弃的想法了。后来重新配置虚拟硬盘,重新格式化磁盘,一个个的进行脚本配置,困扰很久的问题总算解决了。只是一个简单的记录,耐心、细心,遇到错误找学会自己解决。...

2021-05-12 21:04:15 872

原创 代码中该使用条件数据传送还是条件控制转移?

文章目录序言条件控制转移条件数据传送为什么使用条件数据传送的代码比条件控制转移的代码性能要好呢?序言最近在看《深入理解计算机系统》一书,明白的程序在计算机中运行的过程,当然也会有一些问题需要记录下来。之前编写代码时没有考虑过的性能问题在 csapp 中也有所了解。条件数据传送和条件控制转移代码的选择就是其中之一。条件控制转移所谓条件控制转移—是实现条件操作的传统方法,当条件满足时,程序沿着一条执行路径执行,而当条件不满足时,就走另一条路径,这种机制简单而通用,但在现代处理器上,它可能会非常低效。

2021-04-28 11:15:35 794

原创 解决win10系统一开机就内存占用过高的问题

解决win10系统一开机就内存占用过高的问题个别win10系统会出现在一开机就出现内存过高占用过高的问题,造成这种情况的最大可能是网络数据监控在持续运行,因此,可采用如下方式进行解决:以管理员权限打开命令行(一定得是管理员权限才可以),并输入命令: sc config ndu start=disabled然后重启电脑,即可解决问题。如图...

2021-03-29 09:41:00 3114 2

原创 三个多月的秋招战线,嵌入式秋招面经总结

文章目录提前批正式批正式批的线下(武汉---武汉理工校招)从秋招7月份的提前批,到8月份的为正式秋招做的准备,再转入9,10月份的正式批的无硝烟战场,其中的酸甜苦辣都尝尽了,真真正正体会到没有一件事是容易的。遂位于武汉的小出租房中,记录一下三个多月的秋招历程。提前批提前批直投了两个:一个乐鑫、一个诺瓦科技,皆卒乐鑫乐鑫没有好记录的,7月16做的笔试(笔试挂),三道算法题(内心对算法是抗拒的),也是在此看到了算法的重要性,也是后续复习算法的动力来源。诺瓦科技(一面过,二面凉凉)到现在为止,我

2020-10-22 22:13:11 3073 5

原创 科大讯飞2021 笔试题第一道:固定大小和数量的纸币,至少需要几张纸币来付钱

文章目录题目题目题目大致描述:假设1元、5元、10元、50元、100元 纸币分别有a,b,c,d,e张。现在要用这些钱来支付m元,至少要用多少张纸币?无解时返回 -1;进阶题目:每种纸币各用了多少张?(用tuple组队保存就行)解题思路:贪心算法(贪心算法的思想,每一次选择最大面值的钱币)解题代码#include <iostream>#include <vector>#include <algorithm>#include <

2020-08-02 10:27:19 1676

原创 牛客网刷题遇到的部分笔试题

文章目录数组元素交换数组元素交换题目:牛牛有一个没有重复元素的数组a,他想要将数组内第n大的数字和第m大的数(从大到小排序)交换位置你能帮帮他吗。给定一个数组a,求交换第n大和第m大元素后的数组。示例:输入:[1,2],1,2输出:[2,1]解决代码class Solution {public: /** * * @param a int整型vector 原始数组a * @param n int整型 第n大 * @param m

2020-07-31 10:53:48 202

原创 C/C++笔试及面试中一些需要注意的细节问题

文章目录strlen() 与 sizeof() 的区别计算二进制中0的个数和1的个数大小端问题strlen() 与 sizeof() 的区别在进行字符(数组)串的长度求取问题时,strlen()和sizeof()都可以作为选择,当时两者之间的区别还是值得考究的。(1)strlen()是函数,sizeof()是运算符;(2)对于定义字符数组大小的字符数组,sizeof 的值在声明时已经确定了,而 strlen()则根据数组中实际的字符计算大小;如:char test2[100] = "hello

2020-07-15 21:46:55 239

原创 memcpy源码及笔试实现

文章目录memcpy函数memcpy源码重写memcpy函数memcpy函数memcpy函数指的是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。memcpy源码void *memcpy(void *dst, const void *src, size_t len){ if

2020-07-15 19:23:41 4519 3

原创 一些常用的排序算法及其复杂度(复习代码记录)

六种排序算法(函数形式及测试)(1)冒泡排序(2)选择排序(3)插入排序(4)归并排序(5)快速排序(非随机/随机)(6)希尔排序#include <stdio.h>#include <stdlib.h>#include <stdlib.h>#include <assert.h>#include <string.h>//冒泡排序void BubbleSort(int arr[],int length){ for

2020-07-12 16:35:26 224

原创 三种进程--孤儿进程、僵尸进程、守护进程

文章目录三种进程孤儿进程僵尸进程守护进程需要注意地方三种进程孤儿进程孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将会成为孤儿进程。孤儿进程被 init 进程(进程号为1)所收养,并由 init 进程对它们完成状态收集工作。僵尸进程僵尸进程:一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调用 wait 或 waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。守护进程守护进程(daemon)

2020-05-14 10:13:36 303

原创 Linux设备驱动并发控制之Linux信号量与互斥体

文章目录信号量与互斥体信号量定义信号量初始化信号量获得信号量释放信号量信号量同步互斥体自旋锁与互斥体的使用选择信号量与互斥体在linux设备驱动代码中,为了解决竞态问题,途径是:保证对共享资源的互斥访问;所谓互斥访问是指一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问。访问共享资源的代码区域被称为临界区,临界区需要被以某种互斥机制加以保护。中断屏蔽、原子操作、自旋锁、信号量、互斥...

2020-04-19 15:40:31 248

原创 Git项目管理

文章目录Git 工作区域向仓库中添加文件流程Git基础设置初始化一个新的Git仓库向仓库中添加文件删除文件Git 管理远程仓库Git克隆操作将本地仓库同步到git远程仓库中Git 工作区域Git Repository(Git仓库)最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见暂存区暂存已经修改的文件最后统一提交到git仓库中工作区(Working Directory)添...

2020-03-17 18:53:38 148

原创 Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)

Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)一、下载arm-linux-gcc-4.3.2.tar.bz2,然后解压到/usr/local/目录下,使用命令: sudo tar -jxvf arm-linux-gcc-4.3.2.tar.bz2 -C / 默认安装到/usr/local/arm 目录下二、然后赋予/usr/local/arm/ 文件...

2020-02-16 14:43:22 3105

原创 Makefile的基本语法与变量

文章目录基本规则make 的语法既多又复杂,在此列出一些基本的规则基本规则Makefile 的基本规则如下:目标(target):目标文件1 目标文件2<tab> gcc -o 预建立的执行文件 目标文件1 目标文件2注意:命令行必须以Tab j键作为开头在Makefile 中 # 代表注释需要在命令行的(例如 gcc 这个编译器命令)的第一个字符目标 (ta...

2019-12-24 10:09:33 231

原创 linux I2C子系统(及相关程序设计MPU6050)

文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux I2C子系统框架在之前的一篇文章中记录了 I2C协议相关内容,这里记录一下I2C在linux系统上I2C子系统框架,经过总结,I2C子系统框架可以总结为如下一张图五层(其实是三层,不算应用层和硬件层)应用层i2c driver层...

2019-09-14 20:46:55 618

原创 linux内核源代码输入子系统分析(linux源码分析)

文章目录linux内核代码分析代码跟读方式分层分析分析:evdev.c中evdev_connect() ---属于input handler层应用程序中调用输入子系统的代码,数据是如何传递给用户层的linux内核代码分析代码跟读方式带着问题去读做好笔记和画图驱动联系应用,应用是调用的,驱动是实现的分层分析Input handler层:/driver/input/evdev.c...

2019-09-09 21:46:16 370

原创 linux输入子系统多按键

文章目录linux输入子系统:驱动多个按键linux输入子系统:驱动多个按键驱动多个按键一个按键有多个与其相关的元素:中断号码按键状态按键的值input_dev的详细描述如下图在设备树文件中增加以下信息:按键定义配置信息如下key_int_node{ compatible = "test_key"; #address-cells = <1>; /...

2019-09-09 13:49:52 553

原创 嵌入式之I2C总线及协议

文章目录I2C 介绍I2C 协议介绍I2C 介绍I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。I2C通讯只需要2条双向总线——一条数据线SDA(serial data:串行数据线),一条时钟线SCL(serial clock:串行时钟线)。SDA线用于传输数据,SCL线用于同步数据收发。SDA线传输数据是大端传输...

2019-08-23 10:59:14 345

原创 linux高级字符驱动之输入子系统

文章目录输入子系统的作用和框架框架输入子系统的编程方式输入子系统的作用和框架什么是输入设备按键/keyboardmousetouchscreen(触摸屏):gt811,ft56xxjoystick 游戏杆有多个输入设备需要驱动的时候,假如不考虑输入子系统gt811设备号,创建文件,硬件初始化,实现fop,阻塞,硬件初始化(I2C等)ft56xx设备号,创建文件,...

2019-08-18 14:13:50 196

原创 Linux字符设备驱动编(步骤,框架(面向对象),分层)

文章目录Linux字符设备驱动编程步骤、Linux程序框架的概念面向对象代码实现(伪代码)Linux字符设备驱动编程步骤、实现入口函数 xxx_init() 和卸载函数 xxx_exit()申请设备号 register_chrdev_region (与内核相关)注册字符设备驱动 cdev_alloc,cdev_init,cdev_add (与内核相关)利用 udev/mdev 机制创建...

2019-08-15 17:09:15 265

原创 python实现Mapreduce的wordcount

文章目录介绍Hadoop StreamStreaming 的作用Streaming 的局限Streaming 命令的相关参数Python实现MapReduce的WordCount介绍Hadoop作为Apache的基金项目,解决的大数据处理时间长的问题,其中MapReduce并行处理框架作为Hadoop中重要的成员。由于Hadoop的架构实现是由JAVA实现的,所以在进行大数据处理时,JAVA...

2019-07-31 15:50:11 1423

原创 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文

文章目录前言用户空间与内核空间内核态与用户态进程上下文和中断上下文上下文原子进程上下文中断上下文进程上下文VS中断上下文原子上下文前言之前在学习嵌入式linux系统的时候,一直对于中断上下文,进程上下文很迷,听着都很熟悉,但是强行让自己去解释着写概念总是很难去说清,所以奔着弄清楚这几个概念的目的,在网上看了好多的资料。对于这些概念的学习是一个不断累积的过程。用户空间与内核空间我们知...

2019-07-21 20:39:59 464

原创 嵌入式之ARM汇编

文章目录汇编语言长什么的样子呢?ARM汇编指令条件和状态Status码ARM汇编寻址方式数据操作(ALU操作)逻辑操作(与,或,非,异或)比较操作汇编语言长什么的样子呢?举例:向寄存器中一个值添加100x86:add eax,#10068K:ADD #100,D0ARM:add r0,r0,#100举例:从一个寄存器指针加载到寄存器x86:mov eax,DWORD PTR...

2019-07-16 21:34:49 909

原创 嵌入式之ARM(架构,寄存器,处理器模式,所用工具)

文章目录ARM架构和处理器一些常用工具ARM软件工具链ARM寄存器,处理器模式和指令集ARM架构和处理器ARM系列处理器:各个系列区别与功能演变相关术语介绍(1)流水线:CPU运转机制:取指令(F) —> 译指令 (D)—> 执行(E)三级流水,还有多级流水(2)DSP:数据信号处理(3)Jazelle :ARM里针对JAVA的编程模型(4)ThumbE...

2019-07-16 19:46:52 483

原创 数据结构---常用排序与快速排序(c语言)

文章目录常用排序冒泡排序插入排序选择排序归并排序快速排序常用排序冒泡排序冒泡排序算法思想从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。第一轮结束后,继续第二轮。仍然从数组头部开始比较,让较大的元素逐渐往后移动,直到数组的倒数第二个元素为止。经过第二轮的比较,就...

2019-06-23 12:30:42 189

原创 数据结构---树

文章目录树树定义树分类树的存储操作树树是一种非线性结构树定义专业定义:有且只有一个称为根的节点有若干个互不相交的子树,这些子树本身也是一棵树通俗的定义:树是由节点和边组成每个节点只有一个父节点但可以有多个子节点但有一个节点例外,该节点没有父节点,此节点称为根节点专业术语节点 父节点 子节点子孙 堂兄弟深度:树中节点的最大层次(从根节点到最底层...

2019-06-23 10:45:41 241

通过C语言实现各种排序算法,并包含测试实例

冒泡排序/选择排序/插入排序/分组归并/快速排序/希尔排序 等排序算法

2021-04-08

使用python实现mapreduce(wordcount).doc

Python实现MapReduce的WordCount(hadoop平台)在进行大数据处理时,JAVA程序用的较多,但是,想要把深度学习算法用到MapReduce中,Python是深度学习和数据挖掘处理数据较为容易的语言,所以基于以上考虑,本文介绍了使用python实现MapReduce中的WordCount实验

2019-07-31

嵌入式linux开发

嵌入式linux开发是一本关于ARM处理器在linux下如何使用的教程

2019-03-22

linux下的tcp服务器

linux下的TCP协议及使用,关于套接字的创建,及高并发服务器的创建

2019-03-22

基于51单片机的人体感应报警器(代码)

基于51单片机的人体报警器的设计(c语言代码),AT89S51单片机的

2018-10-13

A7GSM模块,Stm32单片机控制LED

利用STM32单片机和GSM模块远程控制LED灯的亮灭指示代码(c语言)

2018-10-13

空空如也

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

TA关注的人

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