自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式系统的开发

一.嵌入式系统的开发过程和工具1.开发步骤(1)需求分析与规格说明(2)系统设计:也叫做概要设计或总体设计,根据规格说明书中系统要实现的功能,确定如何实现这些功能的硬件和软件,即哪些功能由硬件完成,哪些功能由软件完成,还必须描述非功能上的需求如何实现,即不仅要描述系统需求如何实现,且必须要符合系统需求中关于处理速度、功耗、成本等关于其他性能的约束。(3)构件设计:需要设计或选择符合系统结构...

2019-09-20 13:03:00 1151

原创 嵌入式系统软件

一.嵌入式操作系统1.嵌入式操作系统的发展(1)Tiny OS操作系统1)开源深度轻量级操作系统2)专为嵌入式无线传感网络设计,功耗较低,特别适合传感器这种受内存、功耗限制的设备3)技术特点:轻线程、主动消息、事件驱动、组件化编程(2)Android 操作系统1)以Linux为基础半开放源代码的操作系统,主要用于移动便携设备2)使用不同的软件开发包,则使用的编程语言也不同(3)Q...

2019-09-20 13:02:57 4872

原创 嵌入式系统硬件组成

一.嵌入式硬件组成与嵌入式处理芯片1.ARM处理器芯片内部结构1)WDT看门狗定时器:当处理器进入错误状态后的一定时间内可使处理器复位2)通用定时器:Timer3)实时时钟RTC:直接提供年月日时分秒,使应用系统具有独立的日期和时间4)脉冲宽度调制器:PWM5)中断控制器:采用向量中断(VIC)或嵌套向量中断(NVIC)6)直接存储器访控制器(DMA控制器):实现外设与内存,内存与内...

2019-09-20 13:02:54 16057

原创 嵌入式处理器

一.嵌入式处理器的结构、特点与分类1.不同类型的典型嵌入式处理器及其特点1)数字信号处理器DSP2)ARM3)FPGA2.分类1)按指令集:复杂指令集结构CISC、精简指令集结构RISC2)按存储机制:冯·诺依曼结构、哈佛结构3)按字长:8、16、32、644)按不同内核:51、AVR、ARM、MSP430、MIPS、PowerPC、MC68K(后三种采用RISC、哈佛结构;AV...

2019-09-20 13:02:51 3394

原创 嵌入式系统开发的基础知识

一. 嵌入式系统的特点、分类、发展与应用1.嵌入式系统定义1)广义上:带有微处理器的专用软件系统。2)狭义上:使用嵌入式微处理器构成的具有自己的操作系统和特定功能,用于特定场合。3)以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专用计算机系统。2.嵌入式系统构成1)软件2)硬件:存储器和CPU(中央处理器),存储器和CPU通过总...

2019-09-20 13:02:48 1634

原创 Linux网络编程之UDP

服务器客户端

2019-08-22 16:14:52 88

原创 Linux网络编程之Tcp

实现一个客户端往服务器里面发信息(1)服务器监听队列中的参数10代表一个服务器同一时刻最多接收10个客户端请求TCP服务器与客户端通过服务器端的fd这个文件描述符(只有服务器端有)来交流(2)客户端总结一:在一个客户端发送给服务器的基础上,我们需要实现多个客户端给服务器发送信息,这时服务器需要在不停的接受连接的同时实现接收信息,很明显需要来一个线程;客户端不需要改变。...

2019-08-22 13:29:53 97

原创 Linux网络编程概念

TCP/IP理论基础(1)Linux的优点之一就是他的丰富而稳定的网络协议栈,对于网络理论介绍一般采用OSI模型,但是Linux中网络栈的介绍分为四层的Internet模型1)数据链路层:实现网卡接口的网络驱动程序来处理数据在网络媒介上的传输2)网络层:实现数据包的选路和转发3)传输层:为两台主机上的应用程序提供端到端的通信4)应用层:处理应用程序的逻辑,应用层协议很多:ping:...

2019-08-20 16:36:25 230

原创 Linux 多线程编程

线程理论基础(1)先回顾一下进程的概念:进程是一个具有一定独立功能的程序的一次运行,是资源分配的最小单元,并且linux系统是一个多进程系统,进程间有并行性,互不干扰,Linux进程包含3个段:数据段、代码段、堆栈段(2)线程是进程的一个执行流,是cpu调度和执行的基本单位,他是比进程更小的能独立运行的基本单位,一个进程有几个线程组成,线程与同属于一个进程的其他线程共享全部资源,线程间相互...

