菜单 English Ukrainian 俄语 主页

面向爱好者和专业人士的免费技术图书馆 免费技术库


无线电电子与电气工程百科全书
免费图书馆 / 无线电电子和电气设备方案

适合初学者及其他人士的微控制器。 无线电电子电气工程百科全书

免费技术库

无线电电子与电气工程百科全书 / 微控制器

文章评论 文章评论

第一次会议

首先,对那些从标题来看本周期的主题似乎先天无趣或“陌生”的人说几句话。 也许您尚未在您的设计中使用微控制器(以下简称 MK),并且您认为在可预见的将来您将能够不需要它们。 您也可能认为构建微控制器系统来解决您的问题会太麻烦并且在经济上不可行。 不要着急:特别是对于您,我们想提供一些事实和一些统计数据。

例如,让我们以 MK 最接近的亲戚——个人电脑——来比较它们的使用强度。 根据分析公司 Loewenbaum & Co. 的说法。 公司(美国),1997年全世界发布的个人电脑数量达到约20万台。 同意,这是很多。 现在想象一下,这个庞大的数字仅占 MK 全球产量的 0,2%。 根据分析公司 IC Insights Inc. 的数据。 (美国)1998年世界市场吸收了超过13,5亿人!

结论不言而喻。 如果即使在今天,也很难找到一个人类活动领域不能有效使用计算机的地方,那么我们对 MK 还能说些什么呢? 为什么它们变得如此受欢迎并且不可或缺? 答案在于微控制器的结构。 作为这个概念定义的第一个近似,我们可以假设 MC 是位于单个微电路中的计算机。 因此,它的主要吸引力在于:尺寸小、消耗少、价格高; 高性能、可靠性以及能够适应执行各种任务的能力。

MK与微处理器的不同之处在于,除了中央处理单元(CPU)外,它还包含存储器和众多输入/输出设备:模数转换器、串行和并行信息通道、实时定时器、脉冲宽度调制器(PWM)、可编程脉冲发生器等。从结构和工作原理来看,MK本质上与个人计算机没有什么区别。 因此,微控制器和微型计算机这两个词是同义词。 然而,第一个术语(来自英文单词 control - 管理)更常见,因为它反映了其主要目的 - 用于内置于各种设备中的自动控制系统:信用卡、相机、手机、立体声音响、电视、录像机以及摄像机、洗衣机、汽车、微波炉、防盗报警系统、汽油发动机点火系统、机车电力驱动器、核反应堆等等。 嵌入式控制系统已经成为一种大众现象,以至于实际上已经形成了一个新的经济分支,称为嵌入式系统(嵌入式系统-英文)。

目前,全球生产MK品种达数千种。 它们采用 8 至 356 引脚封装,工作温度范围为 -55 至 +125oC,频率范围为 32 kHz 至 200 MHz,能够在 1,2 V 电源电压下工作,同时消耗的电流不超过几微安.. 产品的价格也在不断下降。 如今,一些 50 位 MCU 的成本已不超过 XNUMX 美分,与一颗“硬逻辑”芯片的成本相当。

所有这些导致了这样一个事实:今天越来越难以找到MC无法应用的人类活动领域,并且它们的分布过程具有雪崩般的特征。

我们希望上述事实已经让您对我们故事的主角产生尊重的态度。 事实上,MC 已成为一项全球性事件,几乎侵入了所有类型的人类活动。

是什么让这些 25 多年前出现的产品如此受欢迎? 这些设备是什么?它们的功能和前景是什么?

如果您尚未在您的活动中使用 MC 或基于它们的系统,那么。 也许是时候考虑一​​下了? 如果你决定应用MK,那么你的行动顺序应该是什么? 一路上会有什么困难等待着你,什么可以帮助你?

我们将尝试在建议的系列文章中回答这些问题。

摩尔定律和第一个 MK

早在 1965 年,强大的英特尔公司未来的创始人之一戈登·摩尔 (Gordon Moore) 就提请人们注意一个有趣的事实。 在绘制了存储芯片的性能增长曲线后,他发现了一个有趣的模式:每 18 到 24 个月就会出现新型号的芯片,并且每次容量大约增加一倍。 G. Moore 表示,如果这种趋势继续下去,那么计算设备的能力将在相对较短的时间内呈指数级增长。

G. 摩尔的预测随后得到了出色的证实,他所发现的模式在今天得到了观察,并且具有惊人的准确性,成为众多生产率增长预测的基础。 自 28 微处理器(4004 年)问世以来的 1971 年里,芯片上的晶体管数量增加了 12 倍以上:Sorrettué 芯片中的晶体管数量从 000 个增加到 2 个。

1976年,半导体技术呈指数级发展,Intel创造了第一款MK-8048。除了CPU之外,它还包括程序存储器、数据存储器、一个27位定时器和8048条I/O线。 如今,1980 已经成为历史,但英特尔于 8051 年发布的下一款产品仍然存在。 这是 MK XNUMX。

建筑 MK 8051

这款 MK 可以被认为是一个经典模型,其形象和相似性后来被创建了许多其他产品。 其框图如图所示。 1. CPU——MK的主节点。 它与命令系统这样一个重要的概念相关联。

适合初学者及以上的微控制器

指令集是特定于给定 CPU 的唯一二进制代码集,定义了其所有可能操作的列表。 每个这样的代码定义一个操作并且被称为操作代码或命令。 指令集中使用的代码越多,CPU 可以执行的操作就越多。 MK 8051 是八位的,因此它的操作码大小是 8 位。 理论上,总共可以有256个八位操作码。 8051使用255。

根据所使用的操作码的数量,指令系统分为两组:CISC 和 RISC。 CISC一词的意思是复杂的命令系统,是复杂指令集计算机的英文定义的缩写。 类似地,术语 RISC 表示精简指令集,来自英语精简指令集计算机。 命令系统 MK 8051 属于 C15C 类型。

然而,尽管这些概念被广泛使用,但必须认识到,名称本身并不能反映 CISC 和 RISC 命令系统之间的主要区别。 RISC架构的主要思想是仔细选择可以在时钟发生器的一个周期内执行的操作代码的组合。 这种方法的主要好处是大大简化了 CPU 的硬件实现,并能够显着提高其性能。

最初,只能通过显着减少指令集来实现这种方法,因此 RISC 这个名称诞生了。 例如,Microchir PIC系列的MK指令集仅包括35条指令,可以归类为RISC。 显然,一般情况下,RISC架构的多条指令必须对应CISC架构的一条指令。 然而,RISC 架构带来的性能提升通常超过效率较低的指令集带来的损失,从而导致 RISC 系统整体效率比 CISC 更高。 所以。 最快的命令 MK 8051 在 12 个周期内执行。 即使每条指令需要执行三个 RISC 控制器指令,最终 RISC 架构也将提供四倍的性能提升。

在此过程中,RISC 架构可以帮助您解决许多任务。 事实上,随着CPU的简化,其实现所需的晶体管数量减少,因此晶体的面积也减少。 这导致成本和功耗的降低。

