自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式C语言自我修养分享课件(二)

编译器会将程序源代码编译成汇编代码1).预处理:对源代码中的伪指令进行处理(以#开头的指令)。·删除所有的#define,展开所有宏定义。·处理条件指令,例如 #if、#elif、#else、endif等。·处理头文件包含指令,如 #include,将被包含的文件插入到该预编译指令的位置。删除所有的注释添加行号和文件名标识2.汇编:汇编器会将汇编代码文件翻译成为二进制的机器码,保存在后缀名为.o的目标文件中,这个文件是一个 ELF 格式的文件,表示可执行可链接文件格式,例如目标文件 .o,

2022-10-11 15:48:02 576

原创 由端午不同类型的粽子所引发的思考------C语言实现筛选同一材料但不同馅的粽子

端午之际,也要敲代码。

2022-06-08 17:18:12 148

原创 python小工具------将H264/H265码流文件转为一帧一帧的JPEG文件

一.功能输入H264/H265码流路径,此脚本可以将对应的码流转为一帧一帧的JPEG文件,并保存到指定路径。二.具体实现import avimport sys def h265ToJpg_demo(): inputFileName = "D://Testpython//test.h265" container = av.open(inputFileName) print("container:", container) print("container.streams:",

2022-04-11 16:51:01 5957

原创 python小工具------去除并且重命名某一目录下带有空格的文件

一.功能当某个目录下的文件名带有空格时,此脚本会将此带有空格的文件名重命名为不带空格的文件名二.具体实现mport os#路径改为需要设定的路径rootdir = 'D://Testpython//' img_file = []img_dir = []for parent, dirnames, filenames in os.walk(rootdir): for img_one in filenames: new_filename = img_one.replace(

2022-04-11 16:29:47 584

原创 嵌入式C语言自我修养分享课件

一.异构计算1.背景:随着物联网、大数据、人工智能时代的到来,海量的数据分析和大量复杂的运算对CPU 的算力要求越来越高,CPU 的大部分资源用于缓存和逻辑控制,适合运行各种复杂的串行程序,但是单核或者多核CPU处理性能的提升空间已经达到极限了(也就是说,单靠CPU很难满足现代科技发展的需求)。2.异构计算简介:异构计算就是在SoC 芯片内部集成不同架构的Core,比如DSP、GPU、NPU、TPU、BPU等不同架构的处理单元,各个核心协同运算,等于CPU找来了一系列的伙伴来共同协助自己的工作。C

2022-03-22 15:51:11 2544

原创 C语言结构体实例演示

一.结构体定义C语言结构体由一系列相同或者不同类型的数据构成的集合,结构体类型就是以struct关键字定义的数据类型。结构体的格式如下:struct 结构名称 { 结构体所包含的数据成员,包括变量数组等} 结构变量 ;//结构变量可以指定一个或多个举例:struct Student{ char name[10]; char sex[2]; int age;}Stu二.实例演示先看下结构体变量如何初始化#include <stdio.h>#includ

2022-02-15 15:54:22 1840

原创 C语言多线程演示

一.线程简介线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程作用:1.达到充分利用CPU的目的多线程完成cpu内核的快速切换,提高CPU的利用率。2.提高任务处理的效率单线程编程对于一个较大的任务来说花费较长时间,多线程会创建多个并行的线程来

2022-01-25 15:42:53 535

原创 C语言数组指针和指针数组实例演示

一.数组指针1.简介数组指针就是指向数组的指针。定义方式:int (*p)[len] = NULL;示例:#include <stdio.h>int main(){ int array[5];//定义一个有五个元素的数组 int (*p)[5] = NULL;//定义一个指向这个数组的指针 p = &array;//p指向数组的第一个元素位置 (*p)[0] = 1;//通过指针给数组的第1个元素赋值 (*p)[1] = 2;//通

2022-01-24 15:55:07 1230

原创 使用gcc和g++编译一个可执行程序

在前面的文章中已经介绍了安装gcc交叉编译工具链交叉编译工具链现在进行一个简单的编译操作1.在服务器或者ubuntu虚拟机中创建一个a.c文件输入以下程序:#include <stdio.h>int main(int argc, char const *argv[]){ printf("The first process\n"); return 0;}2.保存退出使用以下命令g++ a.c 这样之后会有.out文件注意:生成可执行文件时不加-o选项

2022-01-24 11:05:50 1624

原创 C语言判断和循环介绍

一.判断介绍判断是C语言最常用的语法之一,判断是满足某种条件时,执行对应语句的一种语法结构。下面介绍工作中最常用的几种类型的判断语句语句介绍使用场景if由一个布尔表达式后跟一个或多个语句组成。需要满足某种单个条件时,执行的语句。if…else一个 if 语句加上可选的 else 语句。满足if条件时执行一种语句,不满足if条件时执行的另一种语句。if…else if…else一个 if 语句加上可选的 else if 语句,再加上else 语句。存在三种及

2021-10-11 17:21:48 597

原创 Linux之CMake实例演示

一.CMake简介在Windows中,我们可以使用IDLE环境来编译我们的代码,比如visual studio、vc++6.0等,这些已经将编译的过程集成进开发环境中了。但是在其它平台上,并没有这些开发环境,所以需要我们手动编译。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。程序生成过程:二.实例演示使用CMake编译可执行程序单目录单源文件创建两个文件Test.cc和CMakeLists.txtTest.cc#include <std

2021-07-13 15:48:37 120

原创 Linux之Shell编程(17)--grep关键字详解演示(一)

一.grep关键字介绍grep是一个常用的文本搜索工具,它的全称是global regular expression print,表示全局正则表达式输出。按字面解释看,它能使用正则表达式搜索文本,并把匹 配的行打印出来。二.grep语法grep [options]...

2021-06-29 11:03:13 93

原创 Linux之Shell编程(16)--sed关键字详解演示(三)

今天继续演示sed的其它用法。-f:把多个子命令操作写入脚本文件,然后使用 -f 选项来指定该脚本。test.sh内容:sed.sh内容:注意:脚本文件中的子命令串不需要输入单引号。执行结果:sed常用flags标记g:对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。(这部分已演示)w: 将缓冲区中的内容写到指定的 file 文件中。data.txt内容:结果:运行后file.txt内容可以发现,w的作用就是将符合指令变化的行的内

2021-06-28 15:56:53 94

原创 Linux之Shell编程(15)--sed关键字详解演示(二)

前面已经演示了sed -n以及sed -e的基本用法回顾上一篇的sed用法: sed今天继续讲解其他的一些sed用法-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出动作。简而言之,就是直接修改源文件,一般用于修改配置文件中的参数。实例演示:1.替换文件中的内容sed -i ‘s/原字符串/新字符串/’ file先来看一下第一个例子逐步解析:sed -i表示需要对源文件进行修改s 表示替换脚本命令/Will 表示源文件中的字符串/Jam 表示需要替换的字符串fi

2021-06-26 15:57:08 115

原创 Linux之Shell编程(14)--sed关键字详解演示(一)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-06-26 13:44:38 140

原创 Linux之Shell编程(13)--Shell文件包含

一.Shell文件包含简介和其它语言类似,Shell也可以包含外部脚本,这样的好处是可以封装一些公用的代码作为一个独立的文件。Shell 文件包含的语法格式:. filename 或者source filename(其中 .和filename之间有空格)。二.实例演示include.sh中的内容:include1中的内容:给include1.sh添加权限后执行(include.sh可以不需要执行权限)结果:换一下使用source结果:另外,可以直接source filename

2021-06-07 17:39:20 145

原创 Linux之Shell编程(12)--Shell输入/输出重定向实例演示

一.Shell重定向简介从标题我们可以知道,Shell的重定向有两种,第一种是输入重定向,另外一种就是输出重定向。其实,输入输出重定向就是改变输入与输出的方向。输入输出方向是什么?1.从键盘读取输入的数据,把数据拿到程序中(C语言程序、Shell 脚本程序等)使用,这是一种标准的输入方向,从键盘到程序。如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。2.程序中会产生数据,这些数据直接呈现到屏幕上,这是另一种标准的输出方向,也就是从程序到显示器。如果改变了它的方向,数据就流向其它地方,这就

2021-06-07 15:28:56 926

原创 Linux之Shell编程(11)--Shell函数实例演示

一.Shell函数介绍前言前面讲了Shell中的一些基础内容,还没有看过的同学可以看我往期的文章,因为那些内容是Shell函数的前提。另外,Shell函数我会着重讲解,会有很多系列,也会有很多实例演示,让大家能够更好地理解Shell函数以及和其它语言的函数的一些异同点。言归正传,想要理解一种语言的函数,我们要先知道这些函数的命名规则,那么Shell函数的命名规则是啥样的呢?Shell函数命名规则:简化函数名(){ 函数体}或者推荐规范function 函数名(){ 命

2021-06-04 12:38:47 101 2

原创 Linux之Shell编程(10)--Shell流程控制语句实例演示(二)

一.case … esac语句和其它语言的 switch … case语句类似,case … esac也是选择语句,每个 case用 ) 开始,用 ;; 表示break,表示执行结束,跳出整个 case … esac 语句,语法格式如下:case var in 选择模式1) command1 command2 ... commandN ;; 选择模式2) command1 command2 ... commandN ;;