2019-08-20 11:44:05 396

原创 Linux进程通信

进程通信(IPC)概述发展来源:UNIX进程间通信,基于System V进程间通信,POSIX(可移植操作系统接口)进程间通信进程通信分类:信号、无名管道和有名管道、消息队列、共享内存、信号量、套接字进程通信常用命令:ipcs:查看共享内存、信号量、消息队列ipcs -q(消息队列):只查看消息队列,同理:-m(共享内存)ipcrm -q + id :删除消息队列信号sign...

2019-08-18 22:03:24 138

原创 进程控制编程

进程控制理论基础(1)进程定义:进程是独立的一次运行活动(2)进程与程序:程序时放在磁盘的可执行文件,进程是程序的执行;程序时动态的,进程是静态的(不可迁移);进程是暂时的,程序时长久的;进程的组成包括:程序,数据,进程控制块(进程控制信息);(3)进程的状态:执行状态(进程正在占用cpu),就绪状态(进程已具备一切条件,正在等待分配cpu的处理时间片), 等待状态:进程不能使用cpu,...

2019-08-18 15:33:28 439

原创 Linux文件操作

系统调用系统调用是指操作系统提供给用户的一组“特殊”接口,用户服务可以通过这组“特殊”接口获得操作系统内核提供的服务(接口其实就是指函数,用户通过函数来使用内核提供的服务)注意:用户不能直接访问内核提供的服务是为了保障安全Linux里一切皆文件,对目录,设备的操作实质是对文件的操作,linux文件可分为:普通文件,目录文件,链接文件,设备文件,对文件操作可以分成系统函数和c库函数两种...

2019-08-14 13:50:39 750

原创 九大排序算法

冒泡排序冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:每趟两两比较相邻记录的关键字,如果反序就交换,每趟循环会把最大的数排到最后,下次循环“不带排好的数玩”简单选择排序简单选择排序(Simple Selection Sort)是一种选择排序,它的基本思想是:每趟比较先把第一个数当做最小值,找到比他小的值就交换下标,走完一趟后交换二者的值,下次循环不带排好的数玩,也就是...

2019-08-10 20:36:22 143

原创 非线性表之二叉树

树的概念二叉树的性质二叉树的遍历(先序遍历,中序遍历,后序遍历)(1)遍历之前我们要先建立好一个二叉树,采用结构体指针数组的方式(指针数组定义成11是为了区分奇偶性)(2)遍历都是从树根开始,先序遍历(3)中序遍历(4)后序遍历面试题解析:根据不同遍历的特点(根在什么位置)答案:cfhgedba...

2019-08-10 11:20:27 143

原创 线性表之链队列

链队列小技巧:(1)链队列需要两个结构体:一个节点结构体(数据域+指针域),一个存储队列信息的结构体(front指针 + rear指针,都是节点类型)(2)链队列的初始化链队列的入队获取队头元素判断队列是否为空出队清空...

2019-08-10 10:41:53 138

原创 线性表之链栈

链栈小技巧:(1)栈的结构体,栈的长度length + 栈顶指针top,初始化栈的时候可以近似看成初始化头结点(2)节点的结构体,数据域+指针域链栈的初始化入栈获取栈顶元素栈是否为空出栈清空栈7.销毁栈...

2019-08-08 16:55:56 120

原创 线性表之顺序队列

顺序队列小窍门:(1)顺序队列特征:数组 + 队头指针(front) + 队尾指针(rear)(2)队空:rear = front(3)队满:(rear + 1) % SIZE = front(4)队长:(rear - front + SIZE)% SIZE顺序队列的初始化入队列队头元素队是否为空出队队的长度清空队销毁队队列的应用:实现杨辉三角...

2019-08-08 13:54:01 99

原创 线性表之顺序栈

栈的初始化入栈获取栈顶元素判断栈是否空出栈清空栈销毁栈栈元素排序(边插边排)(先初始化两个栈)

2019-08-06 21:02:50 103

原创 线性结构之链表

面试题:一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?答:将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点所以设指向待删除节点的指针为p,设其后节点为q;q=p->next;temp = q->data;q->data = p->data;p->...

2019-08-04 13:46:32 253

原创 线性结构之顺序表

