自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (28)
  • 收藏
  • 关注

原创 创建overlayfs说明

可以使用mkfs.jffs2或者flash_erase来对nor flash进行格式化。:只需要格式化一次norflash,之后都不需要。

2023-11-30 13:57:45 443

原创 AArch32 & AArch64 Registers map详细解析与索引

AArch32 AArch64 系统寄存器索引。

2023-05-04 21:19:04 549 1

原创 Linux System.map解析

在Linux中,System.map文件是内核符号名称及其对应内存地址的映射表。它在内核构建过程中创建,并位于内核源代码树的根目录中(通常是/linux/System.map)。System.map文件由内核的崩溃转储分析工具和一些性能分析工具使用,以将内核地址映射到它们对应的符号名称。System.map文件是一个纯文本文件,对于每个符号,它包含三列信息:符号的虚拟地址、符号类型(函数、数据等)和符号名称。虚拟地址是符号所在内核内存中的位置。符号类型指示符号是函数、变量还是某种其他类型的数据。

2023-04-21 14:29:13 902

原创 ubuntu方便使用杂项

【代码】grep&find扩展。

2023-04-06 11:49:18 398

原创 第六章 内存管理之实战案例分析

【代码】第六章 内存管理之实战案例分析。

2022-08-22 13:39:26 660

原创 Linux_oops缺页异常后输出的宕机日志解读

Linux_oops缺页异常后输出的宕机日志解读。

2022-08-15 15:36:47 2029

原创 解读OOM killer机制输出的日志

在业务繁忙的服务器,小内存方案,内存泄露的场景中,我们常常发现系统在非常大的内存压力情况下触发了OOM killer机制。OOM killer机制是内存管理中在资源极端短缺情况下一种迫不得已的进程终止机制。OOM killer机制会根据算法选择并终止占用内存资源比较多的进程,以释放内存......

2022-08-12 19:32:09 1797

原创 Linux 应用内存信息分析 VSS/RSS/PSS/USS

在分析Linux内存使用时,不仅需要分析kernel内存使用情况,还需要分析Linux应用的内存使用情况,这就引出了VSS/RSS/PSS/USS

2022-08-12 14:25:19 1228

原创 gpf_maskf分配掩码描述

gfp_mask定义在include/linux/gfp.h文件中。修饰符在Linux4.4内核中被重新归类,大致可以分成如下几类。下面详细介绍各种修饰符的标志。

2022-08-10 10:34:52 319

原创 第四章-并发与同步思考题

1.在ARM处理器中,如何实现独占访问内存?1.linux提供了atomic_t的原子变量结构在实现独占访问内存,不同架构有不同的实现。2.ARM使用ldrex和strex指令来保证中间执行的指令的原子性,指令后缀ex表示exclusive(独家的),不考虑原子性ldrex与ldr是一致的。3.ARM处理器核心有Local monitor和Global monitor来实现ldrex和strex指令的独占访问。2.atomic_cmpxchg()和atomic_xchg()分别表示什么含义?

2022-08-08 17:03:09 139

原创 第一章-处理器体系结构

1.请简述精简指令集 RISC 和复杂指令集 CISC的区别。1.简单指令集一般在一个cycle就完成执行。2.CISC指令集更容易做到向前兼容,凭借此一统PC和服务器市场。3.RISC指令集,只保留简单的指令集,可以省下很多晶体管,所以更容易实现低功耗和嵌入式。2. 请简述数值0x12345678 在大小端字节序处理器的存储器中的存储方式1.大端模式下地址的增长顺序与值的增长顺序相同。0x430:1234 5678 0000 00000x440:0000 0000 0000 0000

2022-08-08 17:01:32 118

原创 第三章 内存管理之预备知识

UMA架构:内存有统一的结构并且可以统一寻址。目前大部分嵌入式系统、手机系统以及台式机操作系统等采用UMA架构。如下图,该系统使用UMA架构,有4个CPU,它们都有L1高速缓存,其中CPU0和CPU1组成一个簇(Cluster0),它们共享一个L2高速缓存。另外,CPU2和CPU3组成另外一个簇(Cluster1),它们共享另外一个L2高速缓存。4个CPU都共享同一个L3的高速缓存。最重要的一点,它们可以通过系统总线来访问物理内存DDR。.........

