嵌入式、物联网开发
文章平均质量分 85
肥嘟嘟的左卫门
这个作者很懒,什么都没留下…
展开
-
ARM 体系架构及其工作原理
架构的演变历史我们首先介绍 ARM Ltd,这里先说的是公司而不是架构。ARM 的发展历史非常久远,超乎许多人的想象。首先,我们提供一些背景信息,ARM 成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司叫做 Acorn Computers,曾经是英国教育市场的著名个人台式计算机供应商,现已不复存在。80年代中期时,Acorn 一个小团队接受了一个挑战,为他们的下一代计...转载 2019-12-01 17:20:14 · 29173 阅读 · 0 评论 -
ARM架构
1、指令集体系结构1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。如果是Branch and Link指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压...原创 2019-12-01 17:30:35 · 737 阅读 · 0 评论 -
EEPROM和flash的区别
之前对各种存储器一直不太清楚,今天总结一下。存储器分为两大类:ram和rom。ram就不讲了,今天主要讨论rom。rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了prom,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发...转载 2020-04-26 20:47:16 · 880 阅读 · 0 评论 -
Startup.s文件
在Startup.s文件中包含一个startup的入口函数,该函数为EBOOT的最开始的入口。在系统上电或者冷启动的时候,这是第一个被执行的函数。该函数都是由汇编语言编写的,完成基于硬件平台的最初的初始化,也就是CPU的相关初始化,如果有必要,也可以在这里对外围的设备进行初始化。该函数执行到最后,会跳转到C语言的入口,一般是Main函数,或者叫做EBootMain函数。这里要多说的一件事情就是...转载 2020-04-09 11:09:31 · 2416 阅读 · 0 评论 -
S32K SDK使用详解之S32 SDK软件架构详解
内容提要引言1. SDK的MCU平台相关设备驱动解析(SDK-->platform-->devices目录)1.1 子目录common1.2 子目录S32K1xx(为具体使用的MCU型号,可能为 S32K116/S32K118/S31K142/S32K144/S32K146/S32K148)1.3 其他文件2. SDK的MCU平台相关PD...转载 2020-04-09 10:52:56 · 14956 阅读 · 4 评论 -
Keil MDK5项目建立步骤及可能出现的错误解决方法
一、项目建立步骤首先我们要建立自己的项目文件夹,在这里我在电脑中建立了“STM32-project”在这其中建立了实例文件夹”example“,然后在example文件夹新建了“USER”文件夹用作存放用户代码如“main”等。好了项目文件夹就基本建立好了接下来使用KEIL5来新建项目了。在我们建的实例文件夹中建立项目example此时会提示选择芯片,你会发现,这里不像KEIL...原创 2018-05-06 22:19:15 · 22687 阅读 · 0 评论 -
Keil MDK5的安装及破解详细步骤
安装及破解Keil MDK5首先是下载安装文件与破解文件,这个不详细说明。你将会得到这两个文件!双击第一个安装文件!点击Next>>打勾,然后Next>>选择安装路径,建议默认即可。Next>>随便写点什么。Next>>等待安装结束即可安装完毕把图上的钩钩打掉,然后完成然后它会弹出这个...转载 2018-05-06 21:44:49 · 204794 阅读 · 26 评论 -
详细讲解了使用STM32的GPIO口控制LED灯亮灭的应用实例,包括工程的项目创建过程、配置目标选项页,并提供源代码的下载(具有详细的注释)
库函数驱动外设的应用实例:应用STM32的GPIO控制LED灯的亮灭例题:使用STM32的GPIOB口控制8个LED灯的亮灭。STM32有7个GPIO口,每个GPIO口有16个引脚,使用其中的8-15引脚对8个LED灯进行控制,可以实现闪亮、跑马灯、流水灯等效果。开发工具为Keil MDK5(最新版本),兼容低版本(本例题程序使用库函数:GPIO_SetBits和GPIO_ResetBits实...原创 2018-05-08 10:53:33 · 5087 阅读 · 0 评论 -
详细介绍STM32驱动程序库STM32F1xx_DFP中的每一个文件含义及其作用
嵌入式应用程序的开发可以基于微控制器厂商提供的驱动程序库,也可以针对外设寄存器直接编写驱动程序。使用厂商提供的驱动程序库进行开发,简单、快捷,兼容性好,便于移植,但代码略多;直接针对寄存器编程进行开发(建议利用头文件stm32f10x.h定义的寄存器结构和位定义),费时耗力,但能够深入理解原理,代码简洁高效。所以,建议初学者从驱动程序库入手,逐渐深入到寄存器编程。MDK-ARM开发工具本身已经...原创 2018-05-07 21:24:09 · 17120 阅读 · 0 评论 -
Keil MDK5软件包的组成、Cortex微控制器软件接口标准CMSIS,重点介绍CMSIS-CORE的组成和使用
嵌入式系统的应用开发需要基于目标机-宿主机的交叉编译系统,在集成开发环境的支持下进行,应用程序通常采用高级编程语言C/C++进行编写。使用MDK开发工具进行STM32微控制器的应用开发需要安装软件包,软件包包括设备驱动程序库STM32F1XXX_DFP.XXX.pack(对于Keil MDK5而言是根据开发设备的不同选择性安装,MDK4之前的版本都是默认全部安装)、Cortex微控制器软件接口标准...原创 2018-05-07 11:51:35 · 9460 阅读 · 0 评论 -
嵌入式软件开发流程
根据使用的开发工具套件不同,软件开发流程会有差异,但主要步骤大致相同。对于使用宿主机(PC)的集成化开发环境,软件开发流程一般包括创建项目、添加文件、编译连接、下载调试等步骤,如下图所示。图1:嵌入式软件开发流程(1)创建工程项目:在配置硬件设备和安装软件开发工具后,就可以开始创建工程项目,通常需要选择项目文件的存储位置及目标处理器。(2)添加项目文件:开发人员需要创建源程序文件,...原创 2018-05-06 20:16:33 · 20810 阅读 · 1 评论 -
POSIX和System V的各类IPC函数接口
当我们在linux系统中进行进程间通信时,会发现例如共享内存,信号量,消息队列等方式时,会发现有System v以及POXIS两种类型。因此,我们探究一下System v和POXIS到底代表着什么意义。一.POSIXPOSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该...原创 2019-06-04 22:49:55 · 784 阅读 · 0 评论 -
嵌入式系统概述
嵌入式系统的定义有很多,国内一般采用的定义为:嵌入式系统是以应用为中心,以计算机技术为基础,软件、硬件可剪裁,以适用于应用系统对功能、可靠性、成本、体积、功耗等要求严格的专用计算机系统。嵌入式系统具有3个基本特点:嵌入性、专用性、计算机系统。硬件方面,为了能够嵌入具体的设备,嵌入式系统的硬件集成度较高,体积较小。同时还具有低成本、低功耗等特性。故导致嵌入式系统本身无法支持自身的开发,所以开发环...原创 2018-05-06 16:43:24 · 984 阅读 · 0 评论 -
MDK5(keil5)环境安装及破解(附MDK5安装包、注册机及F4支持包)
一、安装MDK51、创建一个单独的文件夹来作为安装路径(路径不能包含中文)2、找到MDK安装包,双击安装。安装完成后它会自动在线更新安装包,直接选择关闭,不要在线更新。最后点击Finish完成安装后,MDK可能会自动弹出Pack Installer的界面这是更新芯片支持包的界面,可能会出现FIle dowmload failed的错误,关闭即可3、安装支持包:用不同的芯片...原创 2019-06-05 22:52:42 · 13362 阅读 · 1 评论 -
图解嵌入式LINUX的内核结构
根据内核所完成的任务不同,LINUX内核可以分为以下5个部分。1、进程管理进程管理的主要任务是创建、销毁进程,并对进程与外部之间的联系进行处理。不同进程间的通信由进程调度(也叫CPU调度器)来处理,这本身也是进程管理的一部分。2、内存管理内存作为计算机主要资源之一,是否能高效管理内存是决定系统性能好坏的关键因素。LINUX允许多个进程安全地共享主内存区域,支持虚拟内存。内存管理从逻辑上分为硬件无关...原创 2018-05-17 16:08:59 · 4133 阅读 · 0 评论 -
STM32库函数编程思路总结及其与寄存器编程的对比剖析
一、STM32库函数编程思路总结1、基于STM32库函数的开发过程进行具体的项目开发前,做好项目创建工作,通常包括如下步骤:(1)新建工程项目的文件夹和子文件夹(如user、output、listing等)(2)使用MDK新建(或打开项目),选择目标CPU、添加CMSIS核心、STM32启动代码和外设驱动程序,构成运行环境。(3)添加包含main()函数的主程序文件。(4)配置目标选项。这些项目创...原创 2018-05-19 21:54:58 · 17532 阅读 · 3 评论 -
一个程序的内存分配原则、堆和栈的本质及对比
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(stati...转载 2018-11-15 13:48:48 · 810 阅读 · 0 评论 -
51单片机程序执行流程(STARTUP.A51管理Main函数的执行)
单片机是没有上操作系统的东西,在keil中编写的代码都是裸机代码,深入编写裸机代码有助于了解硬件的特性。 若不是硬件特性已定的情况之下的其它流程都是代码作祟。忽然想到来探探51单片机的执行流程。这个念头起源于最初见到每个51程序里面的主函数里面最终都挂一个while(1);语句。为何要加一句while死循环让程序停留在main函数中呢。将while(1);语句去掉有什么影响么?...转载 2019-03-23 22:10:54 · 6640 阅读 · 3 评论 -
ARM 内核SP,LR,PC寄存器的理解
ARM 内核SP,LR,PC寄存器 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。 1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时...转载 2019-04-16 23:31:18 · 4383 阅读 · 0 评论 -
运行嵌入式操作系统时,MMU的作用及工作过程
MMU(Memory Management Unit)是内存管理单元的简称,读者朋友在学习嵌入式的时候应该听说过µCLinux,这是适合没有MMU的微控制器使用的嵌入式Linux操作系统,比如ARM7。由于没有MMU,所以在µCLinux上实现多任务功能是一个非常棘手的问题。从而引出了本节的关注点:MMU的作用是什么?简单地说,MMU的作用有两点:地址翻译、内存保护。1、地址翻译...转载 2019-04-17 22:19:54 · 1458 阅读 · 0 评论 -
理解实时操作系统与裸机的区别
早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念。通常把程序分为两部分:前台系统和后台系统。 简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。...原创 2019-05-19 14:06:50 · 5488 阅读 · 0 评论 -
驱动(driver)和固件(firmware)的异同
驱动和固件(firmware)都是代码,前者为软件服务,后者为硬件服务。在操作系统概念还不明确的时代,二者是没有明显区别的。但是随着计算机体系结构的发展,硬件的种类开始变多,操作系统的种类也变多了。这个时候,因为各种技术的、商业的原因,硬件厂商希望自己的硬件能被更多的软件厂商使用,所以就需要在硬件之上做一些封装,让自己的硬件操纵起来更容易,这个时候就要有firmware这种东西了,它简...原创 2019-05-25 23:38:19 · 2048 阅读 · 1 评论 -
嵌入式系统中内存和flash的区别
在嵌入式系统中,文件系统和pc的存储介质有些不同。PC机中常用的是硬盘、内存、光盘和U盘等;嵌入式系统中文件系统常用的有SDRAM, DDR-SDRAM,NOR-FLASH,NAND-FLASH,SD卡,U盘和硬盘等,种类比PC机要多,有些是两者都有使用;如内存,在PC机上称为内存,在嵌入式系统中有多个名字,可以叫内存,也可以叫SDRAM和DDR。 内存(sd...原创 2019-05-26 20:26:46 · 1488 阅读 · 0 评论 -
嵌入式系统中ROM、RAM、DRAM、SRAM和FLASH的区别
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。本文引用地址:http://www.eepw.com.cn/article/275436.htm ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM 有两大类,一种称...转载 2019-05-26 20:29:48 · 4076 阅读 · 0 评论 -
嵌入式硬件上电后,程序的运行过程剖析(CPU、FLASH、内存)
程序以机器码的形式,即二进制码的形式存在FLASH中;上电后,CPU通过控制器将待运行的程序从FLASH中读入内存中;代码在内存中运行时,控制器将需要计算的数据存入寄存器中;运算器从寄存器中读取数据进行运算,并将结果存入寄存器中;控制器将寄存器中的结果读入内存中;故形成一个闭环的程序运行过程。CPU由运算器、控制器、寄存器组成,准确的来说CPU包括运算逻辑部件、寄存器部件和...原创 2019-05-26 20:58:47 · 7169 阅读 · 0 评论 -
嵌入式Linux底层系统的组成、举例对比WINDOWS和LINUX系统工作过程来说明各组成部分的功能
一、嵌入式LINUX底层系统主要包括引导加载程序、LINUX内核、设备驱动程序以及文件系统4部分。1、引导加载程序包括固化在固件(firmware)中的boot代码(可选)和BootLoader两部分。2、LINUX内核特定于嵌入式板子的定制内核以及内核启动参数。3、设备驱动程序设备驱动的作用是将各种设备硬件的复杂物理特性的细节屏蔽,向上提供一个通用的接口,挂接到虚拟文件系统上,向下和硬件设备进行...原创 2018-05-17 14:59:39 · 1621 阅读 · 0 评论