2021-05-29 17:48:41 88 1

原创 linux之Shell编程(9)--Shell流程控制语句实例演示(一)

一.Shell流程控制语句之if else…fi和其它编程语言相同的是,Shell也有流程控制语句,包括(if else 、while、case、continue、for等等),但是,具体的格式却有着很大的不同。实例演示if else…fi语句#!/bin/basha=10if [ $a == 10 ];then echo "a=10"else echo "a!=10"fi结果:看过我之前文章的人肯定对这个非常熟悉,因为,我的实例演示有很多if el

2021-05-19 17:13:32 79

原创 linux之Shell编程(8)--Shell输出命令echo和printf

一.Shell输出命令之echo简介在前面的例子中我们可以看到很多echo命令,它的作用其实和C++中的cout以及Java中的system.out.println很相似,都是很简单的输出命令,今天,我再详细讲解一下echo命令的使用。echo命令实例演示:显示字符串: echo “Hello World”,一般情况双引号可以省略,直接写成echo Hello World显示变量: a=10;echo “a = $a”显示执行结果:echo `expr 1 + 1`原样输出所有内容 (使用单引

2021-05-17 19:05:13 1293 7

原创 linux之Shell编程(7)--Shell基本运算符之字符串运算符和文件运算符实例演示

一.Shell字符串运算符简介先看一下常用的字符串运算符:$ 检测字符串是否为空,不为空返回 true。= 检测两个字符串是否相等,相等返回 true。!= 检测两个字符串是否不相等,不相等返回 true。-z 检测字符串长度是否为0,为0返回 true。-n 检测字符串长度是否不为 0,不为 0 返回 true。注意和算术运算符很容易搞混的是:1.在算数运算符中 = 表示赋值,== 表示判断数字是否相等。2.在字符串运算符中,= 用于判断字符串是否相等。实例演示字符串运算符

2021-05-17 10:51:26 440 2

原创 linux之Shell编程(6)--Shell基本运算符之逻辑运算符和布尔运算符实例演示

一.Shell逻辑运算符简介和其它编程语言类似,Shell也有自己的逻辑运算符,下面就罗列了这些运算符。&&:逻辑且,和其它编程语言一样。(满足条件时需要全部满足才算true)。||:逻辑或,和其它编程语言一样。(只需满足一个条件就算true)实例演示:a=20;b=10if [[ $a -eq $b && $a -ne $b ]];then echo "a等于b 并且 a不等于b为 true"else echo "a等于b 并

2021-05-17 10:17:05 420

原创 linux之Shell编程(5)--Shell基本运算符之算数运算符和关系运算符实例演示

一.算数运算符算数运算符就是我们通常说的+,-,*,/。根据我们之前的学习经验,简单的尝试一下加法运算。#!/bin/bashval=`1 + 1`echo $val运行结果:发现报错,经过查阅资料后发现原生bash不支持简单的数学运算。但是可以通过其他命令来实现,例如 awk 和 expr。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。稍作修改:结果:重新执行就可以得到正确的值。注意1.原生bash不支持简单的数学运算,需要通过其他命令来实现,比如常用的

2021-05-14 19:23:56 246 3

原创 aarch64-linux-gnu-gcc 交叉编译工具链安装演示

一.什么是交叉编译工具链内核不同就需要交叉编译,在一个平台上生成另一个平台上的可执行代码。在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,在目标平台进行编译很难实现,因为编译工具链需要很大的存储空间,而且需要很强的CPU运算能力,为了解决这个问题,交叉编译工具就诞生了。通过交叉编译工具,我们就可以在CPU能力很强、存储空间足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。本次我主要介绍的就是Ubuntu上安装的交叉编译工具链aarch64-linux-gnu

2021-05-08 17:22:33 5757 9

原创 linux之Shell编程(4)--Shell数组实例演示

一.Shell数组简介和其它编程语言一样,Shell也有存储元素的数据结构,但是在Bash Shell中只支持一维数组,初始化大小时不需要定义数组大小,元素下标也是由0开始。Shell数组的语法格式:array=(n1,n2,n3…n)注意:1.数组元素之间用空格符号隔开,如果不隔开则视为一个元素,如ab。2.和其他语言不同的是,元素之间不能用 **,**隔开。二.实例演示Shell数组#!/bin/basharray=(a bc "d")echo "first value:${ar

2021-05-07 15:43:17 177 2

原创 linux之Shell编程(3)--Shell参数传递实例演示

一.Shell传递参数的格式脚本内获取参数的格式为:$n(n为数字),例如:1为执行脚本的第一个参数,2为执行脚本的第二个参数。。。二.Shell传递参数实例演示vim创建canshu.sh后输入以下内容,保存。给脚本设置可执行权限后输入 ./canshu.sh 1 2 3 后结果如下从结果可知:$0为执行文件名(包含文件路径)执行文件名后的1,2,3就是传入的参数特殊字符处理参数$#:传递到脚本的参数个数$$:脚本运行的当前进程ID号$!:后台运行的最后一个进程的ID号$?

2021-05-07 11:23:47 301 1

原创 linux之Shell编程(2)--Shell变量实例演示

一.Shell变量定义Shell在定义变量时通常不需要指明类型,直接赋值就可以。Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。默认情况下,Shell不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串。Shell 支持以下三种定义变量的方式:variable=valuevariable=‘value’variable="value"variable 是变量名,value 是赋给变量的值注意:1.如果 val

2021-04-30 10:57:28 88

原创 linux之Shell编程(1)--从终端读取用户输入数据

一.Shell编程介绍这篇文章正式进入 Shell编程演示,Shell 的编程思想和 C++、Java、Python、C# 等其它编程语言类似,但是差异还是很大的。这里,我尽量实例演示来让大家理解。二.实例演示运行结果:三.总结1.从终端读取用户输入数据使用的是read命令,并且需要注意的是在输出时前面需要加上$,否则只会输出字符串。2如果字符串输错了,那么系统不会报错,但是不会有显示,所以每次运行Shell时都需要检查一遍结果。结果:小知识1.删除光标左边的所有内容按Ctrl

2021-04-29 16:07:27 1290

原创 linux之Shell(2)--使用Shell运行第一个vim文件

一.前言前面已经介绍了使用vim编辑文件以及如何打开shell,接下来就直接使用Shell运行vim文件。如何使用vim编辑器如何进入Shell二.使用Shell运行vim文件以下是我使用vim创建的test.sh文件。打开后是输入了Hello World !使用cd命令进入到文件所在目录。执行文件指令 ./test.sh,会出现Hello World !三.总结对于编辑好的vim文件,如果我们需要修改,那么需要注意的是以下方式1.:w! 若文件属性为『只读』时,强制写入该档案

2021-04-29 14:17:53 348

原创 linux之Shell(1)

一.shell是什么Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 是一种脚本语言1.有的编程语言必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。2.有的编程语言,如 Shell、JavaScript、Pyth

2021-04-28 18:48:04 67

原创 linux之vim使用

一.vim是什么vim是从 vi 发展出来的一个文本编辑器。简单理解就是vim是linux系统下的一种文本编辑器,但是操作方式和windows有很大的区别。vim操作键盘功能图二.vim安装在linux中按下 Ctrl+T进入terminal,然后输入命令sudo apt-get install vim进行安装,可能会要求输入密码,此时看不到自己输入的密码,成功后,会自动安装vim,我是已经安装过了,所以显示如下图片,如果未安装过vim,那么直接输入vim,系统也会提示安装的指令。三.简单的

2021-04-28 17:36:19 268 1

原创 初识EEMBC-Coremark

一.什么是EEMBC定义EEMBC(Embedded Microprocessor Benchmark Consortium):嵌入式微处理器基准评测协会。EEMBC测试是基于每秒钟算法执行的次数和编译代码大小的综合统计结果。二.什么是CoremarkCoreMark是由EEMBC的Shay Gla-On于2009年提出的一项基准测试程序,其主要目标是测试处理器核心性能。EEMBC的CoreMark®是衡量嵌入式系统中使用的微控制器(MCU)和中央处理器(CPU)性能的基准。取代过时的Dhry

2021-04-26 15:24:21 522

原创 STL容器(一)--vector

STL容器之vector顺序容器 vector(矢量容器)deque(双端队列容器)list(双向列表)关联容器 set(单重集合)multimap(多重映射表)容器适配器 stack(栈)queue(队列) prority_queue(优先级队列)1.包含在头文件#include2.功能 模拟动态数组3.实现 开辟一定大小的数组,随元素的增加而增加,如果空间不够,自动采取扩容机制。扩容规则以原空间大小的2倍重新开辟一块空间,将旧空间的元素挪到新空间上,再继续添加元素,一直遵循每次扩容大小是

2021-04-19 20:14:00 62

原创 Linux常见命令(4)

chgrp(用于改变文件所属用户组与chown类似)chgrp [-R] dirname/filename-R:进行递归地持续对所有文件和子目录更改ex:chgrp users -R ./dir #递归地把dir目录中的所有文件和子目录下所有文件的用户组修改为userschmod(用于改变文件的权限)chmod [-R] xyz 文件或目录-R: 进行递归地持续更改,即连同子目录下的所有文件都会更改#chmod还可以使用u(user)、g(group)、o(other)、a(all)和+

2021-04-15 19:10:17 29

原创 Linux常见命令(3)

ps(将某个时间点的进程运行情况选取下来并输出,process之意)-A:所有的进程均显示出来-a:不与terminal有关的所有进程-u:有效用户的相关进程-x:一般与a参数一起使用,可列出较完整的信息-l:较长,较详细地将PID的信息列出ex:ps aux#查看系统的所有进程数据ps ax#查看不与terminal有关的所有进程ps -lA#查看系统所有的进程数据ps axjf#查看连同一部分进程树状态kill(用于向某个工作(%jobnumber)或者某个PID(数字)传送一

2021-04-15 19:07:50 47

原创 Linux常见命令(2)

grep命令(该命令常用于分析一行的信息,若当中有所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工)grep[-acinv][–color=auto]'查找字符串’filename常用参数:-a:将binary文件以test文件的方式查找数据-c:计算找到’查找字符串’的次数-i:忽略大小写的区别,即把大小写视为相同-v:反向选择,即显示出没有’查找字符串’内容的那一行#ex:取出文件/etc/man.config中包含MANPATH的行,并把

2021-04-15 19:04:34 41

原创 Java集合(3)

·ArrayList和Vector的区别这两个类都实现了List接口(List接口继承了Collection接口),都是有序集合1.线程安全Vector使用了Synchronized来实现线程同步,是线程安全,ArrayList是非线程安全2.性能ArrayList在性能方面优于Vector3.扩容:ArrayList和Vector都会根据实际的需求动态扩容,Vector每次增加1,ArrayList每次增加50%Vector类的所有方法都是同步的。可以由两个线程安全地访问一个Vector对象

2021-04-13 23:14:30 111 1

原创 Java集合(2)

·常用的集合类1.Collection接口的子接口包括Set接口和List接口2.Map接口的实现类有HashMap、TreeMap、Hashtable、ConcurrentHashMap和Properties3.Set接口的实现类有HashSet、TreeSet、LinkedHashSet4.List接口的实现类有ArrayList、LinkedList、Stack以及Vector·Collection集合1.Collection集合的子接口有Set、List、Queue三种子接口,常用为Se

2021-04-13 23:10:37 67 1

原创 Java集合(1)

集合框架用于存储数据的容器集合框架是为表示和操作集合而规定的一种统一的标准的体系结构任何集合框架都包含三大块:对外的接口、接口的实现和对集合运算的算法·接口:表示集合的抽象数据类型,操作集合时不关心具体实现,达到多态,接口通常用来形成规范·实现:集合接口的具体实现,是重用性很高的数据结构·算法:在实现集合框架中的接口的对象身上完成有用的计算方法,如查找,排序,算法是可复用函数·集合的特点1.对象封装数据,对象多了也需要存储,集合用于存储对象2.对象的个数确定可以使用数组,对象的个数不确定可

2021-04-13 23:07:20 49 2

空空如也

空空如也

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

TA关注的人

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