三种基本的数据模型答:按照数据结构类型的不同,将数据模型划分为层次模型、网状模型和关系模型。

2019-08-02 16:44:33 136

原创 linuxC语言内存分配

Linuxc运行程序时分配虚拟地址空间4G,按照1:3的比例分给内核态与用户态,内存=内核态 + 用户态内核态:留给系统用用户态:(1)栈空间:存放局部变量,形参(2)堆空间:malloc,realloc(3)代码段:存放代码(4)数据段:全局变量(全局数据区),静态变量(静态数据区),字符串常量(只读数据区)(5)其他注意:栈空间是操作系统管理的,堆空间是用户管理的易错:cha...

2019-07-31 19:09:38 368

原创 C语言之主函数与预处理

1.主函数注意:main函数运行时,可以在命令行后加上参数例题:用main函数实现对输入的数排序引申:atoi()函数:把数值型字符串转换成整数预处理(1)头文件#include<stdio.h>:在系统指定的/usr/include中查找#inclue"stdio.h" :先在当前目录下寻找,找不到再去自己指定的目录下(gcc时加上 -I),最后去系统默认的us...

2019-07-31 18:58:00 634

原创 C语言之高级指针

1.指针函数(函数名代表地址)与函数指针(1)指针函数(2)函数指针注意:调用函数如果无参数要声明成void,不声明代表可以是任意类型思考题:第一题:fp是一个指针,指向函数,函数有一个整型形参,函数的返回值是指针,这个指针指向有10个元素的数组,每个元素都是整型指针第二题:array是有五个元素的数组,每个元素都是指针,这个指针数组指向一个函数,这个函数无形参,返回值就指针,这个...

2019-07-31 16:51:00 324

原创 C语言之大端模式与小端模式

大端模式与小端模式的定义(字节序)大端模式:数据的高字节在低地址,低字节在高地址小端模式:数据的高字节在高地址,低字节在低地址怎么判断系统是大端模式和小端模式首先来看两个知识点:(1)联合体的成员共享内存,给b赋值,输出a也可得到b的值(2)数组在内存中从低地址向高地址排列(a[0] 一定在低地址,a[n]一定在高地址)于是,我们可以在联合体里面定义一个两个字节的数组,一个s...

2019-07-27 15:53:19 1491

原创 C语言之结构体与共同体

1.结构体声明(1)结构体声明后的分号一定要加(2)person是结构体名(2)typedef 声明新类型名来代替已有的类型名,通俗来讲就是给结构体类型取个简单的名字(4)结构体也是一种类型,可以包含int,short,char类型等2.结构体定义赋值(1)引用结构体变量方式:变量名.成员名,指针变量->成员名(2)定义同时通过大括号赋值, 类似数组。(3)定义后再赋值,...

2019-07-27 14:55:03 2141

原创 C语言之指针

指针的概念(1) 指针也是一种变量,用来存放其他变量地址的变量,指针的地址也是最开头的地址(2) int a = 0int *p = &a (int * 是一种数据类型,所以p 用来存放地址)*p = 100 等价于 a = 100(因为p指向a)注意:系统通过变量名或者地址来访问内存(3)*有两个含义:定义时表示后面的变量是指针;使用时表示取值(4)无论什么类型的...

2019-07-25 18:31:59 135

原创 C语言之关键字

关键字修饰变量局部变量(动态存储,未赋初值初始化为乱码)(1)registerregister是局部变量,不能取地址,因为register变量存储在寄存器中,不是在内存,一般循环变量定义成register变量来提高效率(2)auto局部变量默认为auto变量,存储在动态区外部变量(静态存储,未赋初值初始化0)(1)extern想在其他 .c 文件调用本文件 .c 中定义的变...

2019-07-25 12:39:41 263

原创 C语言之字符串操作

遍历 查找 替换 删除 逆序1.遍历2.查找某个字符在字符串的第几位2.1查找某个字符串在另一个字符串中的位置3.替换4.删除5.逆序

2019-07-23 20:39:28 133

原创 C语言之排序

1.冒泡排序

2019-07-23 16:41:54 85

原创 C语言之位运算

位运算基本运算符:& (按位与)|(按位或) ~(按位取反) ^(按位异或)1.请编写一个c函数,该函数给出一个字节中被置为1的位的个数2.输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.3.输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p...

2019-07-23 16:18:18 294

原创 C语言之函数调用