2022-08-08 17:00:57 413

原创 第二章 ARM64在Linux内核中的实现

虚拟地址是运行时段所在的地址,可以理解为运行时地址。加载地址是加载时section所在的地址,可以理解为加载地址。

2022-07-27 14:04:51 1721

原创 Linux内核汇编代码分析

读懂Linux内核汇编代码对理解ARMv8架构和指令集有很大裨益。下面将分析从内核汇编入口到C语言入口start_kernel()函数之间的一大段汇编代码。

2022-07-27 11:08:27 3221

原创 案例分析(三)linux-5.4 mmc无法挂载文件系统

项目背景问题描述复现方法实验调试实验一:从log中查看mmc过程解决方法方法一方法二方法三修复后log项目背景项目:”h618-linux-5.4-bsp板型:H618-p2介质:mmc问题描述在基础kernel跑起来后,init尝试挂载文件系统失败报如下错误:[/init]: Wait /dev/mmcblk0p4 ready ...[ 3.484810][ 3.484810] insmod_device_driver[ 3.484810][ 3.4.

2021-10-26 16:05:37 1364

原创 案例分析(二)内存越界检测工具kasan

KASAN简介  Kasan 是 Kernel Address Sanitizer 的缩写,它是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。在Linux-4.0中Kasan 集成在 Linux 内核中,随 Linux 内核代码一起发布,并由内核社区维护和发展。但知道Linux-4.4版本才开始之初ARM64。此次采用的是Linux-4.9版本做实验。KASAN原理  Kasan 的原理是利用“额外”的内存来标记那些可以被使用的内存的状态。这些做标记的区域被称为影子区

2021-10-16 16:49:01 2744

原创 案例分析(一):decodecode解析oops异常失败

环境架构:arm64工具链:gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnulinux-5.4log文件在win7环境生成decodecode文件在Ubuntu环境背景在分析oops异常时发现一个叫decodecode的脚本,可以在没有源代码或符号表的情况下,将oops异常的log作为输入就可以解析出错误位置的汇编代码。但在使用decodecode脚本的时候出现了如下错误:$ ARCH=arm64 $ CROSS_COMPILE=g

2021-10-12 17:18:32 1942

原创 Linux内核异常调试工具与方法

常见调试通道(工具)串口调试通道通过串口shell查看/修改寄存器:查看一个寄存器空间内容:a.1 启动linux内核,进入shell界面a.2 执行“cd /sys/class/sunxi_dump”a.3 执行“echo xxxx > dump”,xxx为想要查看的地址,虚拟/物理地址都可以a.4 执行“cat dump”,即可看到寄存器的内容# cd /sys/class/sunxi_dump/# echo 0x01f01400 >dump# cat

2021-10-12 14:24:22 2349

原创 提交代码到Linux开源社区(MAINLINE)

1.下载最新Linux源码$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux.git2.修改.gitconfig$ vi ~/.gitconfig[user] email = [email protected] name = yourname[core] editor = vim autocrlf = input compression = -1[gui] encoding = utf-8[

2021-09-27 18:07:23 507

原创 ftrace介绍

Kernel trace 工具的发展历史  Linux 跟踪工具在内核的发展就像是肥皂剧一样,剧情婉转,主题反复,并且相互竞争。本章试图总结当前Linux 众多跟踪工具的现状和历史原因,并最终引出 ftrace 工具。  编者对于以下内容并非亲历者(主要来自 LWN 和 maillist),如有歪曲请拍砖。以下部分虽属八卦,但是,学习一些模块的设计方案和历史进程是我们学习方法论的一部分,从这些纠结的方案和博弈中可以看到很多权衡和利弊,帮助更好的获得其中的思想。Why Trace the kernel

2021-08-17 11:17:45 1542

原创 3.4 进程切换

目录1.进程切换2.硬件上下文3.任务状态段3.1 thread字段1.进程切换为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换(process switch)、任务切换(task switch)或上下文切换(context switch)。下面几节描述在 Linux 中进行进程切换的主要内容。2.硬件上下文一、尽管每个进程可以拥有属于自己的地址空间,但所有进程必须共享CPU寄存器。因此,在恢复一个进程的执行之前,内核必须确保

2021-04-19 02:02:43 1647 2

原创 3.3 撤销进程

1. 撤销进程很多进程终止了它们本该执行的代码,从这种意义上说,这些进程“死”了。当这种情况发生时,必须通知内核以便内核释放进程所拥有的资源,包括内存、打开文件及其他资源,如信号量。进程终止的一般方式是调用exit()库函数,该函数释放C函数库所分配的资源,执行编程者所注册的每个函数,并结束从系统回收进程的那个系统调用。exit()函数可能由编程者显式地插入。另外,C编译程序总是把exit()函数插入到main()函数的最后一条语句之后。内核可以有选择地强迫整个线程组死掉。这发生在以下两种典型情况下

2021-04-15 23:14:04 1471

原创 3.2 进程的创建

1.概述Linux系统中采用了与其他操作系统不同的方式创建进程。Linux将进程的创建的两个步骤分解为fork()和exec()。fork()通过拷贝当前进程创建一个子进程。其与父进程的区别仅仅在于PID(每个进程唯一)、PPID(父进程进程号)和某些资源和统计量(如:挂起的信号,子进程不继承)。exec()函数负责读取可执行文件并将其载入地址空间开始运行。2.写时拷贝(copy-on-write)2.1 背景传统的fork()系统调用直接把所有的资源复制给新创建的进程。这种实现过于简单且

2021-04-14 02:38:58 1367

原创 3.1 进程概述

1.从程序到进程从上图可以看到一个程序通过编译器编译成汇编程序,经过汇编器编程目标代码,通过链接器形成可执行文件,最后交给操作系统来执行。从上图可知,从OS看来当程序执行时,程序也摇身一变成为了进程,在OS看来每个进程时没有多大的差异性的。都被封装在ELF的可执行文件格式中。可以通过top命令感知系统中各个进程以及动态变化,如下图。2.进程的家族关系进程是一个动态的实体,它是具有生命周期的。OS中进程的生生死死随时发生,所以操作系统对进程的描述就模仿人类的活动。一个进程不会平白

2021-04-07 03:03:51 443

原创 2.4 动手实践,代码级-把虚拟内存地址转换为物理内存地址

paging_lowmem.c#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/mm.h>#include <linux/mm_types.h>#include <linux/sched.h>#include <linux/export.h>static unsigned long

2021-04-02 01:28:05 946 1

原创 2.3 保护模式下的分页机制

1. 分页机制的引入分页机制是分段机制之后进行的,目的是为了将线性地址转换成物理地址。x86架构规定,分页机制是可选的,但众多操作系统采用的都是分页机制。2. 分页机制中的页所谓分页,就是将虚拟地址空间或线性地址空间划分成若干大小相等的片,称为页(Page)对物理地址空间分成与页大小相对的存储块,称为块或页面(Page Frame)在32为系统中页默认为4KB的大小。3. 分页原理分页可以是每个进程拥有自己独立的虚拟地址空间。为了达到这个效果CPU就需要一次地址的变化,也就是

2021-03-31 03:01:14 484 1

原创 2.2 保护模式下的段机制

1.一切从hello world说起#include <stdio.h>int main(void){ printf("hello world!\n"); return 0;}我们通过编译,汇编,链接,装载并执行gcc -S hello.c -o hello.s //编译gcc -c hello.s -o hello.o //汇编gcc -c hello.o -o a.out //链接./a.out //装载并执行图解如下2. 问题由上述编译,汇编

2021-03-30 03:05:50 329

原创 2.1 内存管理之内存寻址

1. 内存寻址概述1.1 图灵机内存寻址的历史某种程度上来说就是现代计算机的历史。从最早的图灵机说起。如下图:输入,输出,状态转移函数是图灵机的三要素,图灵机通过纸带完成内存寻址。图灵机是现代计算机的鼻祖。1.2 冯诺依曼体系结构冯诺依曼体系核心思想:数据连续存储和选择读取思想。计算机背后的核心问题之一,就是如何有效的进行内存寻找,因为所以数据运算的前提都是需要从内存中取得数据。冯诺依曼体系给出了一种解决方案。1.3 CPU体系结构关系图1.4 x86架构不同内存寻址的时期

2021-03-30 00:34:43 1184

原创 1.3 Linux内核中的双链表结构

1. 双链表1.1 双链表的演化在C语言中,一个基本的双向链表定义如下:struct my_list { void * mydata; struct my_list *next; struct my_list *prev;};图解如下prev称为前驱指针,next称为后继指针。这种结构可以从两个方向遍历链表从而提高效率。为什么要对双链表作为重点介绍? d...

2021-03-28 17:57:34 118

原创 1.2 Linux内核结构以及内核模块的编程

1. Linux的单内核与微内核1.1 两者整体框图比较1.2 单内核操作系统的各个子系统,比如说文件系统,内存管理,进程管理,网络系统,进程间通信,互相之间可以直接调用。特点,由于各个子系统可以相互访问,所以性能比较高。但是可维护性比较差。典型的Linux就是单内核1.3 微内核只有一些核心的代码放到了微内核里,比如核心进程间通信,中断,调度程序。而文件系统,内存管理。可能以服务器的形式放在外部。特点,由于各个模块访问是通过通信的方式访问,所以效率比较低,但是每个服务器相对独立,

2021-03-28 15:29:10 138 1

原创 1.1-linux操作系统概述

1. linux系统整体结构2. linux设计理念机制与策略分离3. 系统调用机制系统调用在应用程序和内核中起一个接口的作用把很多操作都隔离起来了。系统调用机制起 一个隔离变化的作用。以应用程序访问文件为例。应用程序不需要关注,访问的是哪种文件系统,hardware不需要关注访问的哪种存储介质。这里system call就起了一个隔离变化的作用。3.参考文献Linux内核设计与实现深入理解Linux内核...

2021-03-28 14:14:58 125

原创 linux字符设备驱动创建基本框架

1.#mermaid-svg-sIc5Woe5yvqQctVc .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-sIc5Woe5yvqQctVc .label text{fill:#333}#mermaid-svg-sIc5Woe5yvqQctVc .node rect,#mermaid-svg-sIc5Woe

2021-01-24 19:04:55 84

原创 基于阿尔法开发板构建卡启动固件

1.前言看了正点原子的视频,突发奇想,我能不能只用一张SD卡就自己构建完整的linux系统,包括u-boot,linux内核,rootfs。说干就干,也顺便当记个笔记。没使用过正点原子视频的同学可能看不懂。2.u-boot2.1 u-boot修改u-boot使用正点原子提供的版本,不过为了满足直接启动的需要,需要给u-boot的默认env进行修改。diff --git a/include/configs/mx6ullevk.h b/include/configs/mx6ullevk.h

2020-11-29 04:07:22 1601

原创 使用映射网络驱动器与samba将虚拟机中的Ubuntu(Linux)系统的目录映射到Windows中

1. 文章部分参考了https://www.cnblogs.com/abc36725612/p/8183490.html2. 设置linux系统为静态ipWindows版本——>win7,64位Ubuntu版本——>Ubuntu16.042.1 必须保证linux系统是能上网的我们可以通过ping www.hao123.com来确认。2.2 设置Ubuntu为静态IP2.2.1 点击虚拟机——>设置2.2.2 点击网络适配器——>桥接模式2.2.3

2020-10-30 00:21:49 1013 1

原创 Vscode 使用Remote-SSH 连接到虚拟机上的linux系统

1.在VSCode搜索下载Remote-SSH

2020-10-13 02:06:50 2679

原创 批量去掉文件中的^M

1 "^M"在Linux下的输入方法 ctrl v + ctrl m方案一:find -type f | xargs sed -i 's/^M//g'或者find -name *.[ch] | xargs sed -i 's/^M//g'方案二:xxx.sh: ^M: not found^M是Windows上的回车符\r在UNIX上的显示形式。这种情况多半是在Windows上编辑了shell脚本,然后拿到UNIX/Linux上执行。只要将文件中所有的\r删除即可。tr -d "\r"

2020-05-31 00:51:07 457

原创 19_构造一个简单的linux内核

1. 下载内核源码linux-3.18.6cd workspacewget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xztar -xf linux-3.18.6.tar.xzcd linux-3.18.6sudo make distcleanmake i386_defconfigsudo make -j22. 编译时遇到的问题2.1 fatal error: linux/compiler-gcc6.h:

2020-05-27 23:51:50 158

原创 16_Linux内核源码

1 linux内核源码代码简介1.1 前面的章节,已经对计算机系统和操作系统有了一个初步的了解,总结起来就是计算机有“3大法宝”存储程序计算机函数调用堆栈中断1.2 操作系统有“两把宝剑”中断上下文进程上下文2 内核目录介绍2.1 arch目录arch目录是与体系结构相关的子目录列表,里面存放了许多CPU体系结构的相关代码,比如arm,x86等。arch目录中的代码在linux内核代码中占比相当庞大,主要原因是arch目录中的代码可以使linux内核支持不同的CPU和体系结构。

2020-05-26 23:46:38 208

原创 15_02_一个简单的操作系统内核源代码

1 重要结构体介绍(定义进程块)struct Thread { unsigned long ip; //用于存放eip unsigned long sp; //用于存放esp};----------------------//定义进程管理相关的数据结构typedef struct PCB { int pid; //进程ID volatile long state; //进程状态 char stack[KERNEL_STACK_SIZE]; //内核堆栈 struct Th

2020-05-26 00:22:37 1071

原创 linux-3.9-mykernel环境搭建

linux-3.9环境搭建参考这里搭建。增加报错时的解决方案。1 linux环境搭建步骤1.1 安装qemusudo apt-get install qemusudo ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu1.2 下载linux源码wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.4.tar.xzlinux-3.9.4不一定能下载出来这里是另一个下载链接linux-

2020-05-11 23:41:26 399

AArch32 & AArch64 Registers map详细解析与索引

详细介绍以下寄存器并带索引,方便检索: AArch32 Registers AArch64 Registers AArch32 Operations AArch64 Operations Index by Encoding External Registers External Registers by Offset Registers by Functional Group

2023-05-04

vim_plug_3.0

vim82, plug, taglist, nerdcommente, airliner,gutentags, LeaderF, gtags, AutoComplPop,omnicppcomplete,ripgrep,fzf,auto-save,auto-pairs插件安装包,安装步骤链接:https://blog.csdn.net/weixin_39247141/article/details/105592483

2020-12-19

Q-dir多窗口文件整理工具

Q-dir多窗口文件整理工具,可以最多有四个窗口,可以很方便的在窗口之间进行拖动。特别是在网络映射驱动器挂载的目录,有无与伦比的优势。可以去https://blog.csdn.net/weixin_39247141/article/details/109371054 的最后面看Q-dir的应用效果

2020-10-30

OpenSSH-server

OpenSSH用于win7-64位系统,使用ssh协议远程连接服务器。安装后就可以用cmd命令行远程连接远程服务器,并且提供安装链接:https://blog.csdn.net/weixin_39247141/article/details/108807058

2020-10-13

vim_plug_2.0

vim82, plug, taglist, nerdcommente, airliner,gutentags, LeaderF, gtags, AutoComplPop,omnicppcomplete,ripgrep,fzf插件安装包,安装步骤链接:https://blog.csdn.net/weixin_39247141/article/details/105592483

2020-09-22

linux-3.9.4.tar_4942.xz

这个是linux-3.9.4源码包,这里是安装链接https://blog.csdn.net/weixin_39247141/article/details/106065070

2020-05-11

vim_plugin.zip

vim82, plug, taglist, nerdcommente, airliner,gutentags, LeaderF, gtags, AutoComplPop插件安装包,安装步骤链接:https://blog.csdn.net/weixin_39247141/article/details/105592483

2020-05-01

linux环境下,vim82.zip

linux环境下vim82版的离线安装包,安装说明:https://blog.csdn.net/weixin_39247141/article/details/105592483

2020-04-18

Vundle.vim-master.zip

vim插件管理插件,安装链接https://blog.csdn.net/weixin_39247141/article/details/105592483

2020-04-18

文本<——>Unicode

该软件支持将一长串文本(中英文)转换成Unicode码,也可以将一长串Unicode码转换成文本

2018-08-17

模拟电子技术基础(第四版)习题解答_童诗白

第一章:常用半导体 第二章:基本放大电路 第三章:多级放大电路 第四章:集成运算放大电路 第五章:放大电路的频率响应 第六章:放大电路中的反馈 第七章:信号的运算和处理 第八章:波形的发生和信号的转换 第九章:功率放大电路 第十章:直流电源

2018-08-17

(带书签)Linux C函数参考手册(用例及详解)

涉及的C函数详解及用例有 1.字符测试 2.字符串转换 3.内存管理 4.日期时间 5.内存及字符串操作 6.数字函数 7.用户组 8.数据结构和算法 9.文件操作 10.流操作 11.进程管理 12.格式化I/O 13.文件操作 14.进程通信 15.错误处理 16.通信 17系统

2018-08-17

linux文件的操作函数用法详解

对这些函数有详细解释和用例: fopen&#40;&#41; 打开流 fclose() 关闭流 fputc() 写一个字符到流中 fgetc() 从流中读一个字符 fseek() 在流中定位到指定的字符 fputs() 写字符串到流 fgets() 从流中读一行或指定个字符 fprintf() 按格式输出到流 fscanf() 从流中按格式读取 feof() 到达文件尾时返回真值 ferror() 发生错误时返回其值 rewind() 复位文件定位器到文件开始处 remove() 删除文件 fread() 从流中读指定个数的字符 fwrite() 向流中写指定个数的字符 tmpfile&#40;&#41; 生成一个临时文件流 tmpnam() 生成一个唯一的文件名

2018-08-17

(带详细书签)VIM使用技巧(人民邮电出版社)

Vim 是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便 编程的功能特别丰富,在程序员中得到非常广泛的使用。 Vim 能够大大提高程序员的 工作效率。对于 Vim 高手来说, Vim 能以与思考同步的速度编辑文本。同时,学习和 熟练使用 Vim 又有一定的难度。 本书为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的 Vim 技巧 的必由之路。全书共 21 章,包括 121 个技巧。每一章都是关于某一相关主题的技巧集 合。每一个技巧都有针对性地解决一个或一类问题,帮助读者提升 Vim 的使用技能。 本书示例丰富,讲解清晰,采用一种简单的标记方法,表示交互式的编辑效果,可以 帮助读者快速掌握和精通 Vim。 本书适合想要学习和掌握 Vim 工具的读者阅读,有一定 Vim 使用经验的程序员。

2018-08-17

(带详细书签)Linux系统编程用例及详解

第一章:linux基础知识 第二章:linux下编译与调试 第三章:linux文件目录操作 第四章:linux多进程 第五章:linux信号处理 第六章:进程间通信 第七章:linux多线程 第八章:linux网络编程 第九章:系统编程的一个小程序

2018-08-17

(带书签)linux常用命令用例及详解

1. 嵌入式 linux 环境搭建 2. linux 操作系统的概念和安装方法,详细介绍 linux 下基本的 shell 命令、 vim 编辑器, GCC 编译器,关基本知识

2018-08-17

STC15单片机实战指南书稿

中国宏晶 STC 系列单片机是 2005 年推出中国本土第一款具有全球竞争力且与 MCS-51 兼容的单片机。 该单片机是新一代增强型单片机,它具有内存容量大、 速度快、 抗干扰性强、 加密性强等特点,同时带 ADC、 PWM、 超低功耗等功能,可以远程升级, 内部有 MAX810 专用 复位电路, 价格比较便宜, 由于这些特点使得 STC 系列单片机的应用广泛。

2018-08-17

自动搜索算法(带源码和详细说明)

1.1 场景 某系统由上位机和设备组成,通过某种总线连接,如下图所示: 系统采用的通讯方式是:上位机发送指令,对应的设备回复;设备之间不能通讯;设备不会主动发送数据。如果上位机发送的命令中没有指定唯一的设备地址,则所有符合条件的设备都会回复,此时总线上会产生冲突,上位机无法获得有效的返回数据。 系统中最多存在250个设备,每个设备用8个数字(0-9)的ID来唯一标识,例如:12345678、99881100。设备支持对ID采用通配符方式查找。 本题目要求设计上位机ID搜索程序,能够在最短时间内查找出系统中所有的设备ID。

2018-08-17

录屏软件,清晰度和压缩率最高的软件

录屏软件,清晰度和压缩率最高的软件,比网上什么kk录像,录屏大师都要好,解压即用,无需注册

2018-08-17

codeblocks安装包和汉化包

解压后一路点下一步就安好了,想汉化在安装目录里搜索locale目录然后将zh_CN添加进去重启就安装汉化成功了

2018-08-17

基于多LED的高精度室内可见光定位方法

针对可见光室内定位问题,该文基于接收信号强度(RSS)定位技术,提出一种利用多个 LED 发射端实现 室内定位的方法,即 MLED-RSS 定位算法。该方法在充分考虑 LED 拓扑结构对定位性能影响的基础上,利用部 署在室内的多个 LED,合理选择其中 3 个 LED 作为发射节点,采用改进的三边定位法获得定位目标位置信息。定 位算法可以有效地解决可见光定位存在的遮挡效应。仿真实验表明,MLED-RSS 算法可以实现高定位精度。 关键词:室内定位;可见光通信;接收信号强度;三边定位法

2018-08-16

王爽《汇编语言》第三版答案

检测点 1.1 (1) 1 个 CPU 的寻址能力为 8KB,那么它的地址总线的宽度为 13 位。 (2) 1KB 的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3) 1KB 的存储器可以存储 8192(2^13) 个 bit, 1024 个 Byte。 (4) 1GB 是 1073741824 (2^30) 个 Byte、 1MB 是 1048576(2^20) 个 Byte、 1KB 是 1024 (2^10)个 Byte。

2018-08-16

(带详细书签)Shell脚本学习指南

一本带书签的深入浅出的介绍Shell脚本编写学习指南,书中有很多示例可以参考

2018-08-16

Makefile中文教程

什么是 makefile?或许很多 Winodws 的程序员都不知道这个东西,因为那些 Windows 的 IDE 都为你做了这个工作,但要做一个好的和 professional 的程序员, makefile 还是要懂。 这就好像现在有这么多的 HTML 的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML 的标识的含义。特别在 Unix 下的软件编译,你就不能不自己写 makefile 了,会不会 写 makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为, makefile 关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、 功能、模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先 编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile 就像一个 Shell 脚本一样,其中也可以执行操作系统的命令。 makefile 带来的好处就是——“自动化编译”,一旦写好,只需要一个 make 命令,整个 工程完全自动编译,极大的提高了软件开发的效率。 make 是一个命令工具,是一个解释 makefile 中指令的命令工具,一般来说,大多数的 IDE 都有这个命令,比如: Delphi 的 make, Visual C++的 nmake, Linux 下 GNU 的 make。可见, makefile 都成为了一种在工程方面的编 译方法。 不同厂商的 make 各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章, 这里,仅对 GNU 的 make 进行讲述,环境是 RedHat Linux 8.0, make 的版本是 3.80。毕竟, 这个 make 是应用最为广泛的,也是用得最多的。而且其还是最遵循于 IEEE 1003.2-1992 标 准的(POSIX.2)。 在这篇文档中,将以 C/C++的源码作为我们基础,所以必然涉及一些关于 C/C++的编译 的知识,相关于这方面的内容,还请各位查看相关的编译器的文档。这里所默认的编译器是 UNIX 下的 GCC 和 CC。

2018-08-16

(带书签)[CPP.教程].郑莉,李宁(人民邮电出版社)

一本带书签的,讲C++的入门类书籍,对C++进行了深入的诠释

2018-08-16

PADS9.3三合一完美精简版

默认安装在C盘就可正常使用 安装完成后,设置环境变量: 变量名:MGLS_LICENSE_FILE 变量值:C:\flexlm\license.dat

2018-06-11

空空如也

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

TA关注的人

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