至此,人们可以惊叹:未来属于RISC架构! 然而,这两个概念之间的界限正在迅速模糊。 例如。 Atmel的AVR系列MCU具有120条指令的指令集,对应CISC类型。 然而,它们中的大多数都是在一个周期内执行的,这是 RISC 架构的一个标志。 如今,人们普遍认为RISC架构的主要特征是在时钟发生器的一个周期内执行指令。 命令本身的数量不再重要。

时钟发生器生成脉冲以同步设备所有节点的操作。 它们的重复频率可以通过石英谐振器或连接到 MK 输出的 RC 电路来设置。 在某些 MK 中,无需使用外部元件即可提供时钟发生器操作模式。 在这种情况下,时钟脉冲的频率取决于晶体的参数,这些参数在其生产过程中确定。

ROM是一种只读存储设备,设计用于存储程序,因此这种存储器通常称为代码或程序存储器。 直到最近,ROM 有两种主要类型:屏蔽型和可编程型。

在 MC 的制造过程中,使用技术模板(掩模)将信息输入到掩模 ROM 中。 生产周期结束后不能更改。

此类 ROM 仅在程序质量不容置疑且对该特定程序大量需要 MK 的情况下使用。 掩膜ROM的优点是批量生产(几千片)成本最低。

可编程 ROM 信息是使用称为编程器的设备写入的。 具有此类ROM的MK有两种类型:一次可编程和可重复编程(可重新编程)。 第一种,顾名思义,只允许一次性编程,之后就不再可能擦除信息(带有 OTP 存储器的 MK - 来自英语。一次性编程)。 它们用于小规模生产(最多 1000 件)。 当使用掩模 MK 在经济上不合理时。

可重复编程的微电路分为配备有可通过紫外线照射擦除的ROM的MK(可在带有“窗口”的封装中提供)和配备有电可重新编程存储器的MK。 采用紫外线照射擦除的 ROM 的 MC 的缺点是成本非常高,并且写入/擦除周期数相对较少(取决于晶体照射的总剂量,通常不超过 15 ... 20)

目前,一种用于ROM实现的新技术正在变得越来越流行——闪存。 其主要优点是它是建立在电气可重编程性原理之上的。 即,它允许使用程序员多次擦除和记录信息。 最小保证的写入/擦除周期数通常超过数千。 这显着延长了 MC 系统的生命周期并提高了灵活性。 因为它允许您在系统开发阶段和在实际设备中运行期间对 MC 程序进行更改。

RAM是用于存储数据的随机存取存储器,因此这种存储器也称为数据存储器。 RAM中的读写周期数量不受限制,但当电源电压关闭时,所有信息都会丢失。

MK 8051 的架构涉及程序和数据存储器的单独使用,被称为哈佛。 通常,这种架构用于通过分离程序和数据存储器访问路径来提高系统性能,但在8051中,它用于实现不需要相同大小的程序和数据存储器。 哈佛的对立面 - 冯诺依曼架构 - 涉及在共享内存中存储程序和数据,并且最典型地用于设计用于计算机的微处理器。 x86 系列微处理器就是一个例子。

定时器T1、T32是十六位可编程定时器/计数器,可以通过编程来执行各种功能。 它们可用于精确形成时间间隔、对 MK 输出上的脉冲进行计数、形成脉冲序列、为串行通信通道的收发器提供时钟。 定时器/计数器能够生成中断请求,切换 CPU 来为它们提供事件服务,并使其无需定期轮询定时器的状态。 由于MK的主要应用是在实时系统中,因此定时器/计数器是其不可或缺的元素。 在某些修改中,定时器的数量达到XNUMX个。

串口是MK与外界进行信息交换的通道。 这种通信通道占用最少数量的晶体引脚,以最小的硬件成本提供远距离通信。 8051 实现了支持 RS-232C 标准协议的通用异步串行收发器 (UART),从而可以组织该 MK 与个人计算机之间的通信。 除了 RS-232C 之外,嵌入式系统领域最流行的协议是 RS-485。 I2C(两线双向总线)。 SPI(XNUMX 线串行外设接口)。 Bitbus(串行控制总线)、CAN(控制器间网络接口)、USB(通用串行总线)等。 对于几乎任何类型的串行通道,今天您都可以找到在其组成中具有相应串行端口的 MK。

并行 I/O 端口也是任何 MCU 的重要组成部分。 通常它们用于与周围环境(传感器和执行器)进行通信。

MK 并行端口的一个重要特性是能够通过编程来执行多种功能。 例如,在8051上,端口引脚P0和P2既可以用作普通静态I/O寄存器,也可以用作连接外部设备(例如附加程序存储器、数据存储器、I/O设备)的地址和数据总线。 这赋予了 MK 架构灵活性。 RXNUMX 端口既可以用作静态 I/O 寄存器,也可以执行串行通道、定时器、中断控制器等操作的特殊功能。可重编程性允许您在设计的设备中使用 MC 的所有输出以最高效率。

中断系统是MK最重要的部分之一。 实时系统的一个特点是,对它们来说一个极其重要的参数是对外部事件的响应时间。 让我们用一个简单的例子来解释一下。 当您在计算机上进行数学计算时,通常会运行一个旨在执行这些计算的程序,并将其加载到计算机内存中后,输入问题陈述并等待结果。 在这种情况下,等待时间并不是最重要的(当然,在合理范围内) - 计算机运行缓慢可能会令人烦恼,但这不会影响结果。 实时系统假设控制系统对外部事件的响应速度非常具体,在开发阶段就进行了计算。 超出计算范围的延迟在这里是完全不可接受的——它们可能会导致灾难性的后果。

通过组织中断系统来解决对事件的快速响应问题。 这意味着对于每个此类事件,都会开发一个单独的“片段”代码,从而形成 MK 对此的反应。 这段代码称为中断请求例程(术语中断例程通常用于简洁),并放置在程序存储器中的已知地址处。 当给定事件发生时,有关该事件的信号被发送到中断控制器的输入。 后者是在有关已发生的事件的输入信号和来自该事件的中断请求处理例程的入口点所在的程序存储器地址之间建立一一对应的设备。 控制器中断CPU当前程序的执行,并开始转换到中断服务程序的执行。 从事件发生到开始执行中断例程第一条指令所经过的时间称为 MC 对事件的响应时间。 处理完成后,CPU自动返回执行被中断的程序。

中断控制器的另一个功能是确定事件的优先级。 优先级的概念意味着正在运行的中断例程只能被另一个事件中断,前提是该事件的优先级高于当前中断例程。 否则,CPU 在处理完前一个事件后将继续处理新的事件。 中断控制器是 MK 8051 的一部分,有五个事件输入:两个来自外部设备,两个来自定时器,一个来自串行通道。

通常,当他们谈论任何MK时,他们总是会提到它所属的家族。 一个系列包括具有相同核心的产品,可以理解为一组概念,例如指令系统、CPU操作时序图、程序存储器和数据存储器的组织、中断系统以及一组基本外围设备。 事实上,如图所示。 图 1 显示了成为创建 8051 系列数百个其他修改的基础的核心。

其各种代表之间的差异主要在于外围设备的构成以及程序或数据存储器的数量。 由于 MK 解决了一系列任务。 由于范围极其广泛,制造商正试图发布尽可能多的修改以满足最多样化的消费者需求。 在很多家族中,修改的数量接近一百甚至超过这个值。

