自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (8)
  • 收藏
  • 关注

原创 uboot基础知识一

uboot开发

2022-11-07 21:35:49 571 1

原创 Linux引导启动程序(bootsect.s)

!! SYS_SIZE is the number of clicks (16 bytes) to be loaded.! 0x3000 is 0x30000 bytes = 196kB, more than enough for current! versions of linux!SYSSIZE = 0x3000!! bootsect.s (C) 1991 Linus Torvalds!! bootsect.s is loaded at 0x7c00 by the bios-sta.

2021-02-06 16:19:31 323

原创 Linux开机启动到main(1)

从开机到main函数总共要执行三步,目的是为了完成从启动盘加载操作系统程序,完成main函数执行前的准备工作。一、启动BIOS,准备实模式下的中断向量表和中断服务程序。二、从启动盘加载操作系统到内存。三、为执行32位的main1做过度工作。一、启动BIOS,准备实模式下的中断向量表和中断服务程序。1.1、BIOS启动原理计算机的运行始终都是由程序控制的。但是在上电的一瞬间,计算机的RAM什么都没有。启动盘里有操作系统,但是CPU的逻辑电路被设计的只能运行内存中的程序,没有直接从硬盘中运行操作系统

2021-02-03 18:21:47 776

原创 Linux内核小贴士——更新ing

1、实模式:是Intel 80286和之后的80x86兼容CPU的操作模式(应该包括8086)。实模式的特性是一个20位的存储器地址空间(2^20 = 1048576,即1MB的存储器可被寻址),可以直接软件访问BIOS以及周边硬件,没有硬件支持的分页机制和实时多任务概念。从80286开始,所有的80x86CPU的开机状态都是实模式;8086等早期的CPU只有一种操作模式,类似实模式。2、RAM:随机存取存储器,常见的内存条就是一类RAM,其特点是加电状态下可任意读、写,断电后信息消失。3、IP/E

2021-01-27 13:55:09 113

原创 Linux内核专有名词——更新ing

setup程序的扇区数(SETUPLEN)被加载到的位置(SETUPSEG)启动扇区被BIOS加载的位置(BOOTSEG)移动到的新位置(INITSEG)内核被加载的位置(SYSSEG)内核的末尾位置(ENDSEG)根文件系统设备号(ROOT_DEV)AX 寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。BX 寄存器称为基址寄存器,常用来存放访问内存时的地址。CX 寄存器称为计数寄存器,在循环、串操作指令

2021-01-27 13:40:23 161

原创 Modbus 主从机协议

Modbus采用的是异步通信,以主从字节为单位,传输信息11位的字格式:字格式(串行数据) 11位二进制起始位 1位数据位 8位奇偶校验位 1位:有奇偶校验位/无:无奇偶校验位停止位 1位:有奇偶校验位/2位:无奇偶校验位通讯(信息帧)格式数据格式: 地址码 功能码 数据区 错误校验数据长度 : 1 1 N ...

2020-12-14 08:53:21 2544

原创 十大常规排序算法Ⅰ

voidSwap(int*a,int*b) //交换两个数{inttemp=*a;*a=*b;*b=temp;}1、冒泡排序描述:①比较相邻的原始,如果第一个比第二个大就交换两个数。②从第一对到结尾的最后一对执行①的操作,这样最后的元素已经排序成功。③在剩下序列中,对所有元素重复①②的操作,④以此执行①②③直到剩下的序列元素为0复杂程度:时间复杂度O(n^2) 空间复杂度O(1)//参数:指针 数组大小 返回大小//返回...

2020-12-08 10:22:19 144

