跳转到主要内容

嵌入式系统基础知识总结,这篇太全面了!(下)

cathy /

<strong><font color="#004a85">接口技术</font> </strong>

<strong>1. Flash存储器</strong>

(1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。

(2)Flash存储器的特点:

A、区块结构:在物理上分成若干个区块,区块之间相互独立。

B、先擦后写:Flash的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。擦除操作的最小单位是一个区块,而不是单个字节。

C、操作指令:执行写操作,它必须输入一串特殊指令(NOR Flash)或者完成一段时序(NAND Flash)才能将数据写入。

D、位反转:由于Flash的固有特性,在读写过程中偶尔会产生一位或几位的数据错误。位反转无法避免,只能通过其他手段对结果进行事后处理。

E、坏块:区块一旦损坏,将无法进行修复。对已损坏的区块操作其结果不可预测。

(3)NOR Flash的特点:

嵌入式系统基础知识总结,这篇太全面了!(上)

cathy /

<strong><font color="#004a85">1、嵌入式系统的定义</font> </strong>

1.1 定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

1.2 嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

1.3 知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。

1.4 IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

<strong>2、嵌入式系统的组成</strong>

包含:硬件层、中间层、系统软件层和应用软件层

<strong>2.1 硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口</strong>

嵌入式核心模块=微处理器+电源电路+时钟电路+存储器

嵌入式开发中要用的三种程序架构~

cathy /

<strong>前言</strong>

在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相信在嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构。在嵌入式软件开发中,程序架构主要分为三种,本篇文章将对这三种程序架构做出详解。

<strong>1、软件架构存在的意义</strong>

可以说一个好的程序架构,是一个有经验的工程师和一个初学者的分水岭。软件架构对于开发人员是友好的,你希望先执行什么任务后执行什么任务,或者这一个时间点执行什么任务下一个执行什么任务,又或者什么事件会同步到某个任务等等,在不同的软件架构下,解决上述问题的具体方法都是有所区别的。

软件架构对开发者最大的帮助是:帮助开发者掌控整个工程的框架,当你熟练使用其中某一个程序架构后,对于系统中出现的bug你一定能够快速的定位并解决。当然,我建议要根据需要选择合适的软件架构进行开发,具体原因在文章后面会进行介绍。

<strong>2、深入介绍三种不同的程序架构</strong>

嵌入式AI的盛宴来了,谁来吃?

cathy /

通常,人工智能(AI)计算大多是在数据中心、企业核心设备或电信边缘处理器上远程执行的,而不是在本地设备上。其中缘由主要是AI计算需要数百个不同类型的芯片来执行,硬件的尺寸、成本和功耗都非常高。但是,对于那些对带宽、时延敏感的实时性应用而言,全部上“云”就不是最好的选择了。

幸好,嵌入式AI已经开始改变这一切!

<center><img src="http://mouser.eetrend.com/files/2021-01/wen_zhang_/100060707-118457-1.j…; alt=“” width="600"></center>

<strong>为什么需要嵌入式AI?</strong>

做嵌入式开发,这2个设计思想要掌握!

cathy 提交于

笔者参考了市面上各种各样的嵌入式书籍,如MCS-51、AVR、ARM等都有看过,但没发现有哪本是介绍设计思想的,就算有也是凤毛麟角。写程序不难,但如何写得好、写得快,那是需要点经验积累的。所以在下出来献丑一下,总结了一些东西。就我个人的经验而谈,有2个设计思想是非常重要的。

一个是“时间片轮的设计思想”,这个对实际中解决多任务问题非常有用,通常可以用这个东西来判断一个人是单片机学习者,还是一个单片机工程师。这个必须掌握。

第二个就是“分层屏蔽的设计思想”即分层思想。下面,用扫描键盘程序例子作为引子,引出今天说的东西。

<strong> 分层思想</strong>

分层的思想并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用。看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种恍然大悟的感觉。如果说我不懂LCD怎么驱动,那好办,看一下datasheet,参考一下别人的程序,很快就可以做出来。但是如果不懂程序设计的思想的话,会给你做项目的过程中带来很多很多的困惑。

<strong><font color="#004a85">问题的提出:</font></strong>

嵌入式