该系列最重要的特点是其中包含的所有 MK 的二进制代码级别的软件兼容性。 这使得系统开发人员可以用其他微控制器替换一个系列的微控制器,而不会丢失他们的软件开发成果。 当然,家族中包含的品种数量越多,选择最佳选项的可能性就越大,这个家族对开发商的吸引力就越大。 为新的开发正确选择MC系列的问题是一个战略问题,因为在不同系列的产品之间转移软件的问题非常复杂,甚至使用高级语言也并不总是能够解决就不会造成太大的损失。 我们将在本系列的后续文章中回到选择标准问题。

程序开发是创建基于 MK 的设备的最重要阶段之一。 没有它,他就“死了”,不对外界影响做出反应,也不发出控制信号。

当电源打开时,MCU立即开始执行位于与其连接的程序存储器(通常是ROM)中的程序。 它的执行从某个固定地址开始,通常是零。 地址只是一个 ROM 单元编号。执行过程如下:MCU 读取程序存储器中存储的编号,并根据其值(称为机器代码)对 ALU 寄存器的内容执行某些操作。 例如,从程序存储器中读取数字32H。 MK“理解”您需要从2号输入端口读取值并将其放入累加器寄存器中。 通常一个字节不足以描述该操作,然后 MK 从内存中读取额外的字节。

执行完动作后,MK 按顺序从下一个存储单元读取值,等等。描述 MK 执行的一个动作的字节集称为机器命令(指令),MK “明白”。 - 其命令系统或指令集(Instruction Set)。 不同家族的MK具有不同的命令系统,即它们的机器代码具有不同的含义,尽管它们执行相似的动作。

因此,MK 的程序是一个数字序列,其值指示它要执行什么操作。 开发程序的结果是包含这些机器代码的计算机文件。 在 ROM 编程器的帮助下,它被输入(“缝合”)到 MK 程序存储器中。

这一系列机器代码是如何组成的——MK的程序? 开发者真的需要记住机器码的值并手动设置它们的顺序吗? MK 的第一个程序就是以这种方式创建的。 这被称为机器代码编程。 显然,这种开发程序的方式非常耗时且效率低下。

促进程序创建过程的第一步是计算机程序——所谓的汇编语言翻译器。 这个想法是用一种更人类可读的语言来表达 MK 执行的动作,然后将这些表达式转换为机器代码。 在上面读取端口 2 的值并将其放入累加器的机器指令示例中,所采取的操作可以粗略地表示为 MOV A.P2。

这里 MOV(来自英文 move)这个词,称为指令助记符,表示值的传送,而 A 和 P2 称为操作数,表示从哪里获取值以及将值放在哪里。 这种表示法称为汇编语言。 程序写在上面。 由将汇编语言结构转换为机器代码的翻译器进行处理。

汇编语言编程至今仍很普遍。 所有流行微控制器系列的汇编语言翻译器都是免费的。

尽管用汇编程序编程比用机器代码编程具有明显的优势,但在许多情况下,汇编程序的效率不足以实现开发人员的任务。 事实上,MK 只能执行最简单的操作,如整数算术运算、传输、比较等。对于更复杂的任务,例如浮点数运算,开发人员必须编写特殊的例程,这不方便使用起来又麻烦。 MK 程序开发的下一步是创建特殊的计算机程序 - 高级编程语言的翻译器或编译器。 使用最广泛的编程语言是 C。

随着翻译器的出现,MK 程序的开发已大大简化。 例如,如果您需要在程序中将两个数字相加,那么现在只需编写 a = b + c 就足够了。 翻译器根据变量 a、b 和 c 的类型将该表达式转换为必要的机器指令序列。

高级语言的使用允许开发人员从特定微控制器的命令系统中抽象出来,并使用更简单、更容易理解的类别进行操作。 开发人员只需要了解微控制器的总体架构即可。 解决任务所需的嵌入式外围设备的操作原理和C语言编程技巧。 程序的功能内容是使用C语言工具实现的。 其中包含大量各种子例程(函数):算术、用于处理字符串以及许多其他子例程。

考虑用 C 语言为 MK 创建程序的过程。 开发过程需要一台个人计算机。

了解任务后,开发人员可以使用任何文本编辑器以 C 语言编写其程序的源代码。 然后它运行 C 翻译程序。 它将源文本转换为中间目标文件。 转换器由在其命令行上指定的一组键控制(它们的描述可以在其文档中找到)。 如果开发人员在编写程序时出现语法错误,翻译器会在屏幕上显示语法错误列表,并指示源文本文件中的每个行号。 开发人员必须修复所有错误。 翻译成功后,目标文件必须经过链接器(linker)处理,生成机器代码的程序文件。

使用高级语言时存在一个问题。 编译器负责将语言结构转换为机器代码,并且这种转换可以以不同程度的效率执行。 效率标准是机器代码的大小(当然越小越好)和机器代码的速度。 生成紧凑且快速的代码的任务非常困难,编译器的整体质量取决于其解决方案。 现代C编译器使用多级优化、特定MK的体系结构特征,允许您创建混合程序,其中一些子例程是用汇编程序编写的。

