博客
伴随着人工智能、物联网时代的到来,数据应用变得频繁起来,数据安全应该如何保护?软件加密算法都有哪些,这些算法在哪些方面得到了应用?慢慢读下去,你会发现围绕在我们身边的“小密码”。
<font color="#33b1c8"><strong>对称加密算法</strong></font>
本篇我们先介绍最基础的几个IO口操作。学完本篇,大家要能自己独立完成下面几个实验。
1、点亮LED
2、一个按键控制LED,按下灯亮,释放灯灭
3、两个按键控制一个LED,一个键开灯,一个键关灯
<font color="#33b1c8"><strong>实验一</strong></font>
点亮LED的例子前面入门篇已经讲过了,程序写起来很简单,Keil编写程序并编译生成HEX文件,烧写进单片机的过程,也做了完整详细的介绍。
点亮LED利用了IO口输出操作。简单复习一下,最核心的两句代码是:
sbit LED = P1^0;
LED = 0;
俗话说得好, “得来全不费功夫”,免费当然是个好事情了。既然是免费的,开源的实时操作系统(RTOS)看起来是个不错的选择。但是对于嵌入式设备和物联网设备的开发者来说,有时并不愿轻易涉足, 比如家居自动化和可穿戴设备,医疗仪器和工业控制系统。在决定之前,需要了解使用开放源码的真正成本和弊端。
<strong>1.可靠性</strong>
如果 RTOS 失败或者行为出人意料,会导致产品的异常。即使一个 RTOS 故障可能不会导致异常或挂掉,也可能会导致顾客不满,销售不佳甚至产品召回。一个安全认证的 RTOS 提供了信心,由于经过彻底的审查,测试和验证,一般能够满足预期。
<strong>2.安全性</strong>
STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
<font color="#33b1c8"><strong>1、IIC EEPROM</strong></font>------容量小,采用的是IIC通信协议;用于在掉电时,存系统配置参数,比如屏幕亮度等。常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等;
IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理。也是查阅了不少资料,确保内容正确无误,花了很长时间写的。IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了简化方便理解。这样对于以后解决各种IO口相关的问题会有很大的帮助。
IO口等效模型是本人独创的方法,通过此模型,能有效的降低对IO口内部结构理解的难度。并且经查阅资料确认,这种模型和实际工作原理基本一致。
前面说了很多东西,不少人或许已经迫不及待的想要实际操作单片机了。IO口作为单片机与外界通信最主要的手段,是单片机学习最基本也最重要的一个知识。前面我们编程实现了IO口点亮LED的实验,本篇继续对IO口相关知识进行介绍。
电路:由金属导线和电气、电子部件组成的导电回路,称为电路。在电路输入端加上电源使输入端产生电势差,电路连通时即可工作。电流的存在可以通过一些仪器测试出来,如电压表或电流表偏转、灯泡发光等;按照流过的电流性质,一般把它分为两种:直流电通过的电路称为“直流电路”,交流电通过的电路称为“交流电路”。
嵌入式操作系统(Embedded Operation System,EOS)是指用于嵌入式系统的操作系统。嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。嵌入式操作系统是负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能,是一种用途广泛的系统软件。
<font color="blue"><strong> 嵌入式LINUX</strong></font>
本篇简单介绍各种单片机外设模块,目前考虑不全,可能会在后期进一步修改完善。
前面介绍的核心模块,是微机系统中比较重要甚至是必不可少的。随后又介绍了接口,其中ADC/DAC也是常见的两种模块(这里是指硬件模块)。下面再介绍一些扩展模块,这些模块可以根据需要添加到微机系统中。
<font color="#33b1c8"><strong>扩展存储器/通信接口等</strong></font>
局部变量、局部静态变量、全局变量、全局静态变量区别如下:
局部变量: 栈区;
局部静态变量:静态区;
全局变量: 静态区的常量区;
全局静态变量:静态区。
在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别:
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
<font size="3"><strong>通信</strong></font>
何为通信?在英文中,通信用Communication表示,这个词也有交流的意思。实际上,通信和交流确实是一样的意思。不过在汉语中,交流常用来表示人与人之间的交流;而通信一般用于比较专业正式的场合,也就是所谓的术语。
人与人之间的交流,是信息交换的过程;微机系统或模块之间的通信,就是数据传输的过程了。
<font size="3"><strong>接口</strong></font>
人在用语言交谈时,需要用嘴说话,用耳朵听,通过空气来传播。信息的传递依赖嘴巴和耳朵来进行发送和接收。
成为一个正式的嵌入式开发工程师。它是一个艰辛的过程,需要开发人员维护和管理系统的每个比特和字节。从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。今天给大家介绍7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。
<strong>技巧1——用已知值填充ROM</strong>
软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。微控制器跳出应用程序空间并在非预想的代码空间中执行这种情况似乎是相当少有的。然而,这种情况发生的机会并不比缓存溢出或错误指针失去引用少。它确实会发生!发生这种情况后的系统行为将是不确定的,因为默认情况下内存空间都是0xFF,或者由于内存区通常没有写过,其中的值可能只有上帝才知道。
前面已经介绍了模块化设计的特点和巨大优势。在我们的实验板中,单片机是其中最核心的一个模块;而对于单片机来说,又是由更多的子模块组合而成。本文主要对单片机/计算机系统中最核心的几个模块进行简要介绍。
为了便于进行说明,后面会将单片机/计算机简单的统称为微机系统。
<strong>信息与数据</strong>
何为信息?可以理解成我们周围各种所能感知到的东西、还有人们所思所想等等,信息的概念不好解释,但是大家都能理解,也不是我要讨论的重点。
在微机系统中,能处理很多信息,例如我正在写的内容,就是文字和图像信息。处理信息的前提,就是对信息进行表示,例如文字就是一种形式。
学51单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解……
有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助。
<strong>一、为什么51单片机爱用11.0592MHZ晶振?</strong>
其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
电热剪电路系统构成如图1所示,其构成由传感器—滚珠开关、单片机定时检测及处理、工作状态指示、PWM信号产生与调整、电热模块驱动、电源共六个部分组成。
<center><img src="http://mcu.eetrend.com/files/2018-02/博客/100010277-35547-1.jpg" alt="PIC单片机电热剪电路原理图"></center>
PCB板的检测是时候要注意一些细节方面,以便更准备的保证产品质量,在检测PCB板的时候,我们应注意下面的9个小常识。
1、严禁在无隔离变压器的情况下,用已接地的测试设备去接触底板带电的电视、音响、录像等设备来检测PCB板
严禁用外壳已接地的仪器设备直接测试无电源隔离变压器的电视、音响、录像等设备。虽然一般的收录机都具有电源变压器,当接触到较特殊的尤其是输出功率较大或对采用的电源性质不太了解的电视或音响设备时,首先要弄清该机底盘是否带电,否则极易与底板带电的电视、音响等设备造成电源短路,波及集成电路,造成故障的进一步扩大。
2、检测PCB板要注意电烙铁的绝缘性能
不允许带电使用烙铁焊接,要确认烙铁不带电,最好把烙铁的外壳接地,对MOS电路更应小心,能采用6~8V的低压电路铁就更安全。
<font size="3"><strong>模块化思想</strong></font>
模块化是一个很重要的思想,它的应用不仅仅局限在单片机等技术方面,还体现在我们的身体构造,体现在人类社会生产生活中的方方面面。何为模块化思想呢?按照我的理解,模块化思想有几个特点,下面一一道来。
<strong>1、分工合作与专一</strong>
对生物学有基本认识的人都知道,包括人在内的很多动物是由多种器官构成的,例如大脑负责思考,心脏负责输送血液等。每个器官或组织负责几项功能,各个器官之间协调工作,共同构成一个复杂的整体。
RST复位输入 用来完成单片机单片机的复位初始化操作
ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲
PSEN: 外部程序存储器选通信号 当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。
EA:访问外部程序存储器控制信号
XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2(18引脚):振荡器反相 放大器的输入端。
<font color="#33b1c8"><strong>现状</strong></font>
不知道阅读本文的读者,在初学单片机时是否和我曾经一样迷茫。看到各种新的术语,疑惑不解;不知道从何学起;照着书中的例子一步一步做都没有问题,但是自己试着做东西,遇到各种问题却不会解决,向别人提问,可能也没有几个人回答;感觉好像学完了单片机的各种模块,但是要自己设计东西却还是毫无思路,也不知道怎么去进一步深入学习;甚至在一开始就遇到太多困难,直接放弃了学习。
在我身边,看到不少学习单片机的人。其中很多人学习的方法,就是通过看一些视频或书籍教程,然后照着别人的代码去写,写好了能用了,就感觉是学会了。而学的过程中,其实有很多东西不懂,但是也不知道怎么办,就那么过去了。
最近,在AI领域无论是学术界的大咖还是行业的大佬,都在如火如荼的搞类脑芯片的研究,当然也取得了不少成果。日前,斯坦福大学研究院电子与微系统技术实验室的Jeehwan Kim教授在《自然》杂志上发表了一篇论文,一时间引来了产学研三界的关注。原因是Jeehwan Kim教授与研究员们使用一种称为硅锗的材料研发了一款人工突触芯片,可支持识别手写字体的机器学习算法。无独有偶,近日中国科学院自动化研究所类脑智能研究中心类脑信息处理(BRAVE)研究组也在借鉴生物神经结构的神经网络建模与类人学习研究中取得了突破性的研究。