1.函数调用步骤(1)通过函数名找到函数入口地址(2)给形参分配空间(3)传值(值传递,地址传递)(4)执行函数体(5)返回(6)释放栈空间注意:形参类型与个数 要与实参一致,printf("%p\n",add)函数名是地址例一:用函数调用方法实现和函数输出结果:this is f1…result = 3例二:用函数调用的方式实现冒泡排序运行结果:1 3 4 ...

2019-07-23 15:10:22 446

原创 C语言之数组2(字符数组)

1.定义及初始化char a[5] = {‘h’,‘e’, ’ l’, ‘l’ , ‘o’}char a[5] = “hello” × , **因为字符串隐含结束标志 ‘\0’**所以越界char a[6] = “hello” √char a[32] = {0} 字符数组定义的时候记得初始化注意:字符串用双引号,字符用单引号2.输入打印char a[32] = {0};...

2019-07-23 13:32:50 842

原创 C 语言之数组1(一,二维数组)

1.一维数组(1)定义:int a[k] × , int a[5] √定义数组时,长度一定是确定的(除非初始化确定几个元素,可省去下标)例如:int a[] = {1,2,3,4,5}int a[5]:分配了20个连续字节空间,对于整个数组来说:a[0](低字节)----- a[4](高字节),但是在a[0]等元素的内部不确定地址的高低排序(与系统设定有关,大端...

2019-07-23 10:39:08 411

原创 C语言常用算法

利用数组,条件表达式,条件语句,循环语句来简化算法1.关于因子的问题(1)打印100以内素数(因子只有1和本身)(2)200-300之间不能被三整除的数,五个一行输出,关键在于怎么五个一行输出(通过设置一个变量,到五之后换行,再重新复制0,如此循环)(3).求两个数的最大公约数,最小公倍数(判断输入的两个数a和b的大小,最大公约数的循环初值利用较小的数,最小公倍数的循环初值利用较大的那...

2019-07-21 21:31:21 1223

原创 C语言基础1

1.首先说下为什么学C语言C语言有一个统一的标准,像汇编语言等就没有、C语言编译效率高,操作系统需要效率高的语言编程,可以直接操作硬件(对寄存器操作),C语言属于比较低级的语言,所以对程序员友较高的要求。2.基本数据类型空类型、字符型char、数值型其中数值型包括:实型(float单精度型6位小数,double双精度型15位小数),int整型(短整型、整型、长整型)(整型又按有无符号分为无...

2019-07-21 20:36:30 428

原创 Shell编程

Shell(命令行解释器)作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,以及控制结构,包括循环和分支。一般的linux系统都将bash作为默认的shellshell程序设计:(1)shell基本语法:输入输出重定向 < >(2)shell变量和参数:shell定义的环境变量用户定义的变量:变量名=变量值 ,变量的取值都...

2019-07-19 20:49:54 112

原创 linuxC开发环境

1.嵌入式编辑器vimvim有三种模式(1)命令行模式x:删除一个字符nx:删除n个字符dd:删除一行ndd:删除n行yy:复制一行nyy:复制n行p:粘贴u:撤销操作gg:回到文本首行shift + g:回到文本末行%:光标跳到配对括号上^:跳到行首$:跳到行尾*:查找(2)插入模式(按a/i进入)(3)底行模式(按:或/进入):w:保存:wq:保存退出...

2019-07-17 13:51:44 684

原创 linux基础

1.linux重要目录(1)/:根目录,只存放目录,不要存放文件(2)bin:存放二进制文件(可执行文件),例如ls,cat等常用命令,并且不能剪切走(3)sbin:存放管理员使用的命令(reboot重启命令等)(4)lib:存放库文件(5)etc:系统配置文件和子目录(例如开机之后开启什么文件,挂载什么文件)(6)var:保存日记文件(7)mnt:挂载目录(8)boot:存放启动...

2019-07-16 20:52:18 207

原创 苏嵌第一课

踏入苏嵌的第一课1:为什么选择c,c++编程体系分为面向对象(c++)和面向过程(c)其他语言类似java,python只是定义某些符号之间的差别,学会c易学其他2:为什么选择苏嵌学习与本专业有关的东西,软硬件结合,提供一个足够高度的平台3:学习目标一位优秀的研发工程师...

2019-06-03 20:51:16 96

空空如也

空空如也

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

TA关注的人

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