所描述的过程看起来相当繁琐:开发人员必须手动启动各种程序(文本编辑器、C编译器、链接器来记住控制键、通过文件中的行号搜索程序中的错误。方便开发人员工作的最新步骤MK的程序出现了集成环境开发(Integrated Development Environment. IDE)。集成开发环境是一种将程序开发的各个阶段链接在一起的计算机程序。它结合了用于编写源代码的文本编辑器、汇编器和编译器C、链接器、调试器、MK 的参考信息以及开发人员所需的其他工具。翻译器、链接器和其他组件的配置不是通过在命令行上指定开关来执行的,而是以对话框的形式执行,您只需要勾选正确位置的复选框。

集成软件开发环境的出现进一步提高了MC创建程序的效率,使开发人员能够专注于所解决问题的本质,并从其实现的具体细节中抽象出来。

集成软件开发包由多家公司生产。 不同制造商的软件包功能相似,但在服务能力、易用性和生成的机器代码质量方面有所不同。

最流行的开发套件的主要特性如表所示。

适合初学者及以上的微控制器
(点击放大)

MK 程序的符号调试

除了极少数例外,MK 程序由于包含错误,第一次不会开始工作,需要调试。 开发人员以不同的方式处理调试问题。 他们中的一些人认为,仔细分析源文本,用示波器查看 MK 输出上发生的情况就足够了,并且可以纠正所有错误。 如果开发人员具有丰富的经验,完全了解所使用的 MK,并且拥有始终生成正确代码的翻译器(通常是汇编程序),并且有足够的时间,则可以使用此方法。

其他人在实践中使用自制的调试监视器 - 与主程序一起加载到 MK 中的一组特殊子例程。 后者在检查点调用监控子例程,它们提供有关 MK 资源状态的信息。 几乎任何程序都可以通过这种方式进行调试,但它也有很大的缺点。 首先,调试监视器必须提供一部分MC资源来工作:至少一部分代码地址空间和一定数量的堆栈单元,最多还有一部分RAM和外设MC 的设备。 监视器用来显示信息。 如果主程序本身正在主动加载 MK,则可能很难为调试监视器分配资源。 例如,PIC 16С5х (Microchip) MK只有两个堆栈单元,很难使用调试监控子程序调用。 其次,监视器调用需要主程序的时间,因此不能从程序的时间关键部分调用它。 第三,创建调试监视器本身需要时间。

MK调试程序最有效的方法是使用专门的专业调试工具,包括模拟器调试器和在线仿真器。

在讨论此类调试器提供的可能性之前,有必要先讨论编译器的选择,借助编译器将程序的源文本转换为机器代码。 在绝大多数情况下,最好使用高级语言进行编程。 如果对生成代码的大小和速度有非常严格的要求,则必须使用汇编程序。 目前,这种情况越来越少,因为您几乎总是可以使用具有更多内存的“更快”MK。 此外,现代的交叉工具包使编写混合程序变得容易,其中一些模块是用 C 编写的。 对性能最关键的部分是在汇编器中。 C 编译器还允许将汇编指令插入源代码中。

与汇编程序相比,C 语言编程有哪些优点? 简而言之,它们如下:

  • 无需担心大容量数量的操作。 编译器会自动生成a+b操作的正确代码。 如果a和b是8位、16位、32位数字、浮点数、以及不同类型的偶数;
  • 编译器附带了一个广泛的函数库(子例程),可实现各种数学运算(三角函数、幂运算等)。 处理字符串、格式化输入/输出等;
  • 许多程序员的错误是由编译器诊断的:例如,它不允许您将错误数量的参数或错误类型的参数传递给函数,忘记放置 return 语句等;
  • 用C编写的源代码更容易阅读,更紧凑,更容易修改;
  • 用 C 编写的程序。 更容易转移到其他家庭的 MK。

为了有效地调试用高级语言编写的程序,开发人员必须拥有可供使用的调试工具,这些工具为显示程序中使用的数据以及从源代码跟踪程序的执行提供了足够的机会。 要实现这一点,必须具备两个条件:

  • 编译器必须提供有关程序结构及其使用的数据的足够信息。 这些信息称为符号(调试);
  • 调试器必须能够解释此信息。 所有现代编译器和汇编器都以一种或另一种形式生成符号信息,但尚未开发出通用格式,并且每个编译器都以自己的格式生成符号信息。 这给必须能够“理解”多种字符格式的调试器带来了额外的困难。

现在让我们考虑调试器应如何解释符号信息以及应向用户提供与此相关的哪些选项。

根据源文本跟踪程序的执行

一般来说,一行源文本被编译器转换为多条机器指令。 即使汇编程序也几乎总是包含在翻译时扩展为多个处理器指令的宏。 使用代码的反汇编程序来调试这样的程序很不方便,因此编译器将行号表插入到调试信息中。 它包含有关源文本行号和源文本文件名与程序代码的绝对地址的对应关系的信息。 调试器在屏幕上显示程序的源代码。 按照这个表,它可以“一行一行”执行程序,一步执行编译器为当前行生成的所有机器指令。

行号表还允许您对程序文本执行上下文操作,例如“执行到光标”,即执行到源文本中用户指定的位置、在指定行上设置断点等。很方便,因为开发人员不需要知道与源文本行相对应的地址:调试器本身将从表中确定它们。 调试器还必须“知道”子例程、函数和代码标签的地址,并能够通过函数名称找到函数的源文本。

显示您调试的程序中使用的数据

为了进行全面的调试,开发人员需要能够随时查看程序操作的数据。 调试器必须“能够”以最合适的方式显示程序使用的任何数据。

通常,开发人员在程序中使用命名数据,即为程序中使用的每个对象指定一个名称。 对象可以具有不同的复杂性——从简单的内存单元到高级语言的复杂结构,例如结构体、数组等。

装配程序中的数据

汇编程序主要使用简单的数据,即存储单元。 也使用数组。 为了正确显示简单数据,调试器需要“知道”:

  • 对象名称:
  • 对象在内存中的地址;
  • 对象所在的MK地址空间。 许多微控制器具有多个数据区。 例如,MCS-51系列有一个内部数据存储器、一个外部数据存储器和一个位空间;
  • 对象的位数,即它占用的字节数。 16 位微控制器,例如 MCS-96 系列的成员,“知道如何”操作 8 位。 16-。 32 位数据。 这里必须注意一个重要的点。 对于开发人员来说,对象的逻辑大小是多少很重要。 例如,PIC系列(Microchip)的八位MK仅操作字节。 例如,如果程序中需要有一个16位计数器,则必须单独操作每个字节。 但在调试时,程序员希望看到的不是单独的计数器的每个字节,而是以 16 位变量的形式同时看到两个字节。 流行的交叉汇编器不提供这样的机会。 Fiton 的 PASM-PIC 交叉汇编器是个例外,它允许您在程序数据中声明字节、字、双字以及此类对象的数组的大小。 调试用 PASM-PIC 编写的程序时。 所有对象都以与其逻辑尺寸和结构相对应的形式显示;
  • 对象的范围。 如果程序由多个模块组成,程序员就有机会在一个模块内本地化名称的范围。 因此,在不同的模块中可以存在具有相同名称但其他属性不同的对象。 调试器需要“找出”哪个对象是活动的并正确显示它。 但请注意,在不同模块中使用相同名称的做法通常会导致混乱和错误。 如果该对象被声明为全局(PUBLIC)并且在所有模块中都可见,则解释起来没有困难。

有了上述信息,调试器应该在从用户接收到对象的名称后,根据类型显示其值。 最“高级”的调试器还可以显示对象的其余属性。

高级语言程序中的数据

由于对象结构、它们在内存中存储的方式以及作用域的多样性,显示高级语言中使用的对象要困难得多。 例如,我们将使用最受开发人员欢迎的 C 语言。

对象的结构

除了不同长度的简单变量外,C 程序还使用浮点变量、结构体(struct)、联合或并集(union)、指针、一维和多维数组。 后者可以由简单对象和复杂对象(结构、联合、指针)组成。

在程序中使用复杂对象当然很方便。 然而,由于其结构的复杂性,非常希望能够在调试阶段充分地显示它。 在Fiton的调试器中,复杂对象可以以压缩(元素值列表)和扩展形式显示,指示每个数组元素和/或结构成员的地址、值和类型。 不同编译器中指针的实现是不同的。 MK 通常具有多个地址空间的事实会产生额外的困难,因为在使用指针时,除了地址之外,还必须知道指针指向的地址空间。 在某些实现中,地址空间标识符是指针值的一部分;在其他实现中,编译器提前“知道”这一点并生成适当的代码。

此外,指针中的地址部分的大小可以是 8 到 32 位。 当显示指针值时,调试器必须“知道”它们在每个编译器中实现的所有细节。

内存中对象的定位方法

在用高级语言编写的程序中,除了地址在程序执行过程中不会改变的静态对象外,还可能存在所谓的自动对象,其内存临时分配在MK堆栈中。 此类对象的地址不是绝对的,而是在程序执行阶段动态确定的。 它们通常是根据称为堆栈帧指针(基指针或 BP)的某个静态变量的当前值来测量的。 由于BP的值是由程序在运行时动态生成的,因此自动对象的值仅在其范围内可用,即具有有效的BP值。 调试器在显示自动对象的值时,必须“知道”地址的确定方式,以及监控BP值的正确性

也可以将变量临时放置在 MK 寄存器中。 在这种情况下,调试器必须“知道”哪些变量被放置在哪些寄存器中以及放置多长时间。 最后,经常会出现这样的情况:同一个对象在其生命周期内会多次更改其在内存中的放置方式。 例如,当函数接收寄存器中的一个或多个参数,然后将它们压入堆栈时,就会发生这种情况。

目标视野

与汇编程序一样,C 程序具有可从任何模块通过名称访问的全局对象,以及模块中本地化的对象(这些对象被声明为静态)。 然而,自动变量和寄存器变量使调试器更难显示它们的值。 事实是这样的。 首先,自动对象的生命周期受到其范围的限制,其次,封闭范围可以拥有自己的同名自动对象。 让我们用一个具有多个嵌套作用域的函数示例来说明这一点:

适合初学者及以上的微控制器

只要函数 f 正在执行,名为“a”的变量就存在,但根据正在执行函数的哪一部分,名称“a”代表不同的变量。 当跟踪函数 f 时,调试器必须根据哪个变量处于活动状态,正确显示其值。

创建程序时,开发人员并不关心他在程序中使用的概念的实现细节。 就“理所当然”的类别而言,他常常不会怀疑编译器和调试器的开发人员实现它们有多么困难。 后者必须解决在一个 shell 中同时结合简单直观的界面、丰富的功能以及对与特定 MK 的架构特征和功能的实现相关的所有内容的详细研究的问题。 如果调试器没有为开发人员提供足以满足所解决问题的复杂性的调试工具,那么开发人员将不可避免地损失生产力。 我们当中谁没有花费数小时和数天的时间来寻找源文本中令人讨厌的错误或拼写错误?!

在开发和创建微处理器系统的过程中,迟早有一天它最终体现在硬件中并开始显示出生命的迹象。 然而,在大多数情况下,这些迹象是不可预测的,系统开始过自己的生活。 许多程序员可能会同意每个新程序都包含错误。 这就是为什么新 MK 起初表现得像一个“黑”盒子的部分原因。

为了促进调试系统的过程,开发了一整类工具。 它们的主要目的是使被调试的MK的运行过程“透明”,即易于控制,可以按照开发者的意愿任意控制和修改。 一个好的专业工具包还可以为开发者提供很多服务,从而大大方便他的工作,省去常规操作。

主要的调试工具包括在线仿真器、软件仿真器、开发板(评估板)、调试监视器和ROM仿真器。 还有组合装置和套件。

在线仿真器

在线仿真器 (ICE) 是一种硬件软件工具,可以替代真实设备中的仿真处理器。 VSE 是最强大、最通用的调试工具。

从功能上讲,VE 分为连接到外部计算机(通常是 IBM 兼容 PC)和自主运行的 VE。 后者拥有自己的计算资源和输入/输出设施,因此在同等能力下,它们比前者昂贵得多,而在同等价格下,它们在功能和服务能力方面明显逊色于前者。

在系统调试时,VSE通常通过电缆连接到特殊的仿真头。 最近,出现了 VSE 模型,其中这种头在结构上与主单元结合在一起,并代替 MC 插入到正在调试的系统中。 如果后者无法移除(引脚焊接到电路板上),则允许使用 VSE,前提是该 MC 具有所有引脚均处于第三(高阻抗)状态的调试模式。 在这种情况下,为了连接 VSE,需要使用特殊的夹子适配器,该适配器直接连接到仿真 MK 的输出。

至少。 VSE包含一个调试器、一个MK仿真节点。 仿真内存和断点子系统。 更高级的 TSE 可能还包括跟踪器、断点处理器、分析器(程序代码效率分析器)、实时计时器、软件和硬件工具,允许您“即时”读取和修改模拟处理器的资源,提供同步管理和多处理器系统仿真所需的软件和硬件工具,集成开发环境。

调试器是开发人员和调试工具之间的一种桥梁。 一个好的调试器可以确保正在调试的程序被加载到系统内存中,所有寄存器和内存的状态和内容(以及,如果需要,它们的修改)显示在监视器上,并且仿真过程受到控制。

更强大的调试器(通常称为高级或高级调试器)也允许这样做。

  • 进行符号调试(因为调试器使用编译器提供的特殊信息“知道”所有符号变量、数组和结构的地址)。 在这种情况下,用户可以使用更容易被人接受的符号名称进行操作,而无需费心去记住他们的地址;
  • 不仅可以控制和分析反汇编的文本,还可以控制和分析用高级语言编写的程序的源代码,甚至带有自己的注释。

这样的调试器允许用户同时控制程序的进度并查看源文本、机器代码中的程序映像以及仿真微控制器的所有资源的状态之间的对应关系。

应该注意的是,只有使用提供完整且正确的调试信息的交叉编译器时,高级调试器才能提供其所有功能的性能(并非所有编译器,尤其是其盗版版本都能够做到这一点),并且在同时其呈现的格式对于调试器来说是“熟悉的”。

调试过程中使用仿真存储器代替正在开发的系统的ROM。 此外,它允许您在没有真实系统或其布局的情况下调试程序。 如果需要对正在调试的程序进行更改,只需将新的或修改的程序加载到仿真器的内存中就足够了,而不需要对 ROM 重新编程。

有VSE。 它允许用户不仅可以整体“替换”仿真存储器,还可以逐块“替换”仿真存储器(在某些型号中,最小块大小为 1 字节)。 按照用户指定的顺序。 为此,他只需设置数据存储器和程序存储器的分配,处理器将根据该分配来访问正在调试的系统中的ROM的内容和TSE的仿真存储器的内容。这种存储器通常称为具有映射可能性的存储器。

跟踪器是一种逻辑分析仪,与处理器同步工作,捕获正在执行的指令流和所选外部信号的状态。 有些 VSE 不仅可以跟踪外部信号,还可以跟踪 MC 内部资源的状态。 例如寄存器。 在此类设备中,使用特殊版本的 MK(仿真晶体)。

断点处理器可以在满足用户指定的条件时停止程序执行或执行其他操作(例如,启动或停止跟踪器),与通常的断点机制不同,该处理器允许您形成和跟踪几乎任何硬件级别的复杂性,而模拟过程并不是从实时规模推导出来的。 在某些 VSE 模型中,可以选择使用断点处理器来动态控制跟踪器。

探查器(程序代码效率分析器)允许根据运行被调试程序的结果,获取有关程序各个部分的调用次数以及执行所花费的时间的信息。 对探查器提供的统计信息的分析可以识别程序的“死”或压力过大的部分,从而优化正在调试的程序的结构。

集成开发环境是一组软件工具,支持从编写程序源代码到编译和调试程序的所有软件开发阶段,并提供与软件调试器模拟器和程序员的简单快速的交互。

VSE软件外壳中内置的编辑器、项目管理器和控制系统极大地方便了开发人员的工作,使他免于许多日常操作。 对他来说,编写程序、编辑程序和调试之间的界限是模糊的。 从源文本编辑到调试的转换以及反之亦然的转换是“透明地”进行的,并且与相应窗口的激活同步。 项目管理器根据需要自动开始编译并激活相应的程序界面窗口。 您可以使用现有的模拟器调试器轻松地继续调试项目,或者开始使用已调试的程序刷新 ROM。

一些 ITU 为用户提供其他附加功能。 其中,应该特别注意一个,虽然非常具体,但在某些情况下具有根本重要性,即构建调试多处理器系统所需的多仿真器复合体的能力。这种复合体的一个显着特征是同步控制(从一台计算机)的几个模拟器。

在一般情况下,TSE 控制和管理被调试设备功能的能力可能会受到限制(例如,单步模式下的错误中断处理、禁止使用串行端口等)。 还必须记住,每个 VSE 型号都有自己的受支持微控制器和编译器列表。

然而,对于大多数流行的微控制器,VSE 已经开发出来,对调试晶体资源的使用没有限制。 我们将以Fiton公司的PICE-51模型为例来说明这种ESS的可能性。

PICE-51 是使用可编程逻辑 IC (FPGA) 创建的设备。 这使得可以大幅减小 VSE 的尺寸,最大限度地减少其电气和频率特性与仿真 MC 特性的偏差,从而在 33 至 3,3 V 的电源电压下,在高达 5 MHz 的频率下实现最大仿真精度R╡SE-51 的可重载硬件结构提供了对 MCS-51 系列几乎所有 MK 的仿真。 软件支持在 Windows 环境下运行。

PICE-51 由主板、适用于特定 MK 组的可更换适配器和也适用于特定机箱类型的可更换仿真头组成。 主板上组装有跟踪器和断点处理器,可更换转接板上安装有针对特定类型MK的仿真处理器。 仿真头允许设备安装在用户板上的 DIP 和 PLCC 插座中。 电源由输出电压为 +5 V (0,5 A) 的模块或正在调试的设备提供。 与计算机的通信通过电隔离的 RS-232C 通道以 115 kbaud 的速度进行。

PICE-51 的其他特性和功能如下:

  • 准确的模拟——用户程序对MK资源的使用没有任何限制;
  • 高达 256 KB 的模拟程序和数据存储器。 支持存储内存模型。 ESS和用户设备之间的内存分配精度为1字节;
  • 高达 512K 的硬件断点用于程序和数据存储器访问,
  • 对高级语言调试程序的硬件支持;
  • 跟踪八个任意外部信号;
  • 四个用户设备同步输出;
  • 实时跟踪器,具有 16 位 64 至 64K 帧(数组)的缓冲区,可即时访问。 跟踪地址、数据、控制信号、实时定时器和八个外部用户信号;
  • 可编程跟踪滤波器;
  • 硬件断点处理器,能够通过地址、数据、控制、八个外部信号、实时定时器、事件计数器和延迟定时器的组合来设置复杂的仿真停止条件:
  • 四个复杂的断点,可以独立使用或组合用于 AND / OR / IF-THEN 条件;
  • 48位实时定时器;
  • “透明”仿真——“即时”访问仿真内存、断点、断点处理器、跟踪缓冲区、实时计时器;
  • 用于模拟 MK 的受控时钟发生器。 能够从 500 kHz 平滑地改变到 40 MHz;
  • VSE设备内置自诊断系统。 支持宏汇编程序 МСА-51(“Fiton”/“Microcosm”)项目管理级别的程序开发,以及 Keil Software 和 IAR Systems 的交叉工具包的开发;
  • 支持对使用以下编译器创建的程序进行全功能符号调试:来自 Intel 的 ASM51 汇编器、来自 Intel 的 PL/M 编译器、来自 Avocet Systems 的汇编器和 C 编译器。 高科技。 任务分配软件;
  • 自动保存和加载硬件配置文件、接口和调试选项。 确保配置文件与PDS-51模拟器的兼容性以及PICE-51和PDS-51模拟器之间项目的可移植性;
  • 能够同时为所有窗口和单独为每个窗口自定义颜色、字体和其他设置。

如此广泛的功能使 VSE 成为最强大、最通用的调试工具。

模拟器

Simulator - 一个可以模拟MK及其内存操作的软件工具。 通常,它由调试器、CPU 模型和内存组成。 更高级的设备包含内置外围设备的模型(定时器、端口、ADC 和中断系统)。

模拟器应该“能够”加载所有流行格式的程序文件,尽可能完整地显示有关模拟微控制器资源状态的信息。 并且还提供了在各种模式下模拟加载程序执行的机会。 调试时,模型运行程序,计算机显示屏上显示模型当前状态。

通过将程序加载到模拟器中。 用户可以以逐步或连续模式运行它,设置条件或无条件断点,控制和自由修改模拟微控制器的存储单元和寄存器的内容。 模拟器可以让您快速检查程序执行的逻辑、算术运算的正确性。

根据所使用的调试器的类别,某些模拟器模型支持程序的高级符号调试。

模拟器还可以包含许多附加的软件工具,例如外部环境接口。 这样一个接口的存在可以让你创建并灵活使用MK外部环境的模型。 根据给定的算法运行并影响被调试的程序。

在实际系统中,MC 通常“参与”从与其连接的外部设备(传感器)读取信息、对其进行处理并向执行器发出控制信号。 为了在简单的模拟器中模拟传感器的操作,您需要手动更改真实系统中传感器所连接的外围设备模型的当前状态。 例如,如果通过串行端口接收字节时,设置了某个标志,并且该字节本身落入某个寄存器,那么这两个操作都必须在模拟器中手动执行。 在某些模型中,这个问题得到了解决:模拟器具有内置工具,用于创建连接到 MK 的外部设备的模型,包括用于信息图形显示的工具。

软件模拟器的一个明显特征是其中加载的程序是在非实时的时间尺度上执行的。 然而,低廉的价格以及即使在没有被调试设备模型的情况下也能进行调试的特点,使得软件模拟器成为一种非常有吸引力的调试工具。 还应该注意的是,有一整类错误只能使用模拟器来检测。

调试监视器

调试监视器是加载到被调试系统内存中的特殊程序。 它强制 MK 除了执行所应用的任务外,还执行调试功能:

  • 将用户应用程序代码加载到无监视器内存中;
  • 设置断点;
  • 实时启动和停止加载的程序;
  • 逐步传递用户程序;
  • 查看、编辑内存和控制寄存器的内容。

监控程序与计算机或无源终端“结合”工作,在计算机或无源终端上进行调试过程的可视化和控制。 这种方法的优点

  • 成本非常低,同时保持实时调试能力,这是主要缺点;
  • 分心MK资源用于调试和通信程序(监视器占用一些内存、中断、串行通道)。 最近出现了几乎不占用MK硬件资源的程序(它们将在“ROM仿真器”部分讨论)。

开发委员会

开发板,或者国外文献中通常所说的评估板(Evaluation Boards)。 - 用于应用系统原型设计的原始构造函数。 近期,多家厂商纷纷推出MK的新车型。 提供和相应的开发板。 通常这是一块印刷电路板,上面安装有 MK 及其正常操作所需的所有元件,以及与计算机的通信系统。 通常,该板提供用于安装正在开发的用户设备的自由空间。 有时还有现成的“接线”用于安装公司推荐的附加设备(ROM、RAM、LCD 显示器、键盘、ADC 等)。 用户修改的板可以有利地用作内置于小型产品(5...20 块)中的单板控制器。

为了方便用户,开发板还配备了基于调试监视器的简单调试工具。 这里出现了两种不同的方法:一种用于 MK。 有外部总线,第二个 - 对于没有外部总线的 MK。

在第一种情况下,调试监视器作为 ROM 芯片提供。 安装在开发板上的专用插座中。 该板还具有用于用户程序的 RAM 以及与计算机或终端的通信通道。 一个例子是 Intel 为 MK MCS-51 系列开发的开发板。

在第二种情况下,开发板包含针对 MK 内部 ROM 的内置编程系统。 由计算机控制。 监控程序与相应准备的应用程序一起输入 MK 的 ROM(监控调试例程的调用插入到正确的位置)。 然后进行试运行。 为了对正在调试的程序进行更正,将其从 ROM 中擦除,并将更正后的程序写入其中。 通过删除监视器及其函数的所有调用,可以从调试后的应用程序中获得最终的应用程序。 PIC-micro (Microchip)、80C750 (Philips)、89C2051 (Atmel) 系列 MK 的开发板就是为此类调试算法而设计的。

开发板有时配备了调试程序,这些程序在与显示器“结合”的外部计算机上运行。 这些程序最近变得明显更加复杂,并且通常具有一组高度专业的调试功能(例如,调试器模拟器)或仅在纯粹形式的集成开发环境中固有的各种元素。 该套件还可能包括实践中最常遇到的应用程序。

“开发板加监控”套件的调试能力不如ESS那么通用。 另外,在调试过程中选择了一些MC资源供监视器工作。 尽管如此,在许多情况下,是否拥有一整套现成的软件和硬件工具是决定性因素,这些工具可以让您立即开始安装和调试应用系统,而不会浪费时间。 特别是当您考虑到此类套件的成本比功能更丰富的模拟器低几倍时。

ROM模拟器

ROM 仿真器是一种软件和硬件工具,可让您用 RAM 替换正在调试的设备的 ROM。 您可以通过标准通信通道之一从计算机下载程序。 它允许用户避免多次刷新 ROM。 ROM 仿真器仅用于调试能够访问外部程序存储器的 MK 程序。 就复杂性和成本而言,该设备与开发板相当。 它有一大优势——多功能性。 ROM 模拟器可以与任何 MK 配合使用。

第一个 ROM 仿真器只允许使用主复位来加载、运行和停止程序。 然后是复杂的模型,在到达某个地址时硬件生成向示波器发送的跟踪信号。 此类产品中的模拟内存可用于查看和修改,但直到最近仍无法控制 MK 的内部控制寄存器。

最近,出现了所谓的智能ROM仿真器。 它们允许你“查看”用户板上MC的内部,并且在调试控制方面与VSE类似。Cactus甚至将其真正智能的ROM仿真器呈现为MK系列的VSE,因此无法区分与使用一个事实上,这种情况下的处理器并没有被更换,而是使用了用户付费的处理器。

智能 ROM 仿真器是普通 ROM 仿真器的混合体。 调试监视器和用于快速将总线从一个总线切换到另一个总线的系统。 这产生的效果就好像调试监视器安装在用户板上一样,同时它实际上不占用 MK 的硬件资源,除了一小部分(大约 4 KB)软件步骤区域之外。 例如,Fiton 公司为所有现有和未来的 MK 开发了这样的仿真器,这些 MK 具有 8051 内核,但还饱和了各种输入/输出设备。 该产品支持飞利浦、西门子等多种不同的MC。 好的。

综合发展环境

严格来说,集成开发环境不属于调试工具,但是,忽视此类软件工具是错误的,因为它们极大地促进和加快了微处理器系统的开发和调试过程。

使用传统方法,编写程序的初始阶段的构造如下。 源文本是使用文本编辑器输入的。 输入完成后,文本编辑器停止工作并启动交叉编译器。 通常,新程序包含语法错误,编译器会将它们报告给操作员控制台。 然后再次启动文本编辑器,操作员查找并消除已识别的错误。 同时,编译器显示的有关其性质的消息不再可见,因为屏幕被文本编辑器占据。

这个循环可能会重复多次。 如果程序相对复杂,由各个部分组装而成,需要进行编辑或现代化,那么即使是这个初始阶段也可能需要程序员投入大量的精力和时间。

为了避免大量的日常工作,从而显着提高程序员的生产力,已经出现并迅速流行起来的所谓的集成开发环境(shell)开发(Integrated Development Environment IDE)允许。

通常,良好的集成环境结合了可用的调试工具(在线仿真器、软件模拟器、编程器),并为编程器提供了“Turbo”风格的程序文本。

集成环境允许:

  • 使用内置的多文件文本编辑器,专门用于处理程序源文本;
  • 同时观察(在多窗口模式下)编译期间检测到的错误的诊断和程序的源文本,可供编辑;
  • 并行处理多个项目。 项目管理器允许您使用任何项目作为新创建项目的模板。 所用编译器的选项和项目源文件列表在对话框菜单中设置并保存在项目中,从而无需使用不方便的批处理文件;
  • 仅重新编译已编辑的模块;
  • 将正在调试的程序加载到可用的调试工具中并在不退出 shell 的情况下使用它们;
  • 连接到几乎任何软件的外壳。

最近,集成开发环境的功能已成为最“先进”仿真器和调试器模拟器的编程接口的一部分。 这些功能与友好的界面相结合,显着加快了程序员的工作速度。

因此,在选择调试工具时,建议考虑以下一组指标:支持的微控制器列表、仿真/模拟微控制器的资源限制、符号调试的可能性、支持的编译器列表,以及,最后是服务能力。

作者:Yu.Zobnin,Sh.Kobakhidze,莫斯科

查看其他文章 部分 微控制器.

读和写 有帮助 对这篇文章的评论.

<< 返回

科技、新电子最新动态:

用于触摸仿真的人造革 15.04.2024

在现代科技世界,距离变得越来越普遍,保持联系和亲密感非常重要。萨尔大学的德国科学家最近在人造皮肤方面的进展代表了虚拟交互的新时代。萨尔大学的德国研究人员开发出了超薄膜,可以远距离传输触觉。这项尖端技术为虚拟通信提供了新的机会,特别是对于那些发现自己远离亲人的人来说。研究人员开发的超薄膜厚度仅为 50 微米,可以融入纺织品中并像第二层皮肤一样穿着。这些薄膜充当传感器,识别来自妈妈或爸爸的触觉信号,并充当将这些动作传递给婴儿的执行器。父母触摸织物会激活传感器,对压力做出反应并使超薄膜变形。这 ... >>

Petgugu全球猫砂 15.04.2024

照顾宠物通常是一项挑战,尤其是在保持房屋清洁方面。 Petgugu Global 初创公司推出了一种有趣的新解决方案,这将使猫主人的生活变得更轻松,并帮助他们保持家中干净整洁。初创公司 Petgugu Global 推出了一款独特的猫厕所,可以自动冲掉粪便,让你的家保持干净清新。这款创新设备配备了各种智能传感器,可以监控宠物的厕所活动并在使用后激活自动清洁。该设备连接到下水道系统,确保有效清除废物,无需业主干预。此外,该厕所还具有较大的可冲水存储容量,非常适合多猫家庭。 Petgugu 猫砂碗专为与水溶性猫砂一起使用而设计,并提供一系列附加功能 ... >>

体贴男人的魅力 14.04.2024

长期以来,女性更喜欢“坏男孩”的刻板印象一直很普遍。然而,英国莫纳什大学科学家最近进行的研究为这个问题提供了新的视角。他们研究了女性如何回应男性的情感责任和帮助他人的意愿。这项研究的结果可能会改变我们对男性对女性吸引力的理解。莫纳什大学科学家进行的一项研究得出了有关男性对女性吸引力的新发现。在实验中,女性看到了男性的照片,并附有关于他们在各种情况下的行为的简短故事,包括他们对遇到无家可归者的反应。一些人无视这名无家可归的人,而另一些人则帮助他,比如给他买食物。一项研究发现,与表现出同理心和善良的男性相比,表现出同理心和善良的男性对女性更具吸引力。 ... >>

来自档案馆的随机新闻

遗传压力 30.10.2015

最近,越来越多的人说,父母的生活方式,他们的生活经历会影响他们的子孙后代。 例如,上一代人必须忍受的饥饿或心理压力会影响下一代的心理和新陈代谢。

两年前,埃默里大学的研究人员在《自然神经科学》杂志上发表了一篇论文,他们在论文中说,受惊的老鼠所生的婴儿害怕与父母害怕的东西相同的东西。 另一个众所周知的例子是,在 1944 年冬天著名的饥荒中幸存下来的荷兰妇女的子孙越来越容易患糖尿病和肥胖症。 (这里,据我们了解,重点不在于荷兰饥荒的具体特征,而在于生物学家和医生关注这一历史情况并试图对其进行调查。)这些观察现在已经积累,我们重复一遍,已经够了,但这里有一个问题:饥饿、心理压力或其他类似的外部影响都不会产生突变,不会改变 DNA 核苷酸序列中表达的遗传密码。 问题是如何继承这一切。

人们认为,这种效应的存在归因于控制基因活性的表观遗传机制。 它们有几种类型,主要是DNA含氮碱基的甲基化、组蛋白(DNA包装蛋白)的修饰和调节RNA的作用。 甲基、修饰的组蛋白和调控 RNA 都可以长时间甚至终生改变某些基因的功能,并且这些机制通常在外部因素的影响下被激活。 此外,根据一些数据,表观遗传变化的性质是可以遗传的。 然而,这究竟是如何发生的——以及它是否会发生——仍然是一个激烈的争论。

为了进入下一代,必须在生殖细胞中保留修饰,但就目前而言,所有实验都表明,在动物中,当生殖细胞成熟时,所有表观遗传标记都会被清除。 但两年前,《科学》杂志发表了一篇文章,称在生殖细胞 DNA 的某些部分,仍然保留了这样的标记(在那篇文章中,我们谈论的是 DNA 甲基化)。 去年,苏黎世大学的专家报告说,一些调控 RNA 可以作为父母给后代压力经历的载体:小鼠承受压力后,海马体和血清中以及精子中都会出现调控分子。 用这种精子受精后获得的幼崽在行为和新陈代谢方面表现出与其父母相同的应激后特征。

一切都表明,至少与调控 RNA 相关的表观遗传设置可以代代相传。 剩下的只是直接确认这些 RNA 与传递效应之间的因果关系。 这是由宾夕法尼亚大学的 Tracy Bale 和她的同事完成的。 迄今为止,他们积累的证据表明,承受压力的雄性后代(无论是持续的白噪声,还是捕食者的气味,或经常限制行动)对这种情况的反应已经较弱,尤其是,在较低水平的应激激素皮质酮中很明显。 另一方面,发现有几种类型的调节性 RNA 在受压力的父系小鼠的精子中积累(更准确地说,它们被称为微调节性微 RNA,因为它们与其他类型的 RNA 相比体积小)。

在 PNAS 的一篇文章中描述的新实验中,研究人员将 miRNA 注射到正常小鼠的受精卵中,然后将它们植入雌性小鼠体内并等待小鼠出现。 随后,他们对压力的反应与直接从受惊的男性出生的人一样减弱。 很明显,这都是外来的microRNA,因为所有的遗传物质都来自普通的父母,他们什么都不怕。

通常 microRNA 会抑制基因的活性。 正如预期的那样,在引入调控 RNA 后,鸡蛋中的一些基因不起作用。 该工作的作者还试图分析下丘脑的状态,下丘脑是一种控制大量生理和行为反应(从睡眠和食物到生殖)的脑腺。 除其他外,皮质酮的水平取决于下丘脑。 事实上,在用 miRNA 处理的受精卵培育的小鼠中,其中的一些基因工作方式不同。 奇怪的是,它们与胶原蛋白和细胞外基质蛋白有关。 这与压力反应的关系并不完全清楚。 结缔组织胶原蛋白和基质蛋白合成的变化可能会影响血液和大脑之间的血脑屏障的通透性,进而影响下丘脑对压力信号的敏感性。

一般来说,在发育的早期阶段遗传活动的变化如何导致对压力的反应变化还有待观察。 微调节 RNA 显然在这里间接起作用:它们的水平不会在细胞分裂后每次都更新,并且在成年小鼠的大脑中,它们的数量变得相当正常。 另一方面,通过哪些分子机制来了解压力会影响精子中的 miRNA,以及在这种情况下下一代精子会发生什么,这将是很有趣的。 最后,压力反应的结构相当复杂,它的不同方面很可能与不同的 RNA 相关。

获得的数据与我们上面谈到的苏黎世小组的结果相当一致:他们还谈到了压力、microRNA和雄性生殖细胞的影响。 顺便说一句,不仅压力,而且肥胖可以通过男性传播,而且似乎只传播给儿子——俄亥俄大学的研究人员几年前报告了这一点(尽管这些实验再次在老鼠身上进行)。 然而请注意,这与任何医学和临床结论相去甚远:我们仍然不知道表观遗传在什么条件下起作用,以及如何在正常、非实验室条件下将“遗传学”与“表观遗传学”区分开来。

其他有趣的新闻:

▪ 电动分频器 Lucid Gravity

▪ XSPC TX 系列超薄散热片

▪ 纳米冷却

▪ 在太空打印肉

▪ 双足猴

科技、新电子资讯

 

免费技术图书馆的有趣材料:

▪ 网站对讲机部分。 文章精选

▪ 文章运动错觉。 视觉错觉百科全书

▪ 文章 谁保持着海洋哺乳动物下潜最深的记录? 详细解答

▪ 文章杜仲。 传说、栽培、使用方法

▪ 文章墨水铅笔。 简单的食谱和技巧

▪ 文章电离层在远程无线电通信中的作用。 无线电电子电气工程百科全书

留下您对本文的评论:

Имя:


电子邮件(可选):


点评:





本页所有语言

主页 | 图书馆 | 用品 | 网站地图 | 网站评论

www.diagram.com.ua

www.diagram.com.ua
2000-2024