原创 4、多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2int majorityElement(int* nums, int numsSize){ int count = 1; int key = nums[0]; for(int ...

2020-12-04 10:27:06 121

原创 3、重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)int repeatedSu..

2020-12-04 10:18:33 123

原创 10种滤波方式

一、限幅滤波法先根据经验判断,确定两次采样允许的最大偏差值,设为A。每次检测到新采样值时进行判断:(1)如果本次新采样值与上一次滤波效果之差<=A,则本次采样值有效,令本次滤波结果=新采样值;(2)如果本次采样值与上次滤波结果之差>A,则本次采样值无效,放弃本次采样值,本次滤波结果=上次滤波结果。二、中位值滤波法连续采样N次值,把采样值按大小排列,取中间值为本次有效值。三、算术平均滤波法连续取N个值进行算术平均运算。N较大时,信号平滑度较高,但灵敏度较低;N较小,信号平滑度

2020-11-23 10:23:45 11810

原创 2、搜索二维矩阵 II

现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target=5,返回true。给定target=20,返回false。bool searchMatrix(int** matrix, int matrixRowSize, int matrixColSi...

2020-11-06 17:14:57 119

原创 1、合并两个有序数组

题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出...

2020-11-06 16:32:23 214

原创 Linux基础命令使用(5)

find命令find命令主要是沿着文件层次结构下下遍历find [选项] [搜索路径] [表达式]默认路径当前目录,默认表达式是-print参数 描述-print find 命令将匹配的文件输出到标准输出-exec find 命令对匹配的文件执行该参数所给出的 shell 命令-name 按照文件名查找文件-type 查找某一类型的文件-prune 使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth 选项,那么 ...

2020-09-14 09:25:21 87

原创 Linux基础命令使用(4)

which命令which 命令的作用是,在 PATH 变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件which 可执行文件名称确认是否安装了 gcc$ which gccwhereis命令whereis 命令主要用于定位可执行文件、源代码文件和帮助文件在文件系统中的位置whereis [选项] 文件参数 描述-b 定位可执行文件-m 定位帮助文件-s 定位源代码文件-u 搜索默认路径下除可执行文件、源代码文...

2020-09-14 08:51:56 419

原创 Linux基础命令使用(3)

more命令:more命令:一页一页显示,空格键往下翻页,按B往回显示,而且还有搜索功能more [选项] 文件参数 描述+n 从笫 n 行开始显示-n 定义屏幕大小为 n 行+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示-c 从顶部清屏,然后显示-d 提示“Press space to continue,’q’ to quiet”,禁用响铃功能-p ...

2020-09-14 08:48:23 458

原创 Linux基础命令使用(2)

mkdir命令mkdir命令用来创建指定名称的目录,要求创建的目录下用户具有写的权限,并且不能是当前已有的目录。mkdir [选项] 目录参数 描述-m --mode=模式 设定权限<模式>-p --parents 可以是一个路径名称-v --verbose 每次创建新目录都显示信息递归创建多个目录:$ mkdir -p zhou/test创建权限为777的目录$ mkdir -m 777 zhou2创建目录显示信息$ mkdir...

2020-09-12 15:05:18 236

原创 Linux基础命令使用(1)

Linux下root初始密码设置:123456$ sudo passwd输入密码:123456重新输入新密码:123456$ su root密码:123456#ls命令ls:打印当前目录的清单,如果选择其他目录,会显示对应目录的清单,该命令不仅可以查看文件夹包含的文件,还可以查看目录和文件权限ls [选项] [目录名]参数 描述-a -all列出目录下的所有文件,包括以.开头的隐含文件-l 除了文件名之外,还将文件的权限,所有者,文件...

2020-09-12 13:01:54 96

原创 (2)定时器------STM32和STC51

时钟周期:时钟周期T是时序中最小的时间单位,计算方式是1/时钟频率,STC51单片机使用的晶振是11.0592M,这样时钟周期=1。机器周期:单片机完成一个操作的最短时间。机器周期主要是针对汇编语言而言,在汇编语言下程序的每条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算的,但在C语言下的一条时间是不确定的,受诸多因素的影响。在51单片机下1,一个机器周期是12个时钟周期,也就是12/11059200。定时器和计数器是单片机内部的通弄一个模块,通关配置SFR(特殊功能寄存器)可以

2020-09-12 10:45:04 872

原创 Linux程序编程————学习笔记(9)

文件操作文件除了本身包含的内容,它还有名字和属性,文件创建习修改时间和访问权限。这些属性全被保存在文件的inode节点中,是文件系统一个特殊的数据块。同时包括文件长度和在磁盘的位置。系统使用的文件inode变化,目录则是便于人们的使用。硬件设备在Linux中通常也被表示被文件,例如:作为超级用户,来使用如下命令将IDE CD-ROM驱动器挂载为一个文件#mount -t iso9660 /dev/hdc mnt/cdrom#cd /mnt/cdrom这个命令将CD-ROM设备(在本例中.

2020-09-07 11:51:56 839

原创 Linux程序编程————学习笔记(8)

here文档使用here文档,可以允许一条命令在获得输入数据时就好像是在读取一个文件或者键盘语言,实际是从脚本程序中获得的数据here文档以两个连续的小于号<<开始,紧跟一个特殊字符序列,在文档结尾再次出现。<<是shell的标签重定向符。最简单的例子就是给cat命令提供输入数据:#!/bin/shcat <<!FUNKY!hellothis is a heredocument!FUNKY!输出结果:hellothis is a heredo

2020-09-07 11:51:04 102

原创 Linux程序编程————学习笔记(7)

两个常用的命令和正则表达式find命令find 命令是用来搜索文件的命令。初学者会觉得很复杂,因为它有选项,测试和动作类型的参数。还会因为一个参数的处理结果可能会影响到后续参数的处理。首先用root权限来执行这个命令#find / -name test -printf/usr/bin/test#解释:从根目录开始找到所以名称为test的文件,并且输出文件的完整路径。这样全部搜索可能会浪费很长时间,所以我们要知道任何不要搜索其他文件系统目录。-mount选项,可以告诉find命令不要搜索挂载其他

2020-09-07 11:50:23 104

原创 Linux程序编程————学习笔记(6)

shell语法在shell里,默认情况下,所有变量被看作字符串并以字符串处理,即使被赋值为数字。shell和一些工具程序在需要时可以把数值型字符串转换为对应数值来进行操作。Linux是一个区分大小写的系统。在shell中,可以在变量名前加$符号来访问它的内容。在为变量赋值时,只需要使用变量名,变量名会自己创建。检查变量内容的简单方式就是在变量名前加$符号,再用echo命令输出到终端。在命令行上,通过设置和检查变量salutation的不同值了实际查看变量的使用$ salutation=Hello

2020-09-07 11:49:22 90

原创 Linux程序编程————学习笔记(5)

交互式程序在大量C语言源文件中查找包含字符串的POSIX的文件。与其使用grep命令在每个文件中搜索,然后列出包含该字符串文件,不如使用交互式脚本来执行$for file in *>do>if grep -l POSIX $file>then>more $file>fi>doneposixThis is a file with POSIX in it -treat it well$shell提供通配符扩展,可以用通配符*来匹配一个字符串,可以用.

2020-08-31 23:28:51 160

原创 Linux程序编程————学习笔记(4)

管道和重定向重定向输出$ ls -l > lsoutput.txt把ls命令的输出保存到文件lsoutput.txt中标准文件描述符的内容:文件描述符0代表一个程序的标准输入,文件描述符1代表标准输出,文件描述符2代表标准错误输出。可以单独重定向其中任何一个。通过>操作符把标准输出重定向到一个文件。在默认情况下,如果该文件已经存在,它的内容将被覆盖。如果想改变默认行为,可以使用命令set -o noclobber(或set -C)命令设置noclobber选项。也可以使用set +o

2020-08-31 23:27:31 113

原创 Linux程序编程————学习笔记(3)

静态库和共享库创建和维护增加的静态库,使用ar(代表archice,即建立归档文件)程序和使用gcc -c命令分别编译。尽可能把函数保存在不同源文件中,如果需要访问公共数据,可以放到一个源文件,并在文件中声明静态变量。本例创建一个小型库函数,包含两个函数,分别是fred.c和bill.c,打印自动欢迎信息(1)创建两个函数//文件fred.c#include <stdio.h>void fred(int arg){ printf("fred:we passed %d\n..

2020-08-31 23:25:41 176

原创 Linux程序编程————学习笔记(2)

文件目录应用程序和应用程序的开发工具,都可在目录/usr/bin中找到;系统管理员添加的通常在目录/usr/local/bin或/opt中找到。对于系统级的应用程序最后放在/usr/local目录中来运行和范围。开发和个人应用最好在/home目录使用一个文件夹来存放。X视窗系统通常安装在/usr/Xll/和usr/bin/Xll目录中。GNU编译系统的驱动程序gcc一般位于/usr/bin或/usr/local/bin目录中,对于LInux说,很可能是/usr/lib/gcc目录下的一个版本

2020-08-31 23:24:49 102

原创 Linux程序编程————学习笔记(1)

inux程序分成两种特殊类型的文件:可执行文件和脚本文件。可执行文件是计算机可以直接运行的程序,相当于.exe文件。脚本文件是一组指令的集合,这些指令由另一个程序(即解释器来执行),相当于window中的.bat文件、.cmd文件或解释执行的BASIC程序。搜索路径由系统管理员配置,通常包含如下依稀存储系统程序的标准路径:/bin:二进制文件目录,用于存放启动系统时用到的程序。/usr/bin:用户二进制文件目录/usr/local/bin:本地二进制文件目录root用户登录后使用PATH变量

2020-08-31 23:23:36 124

原创 UCOSII原理与应用----动态内存管理

应用程序在运行中为了某种特殊需求,经常需要临时获得一些内存空间,所以作为较完善的操作系统必须具有动态分配内存的能力。对于实时操作系统在保证系统在动态分配内存时,他的执行时间必须是可确定的所以UCOS II改进动态分配函数和释放内存的函数malloc()和free(),使他们可以对大小固定的内存块进行操作,从而使函数malloc()和free()的执行时间成为可确定的。UCOS II对内存进行两级管理,即把一个连续的内存空间分成若干分区,每个分区又分为若干大小相等的内存块。操作系统以分区为单位来管理动态内存

2020-08-24 09:25:33 763

原创 UCOSII原理与应用----任务调度

任务调度:UCOSII任务调度思想:“近似地每时每刻让优先级最高的就绪任务处于运行状态”。具体上,采用系统或用户任务调用系统函数及执行中断服务程序结束时来调用调度器,以确定应该运行的任务并运行它。在多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫任务切换,而按照某种规则进行任务切换的工作叫任务的调度。UCOSII中调度器有两种,一是任务级的调度器,二是中断级的调度器。任务调度器主要是完成任务调度,主要工作是寻找最高优先级就绪任务和实现任务切换,由函数OSSched()来实现。中

2020-08-23 22:33:01 1093

原创 UCOSII原理与应用----就绪表

为系统处于就绪状态的任务分配CPU是多任务操作系统的核心工作。涉及两项技术:1、判断哪些任务处于就绪状态。2、任务调度,也就是通过一个算法在就绪任务中确定应该,马上运行的任务,操作系统用于负责这下工作的程序模块叫做调度器。从任务状态转化图可以看到,系统总是从处于就绪状态的任务来选择一个任务运行。所以需要一个就绪任务登记表,来登记系统中私有处于就绪状态的任务。就绪表结构在UCOSII中,就绪表就是一个位图,系统中的每个任务都在位图中占据一个二进制位,该位置的状态(0或1)就表示任务是否处于就绪状态。

2020-08-23 22:30:58 977

原创 UCOSII原理与应用----中断与时钟

中断:在任务运行过程中,应内部或外部异地事件的请求中止当前任务,而去处理异步事件所要求的过程叫做中断。中断服务子程序:应中断请求而运行的程序。中断向量:中断服务子程序的入口地址。UCOSII的中断过程:系统收到中断请求后,如果这事CPU处于中断允许状态(中断开放),系统会中止正在运行的当前任务,中断向量的指向转而去运行中断服务子程序。当中断服务子程序的运行结束后,系统会根据情况返回到被中止的任务继续指向。或转向另外一个更高优先级级别的就绪任务。对于可剥夺型UCOSII内核来说。系统会根据情况进行一次

2020-08-21 10:17:13 950 1

原创 UCOSII原理与应用----基本概念和任务

1、实时操作系统是什么实时操作系统:能够使计算机系统在一个规定的时间内及时响应外部请求并及时控制设备和实时任务协调运行的操作系统。实时系统有两个基本要求:1、实时系统的计算必须产生正确结果,称逻辑或功能正确。2、实时系统的计算必须在规定时间完成。根据对时间正确的程度,可以分成硬实时系统和软实时系统。硬实时系统:必须在极严格的时间内完成实时任务。超过截止时间软实时系统:对计算超时有一定的容忍度,超过允许的时间得到不会完全没有用途,只是这结果可信度有某种程度的降低。2、任务的基本概念在设计一个较为

2020-08-20 23:00:13 2708 1

原创 C语言知识点(3)------指针和数组

对于刚刚接触指针的来说,有一个误区,“数组和指针是相同的”1、指针和数组定义int *x;int y[7];extern int *y;(会报错)很直接的说明了编译器不承认指针 = 数组。int i = 1;extern int i;(extern 用来告诉编译器该对象已经被定义类型和名字,本文件可以使用)2、数组和指针如何访问首先我们应该分清楚“地址”“地址内容”,可以这么理解,地址相当于寝室号,地址内容相当于寝室里面的实物(床、柜子等等)。我们寻找一个实物需要根据对应地址来查找。

2020-08-19 16:08:28 109

原创 UCOSII在STM32F103移植

系统平台:μC/OS-II(最新V2.92版)硬件平台:STM32F1(适合F1所以系列)开发平台:Keil(MDK-ARM) V5Ucos软件包Micrium官网下载地址(需要账号):https://www.micrium.com/download/micrium_stm32f107_ucos-ii1、相关文件夹说明EvalBoards:主要是配置底层和系统的相关文件。我们只需要部分。uC-CPU:CPU相关文件,我们使用的STM库,不需要。uC-LIB:Micrium官方的库,初学者这

2020-08-19 01:37:54 1229

原创 (1)新建工程---利用keil自带的库文件创建STM项目

利用keil5自带的Manage Run-Time Environment 功能自带的库文件来创建STM32项目。软件:keil5,芯片:STM32F103ZET6调速器:J-link1、创建根目录,并在目录下创建App,Bsp文件夹;(新建项目要让文件分组,在后面的开发更清晰明确)App:存放应用代码文件夹。例如:传感器读取、串口通讯等实现功能实现的代码。Bsp:底层代码。例如:UART,ADC,DMA等功能。2、创建工程(1)新建项目,选择对应芯片,选择对应文件夹目录。(2)在Ma

2020-08-17 23:00:55 4266

原创 C语言知识点(2)------优先级

首先了解单目运算符和双目运算符的区别就是操作数(变量或常量)数量的不同。单目运算符只对一个操作数进行逻辑运算。例如: num++(自加) , num--(自减) , !num(取反) , ~num(按位取反)。双目运算符只对两个操作数进行逻辑运算。例如: num1 + num2 , num1 - num2 , num1 > num2PS:除了单目和双目运算符,还有一个三目运算符:三目运算符就是对三个操作数进行逻辑运算。目前三目运算符只有一个:num = num &gt.

2020-08-17 12:13:45 1993

原创 C语言知识点(1)------数据声明

1、& 和 | 不同于&& 和 ||& 和 |:是按位运算符&& 和 ||:逻辑运算符我们常常在if判断语句中使用,基本上没出现过问题,是因为我们判断的结果都是0和1,所以按位运算和逻辑运算结果一样;if(i == "1" && j == "2")和if(i == "1" & j == "2")运行结果相同但是如果是在平时的运算而不是逻辑判断中就会大不相同;i = 8;j = 4;k1 = i || j; //12...

2020-08-17 11:08:57 901

EC20原理图设计

A9G 是一个完整的四频 GSM/GPRS+GPRS/GPS 模块。相较于A7,A9G 的集成度更高,核心芯片的成本降低也使得整个方案性价比更高。方便应用于各种物联网硬件终端场合。

2019-03-29

4G模块原理图

A9G 是一个完整的四频 GSM/GPRS+GPRS/GPS 模块。相较于A7,A9G 的集成度更高,核心芯片的成本降低也使得整个方案性价比更高。方便应用于各种物联网硬件终端场合。

2019-03-29

系统架构师六套模拟真题

本套资源有六套模拟真题,可供选择,该资源供大家选择,很有用。

2018-11-27

系统架构师论文

系统架构师论文是很难的一件事,该资源总结了三四篇好的论文。绝对实用。

2018-10-23

系统架构师历年真题

系统架构师历年真题,经过多方查找,总结的真题,绝对好用,本人用过。

2018-10-23

ESP8266各类资料

改资源包括了ESP8266的固件开发,AT指令开发,和穿透数据,所以包括的所以的8266开发

2018-06-19

AD元件库封装及其原理图

这个AD元件库包括AD画图软件的各类封装和原理图。这些元器件共新手入门和学习更方便。

2018-06-19

QT5开发pdf学习和源码()

学习QT的最佳教程,此教程讲解不仅详细,而且学习更加简单。

2018-06-19

空空如也

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

TA关注的人

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