导航:首页 > 源码编译 > vpp源码编译

vpp源码编译

发布时间:2022-11-29 21:28:56

A. 智能断路控制器的论文

总线式低压断路器新型智能控制器的研制

引言
智能断路器是一种将计算机技术、数字处理技术和信息技术引入传统开关设备中发展起来的新一代开关电器。智能断路器的控制器是实现智能操作的核心部件,其基本任务是通过对电网参数的采集和处理,给出相应的控制信息。此外,智能控制器通过现场总线可以和计算机连接,实现断路器间的联网通信以及进行远程监控管理。近年来,由于嵌入式系统的使用越来越成熟,其中us/OS-II 嵌入式操作系统由于源代码公开化,内核体积小,可移植性好等原因,受到了广泛的应用。本文采用了TI 公司的DSP 芯片TMS320LF2407A 作为嵌入式系统硬件,设计了低压断路器的智能控制器,同时,将us/OS-II 嵌入式操作系统移植到DSP 芯片中,提高了系统的运行效率和可靠性。现场试验表明,该控制器可靠性高,试验结果达到预期的设计要求,具有广阔的应用前景。
1 us/OS-II 嵌入式操作系统
嵌入式系统是被内部计算机控制并执行专用功能的设备或系统,操作系统以及应用软件都集成于计算机硬件系统之中,即应用软件和系统硬件一体化,嵌入式系统具有软件代码少,高度自动化,响应速度快等特点,特别适合于要求实时性高和多任务处理的情况。
us/OS-II 嵌入式操作系统是一个完整的、源代码公开的、可移植的、固化的、可裁剪的占先式实时多任务内核,它是一种不可剥夺型内核,在任务调度时须预先设定任务的优先级。us/
OS-II 包括以下几个部分:内核管理、任务管理、时间管理、事件控制块、信号量管理、邮箱管理等。
us/OS-II 中创建的任务有5 种状态,分别是:睡眠态、等待态、就绪态、运行态、中断服务态。us/OS-II 是占先式内核,每个任务都要设置优先级,优先级最高的任务可以先进入CPU 运行,其它任务只能先在就绪状态中等待。us/OS-II 最多可以创建多达64 个任务(实际可以使用的是56 个,因为前4 个和后4 个任务优先级被保留做系统升级用)。
2 嵌入式系统的硬件设计
2.1 智能控制器总体结构及工作原理
智能控制器硬件系统的总体结构如图1 所示。该控制器的主要任务是采集电网的电流和电压信号,经过信号采样电路处理后,使信号变换成DSP 的标准输入电压0 到3.3V,DSP 通过对采集信号的分析比较,做出正确的判断,发出动作指令,从而实现线路的过载、短路、接地等故障的保护,并通过Profibus 总线发送和接收监控计算机的相关数据,实现远程监控管理。系统主要有DSP 及其外围电路、A/D 信号采集与处理电路,液晶显示电路,电源,脱扣电路等部分构成。DSP 的外围电路主要包括晶振、滤波回路、片外RAM 和一些门电路。
2.2 TMS320LF2407A 芯片及其开发环境CCS2.2 简介
TMS320LF2407A 是基于控制应用而设计的,它将高性能的DSP 内核和丰富的微控制器外设集成于单片中,从而成为传统的微控制器的理想替代。TMS320LF2407A 控制器的外设包括:
事件管理器、网络接口、A/D 通道模数转换、SPI 串行外设接口、SCI 串行通信接口、通用双向I/O 引脚。CCS2.2 是CCS 系列中的最新版本,有很多既方便又强大的功能。包括:支持同时载入多个工程文件;加强了编译器功能,对语法的检查更加严格;通过建立库工程,支持编译函数文件成为库文件等。
2.3 信号采集电路
本设计采集的信号是四路电流和三路电压信号,电压和电流信号都是经过互感器形成的二次侧感应电压。经滤波隔离放大之后形成适合A/D 转换的电压范围,7 路信号经处理后送到
多路电子开关。由于DSP 本身具有A/D 转换器,所以只需通过DSP 控制电子开关选通所需的各路信号,即可完成对多路信号的采集。
DSP 的A/D 转换精度为2-10,完全能够满足实时采集和高精度要求。设计中利用定时中断方式进行采样,要求每1ms 就在3 路电压和4 路电流信号上各采集一点。
2.4 Profibus-DP总线接口模块
在Profibus-DP总线通信过程中,主站循地读取从站的输入信息并周期地向从站发送输出信息。同时,数据的通信是通过主站和从站的监控功能进行监控的。
本系统选用了5I系列单片机DPC932AI来实现Profibus总线通信。由于单片机LPC932AI上安装有增强型Profibus总线通信。由于单片机通过通过软件来模拟Profibus现声场总线协
议。LPC932AI指令执行时间只需167ms,增强型的UART波特率可以使数据在Profibus-DP总线传输中高达500Kb/s。它允许高述度周期性的数据通信,因此特别适用十对时间要求苛刻的场合。
Profibu-DP接口模块见图2,电路主要由三部分组成:模拟总线协议处理微控制器LPC932AI、高速光电耦合器6N137和RS485收发器SP3485。
了增强Profibus-DP 总线节点的抗干扰能力,LPC932A1的TXD 和RXD 并不是直接与RS-485 收发器SP3485 的TXD和RXD 相连,而是通过高速光电耦合器6N137 后与SP3485 相连,这样能很好地实现总线上各Profibus-DP 节点间的电气隔离。其中光耦部分电路所采用的2 个电源VCC 和VPP 必须完全隔离,虽然增加了节点的复杂性,但是却提高了节点的稳定性和安全性。连接至SP3485 上A 引脚的上拉电阻和连接至B引脚的下拉电阻用于保证无连接时的SP3485 芯片处于空闲状态,提供网络失效保护,以提高RS-485 节点与网络的可靠性。

3 嵌入式系统的软件设计
3.1 us/OS-II 在2407 上的移植us/OS-II 在2407 实现移植是嵌入式系统软件设计的关键所在, 根据嵌入式实时系统的实际需要, 对OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C 文件进行编写,对OS_CFG.H 配置的正确设定,如对最低优先级OS_LOWEST_PRIO、最多任务控制块OS_MAX_EVENTS、最多任务数OS_MAX_TASKS 进行设置,对需要使用的功能进行选择置位。
OSStartHighRdy()控制最高优先级任务的运行,OSCtxSw()用来实现中断服务子程序、陷阱或异常处理程序的任务切换,OSTickISR()用来实现时钟节拍功能。
将各种函数编写好以后,装载入2407 或外部RAM 中,进行成功移植后,即可在此基础上进行嵌入式系统的软件开发。
3.2 智能控制器软件设计
智能控制器系统软件设计主要有两部分:主程序和中断程序,中断程序包括定时器采样中断、延时保护处理中断和通讯中断,其中定时器中断优先级高于通讯中断,以保证定时采集数据并进行相关处理。
软件采用了汇编语言和高级语言混合编制而成,按功能可分为两类:一类是执行软件,完成各种实质性的功能,如测量、计算、显示等;另一类是监控软件,采用了模块化设计技术,便于系统功能扩展和提高程序的可靠性、可维护性,为实现智能控制器的测量、保护、监控和通信等功能,设计了一种多任务操作系统。
主程序流程如图3 所示。其中主要功能如液晶显示、保护算法、滤波算法、有效值计算、通信的发送和接收、键盘输入设置参数等,由于实时性要求不高,用主循环依次实现。对于实时性要求较高的程序,比如A/D 采样转换程序和瞬动保护判断程序,采用了汇编语言编程,这样可以加快相关代码运行的速度,提高系统运行的效率。利用DSP 的A/D 转换器,每隔1 ms 采样1 次,完全可以满足实时性要求,定时采样中断程序流程如图4所示。

智能控制器通过定时采样中断和计算获取主线路的信号,比较是否达到或超过短路瞬时整定值、短延时整定值、过载长延时整定值,作出相应的分断命令
3.3 上位监控软件
设计中,智能断路器与上位机之间的通讯采用多主方式,即网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,目的是使智能节点不仅能响应上位机进行数据传输,而且能够定时或在智能节点出现异常时能够及时主动地向上位机传送相关信息。上位机采用VB 编程实现了以下功能:实时接收智能断路器上传的数据, 包括正常情况下的定时发送和异常情况下的实时发送;随时读取下位智能断路器的数据,即工作人员可从上位监控机上根据需要随时向下位智能节点发送远程帧,索取相关数据;具有在线远程设置相关参数及远程控制断路器的分、合闸。即实现“四遥”功能。
4 试验和总结
设计的样机在企业试验站进行了现场调试、试验,如保护特性的测试、上位机和控制器之间的通信以及液晶显示、测量等,做了大量的运行试验,取得很好的结果。试验表明:设计的
智能控制器实现了测量、保护、通信和监控等功能,实时性好,指标达到预期要求。
本文的创新点在于:基于DSP 的新型智能控制器,不仅运行可靠,实时性强,精度高,电磁兼容性好,而且由于采用了us/OS-II 嵌入式实时操作系统,提高了DSP 的运行效率和控制器的可靠性。同时,本文也为us/OS-IIus/OS-II 嵌入式操作系统在电力系统领域的应用开辟了新的空间。
该样机已通过验收,预计每年可产生经济效益100 万元。

B. CCS2.2中如何测试代码运行效率

总线式低压断路器新型智能控制器的研制

引言
智能断路器是一种将计算机技术、数字处理技术和信息技术引入传统开关设备中发展起来的新一代开关电器。智能断路器的控制器是实现智能操作的核心部件,其基本任务是通过对电网参数的采集和处理,给出相应的控制信息。此外,智能控制器通过现场总线可以和计算机连接,实现断路器间的联网通信以及进行远程监控管理。近年来,由于嵌入式系统的使用越来越成熟,其中us/OS-II 嵌入式操作系统由于源代码公开化,内核体积小,可移植性好等原因,受到了广泛的应用。本文采用了TI 公司的DSP 芯片TMS320LF2407A 作为嵌入式系统硬件,设计了低压断路器的智能控制器,同时,将us/OS-II 嵌入式操作系统移植到DSP 芯片中,提高了系统的运行效率和可靠性。现场试验表明,该控制器可靠性高,试验结果达到预期的设计要求,具有广阔的应用前景。
1 us/OS-II 嵌入式操作系统
嵌入式系统是被内部计算机控制并执行专用功能的设备或系统,操作系统以及应用软件都集成于计算机硬件系统之中,即应用软件和系统硬件一体化,嵌入式系统具有软件代码少,高度自动化,响应速度快等特点,特别适合于要求实时性高和多任务处理的情况。
us/OS-II 嵌入式操作系统是一个完整的、源代码公开的、可移植的、固化的、可裁剪的占先式实时多任务内核,它是一种不可剥夺型内核,在任务调度时须预先设定任务的优先级。us/
OS-II 包括以下几个部分:内核管理、任务管理、时间管理、事件控制块、信号量管理、邮箱管理等。
us/OS-II 中创建的任务有5 种状态,分别是:睡眠态、等待态、就绪态、运行态、中断服务态。us/OS-II 是占先式内核,每个任务都要设置优先级,优先级最高的任务可以先进入CPU 运行,其它任务只能先在就绪状态中等待。us/OS-II 最多可以创建多达64 个任务(实际可以使用的是56 个,因为前4 个和后4 个任务优先级被保留做系统升级用)。
2 嵌入式系统的硬件设计
2.1 智能控制器总体结构及工作原理
智能控制器硬件系统的总体结构如图1 所示。该控制器的主要任务是采集电网的电流和电压信号,经过信号采样电路处理后,使信号变换成DSP 的标准输入电压0 到3.3V,DSP 通过对采集信号的分析比较,做出正确的判断,发出动作指令,从而实现线路的过载、短路、接地等故障的保护,并通过Profibus 总线发送和接收监控计算机的相关数据,实现远程监控管理。系统主要有DSP 及其外围电路、A/D 信号采集与处理电路,液晶显示电路,电源,脱扣电路等部分构成。DSP 的外围电路主要包括晶振、滤波回路、片外RAM 和一些门电路。
2.2 TMS320LF2407A 芯片及其开发环境CCS2.2 简介
TMS320LF2407A 是基于控制应用而设计的,它将高性能的DSP 内核和丰富的微控制器外设集成于单片中,从而成为传统的微控制器的理想替代。TMS320LF2407A 控制器的外设包括:
事件管理器、网络接口、A/D 通道模数转换、SPI 串行外设接口、SCI 串行通信接口、通用双向I/O 引脚。CCS2.2 是CCS 系列中的最新版本,有很多既方便又强大的功能。包括:支持同时载入多个工程文件;加强了编译器功能,对语法的检查更加严格;通过建立库工程,支持编译函数文件成为库文件等。
2.3 信号采集电路
本设计采集的信号是四路电流和三路电压信号,电压和电流信号都是经过互感器形成的二次侧感应电压。经滤波隔离放大之后形成适合A/D 转换的电压范围,7 路信号经处理后送到
多路电子开关。由于DSP 本身具有A/D 转换器,所以只需通过DSP 控制电子开关选通所需的各路信号,即可完成对多路信号的采集。
DSP 的A/D 转换精度为2-10,完全能够满足实时采集和高精度要求。设计中利用定时中断方式进行采样,要求每1ms 就在3 路电压和4 路电流信号上各采集一点。
2.4 Profibus-DP总线接口模块
在Profibus-DP总线通信过程中,主站循地读取从站的输入信息并周期地向从站发送输出信息。同时,数据的通信是通过主站和从站的监控功能进行监控的。
本系统选用了5I系列单片机DPC932AI来实现Profibus总线通信。由于单片机LPC932AI上安装有增强型Profibus总线通信。由于单片机通过通过软件来模拟Profibus现声场总线协
议。LPC932AI指令执行时间只需167ms,增强型的UART波特率可以使数据在Profibus-DP总线传输中高达500Kb/s。它允许高述度周期性的数据通信,因此特别适用十对时间要求苛刻的场合。
Profibu-DP接口模块见图2,电路主要由三部分组成:模拟总线协议处理微控制器LPC932AI、高速光电耦合器6N137和RS485收发器SP3485。
了增强Profibus-DP 总线节点的抗干扰能力,LPC932A1的TXD 和RXD 并不是直接与RS-485 收发器SP3485 的TXD和RXD 相连,而是通过高速光电耦合器6N137 后与SP3485 相连,这样能很好地实现总线上各Profibus-DP 节点间的电气隔离。其中光耦部分电路所采用的2 个电源VCC 和VPP 必须完全隔离,虽然增加了节点的复杂性,但是却提高了节点的稳定性和安全性。连接至SP3485 上A 引脚的上拉电阻和连接至B引脚的下拉电阻用于保证无连接时的SP3485 芯片处于空闲状态,提供网络失效保护,以提高RS-485 节点与网络的可靠性。

3 嵌入式系统的软件设计
3.1 us/OS-II 在2407 上的移植us/OS-II 在2407 实现移植是嵌入式系统软件设计的关键所在, 根据嵌入式实时系统的实际需要, 对OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C 文件进行编写,对OS_CFG.H 配置的正确设定,如对最低优先级OS_LOWEST_PRIO、最多任务控制块OS_MAX_EVENTS、最多任务数OS_MAX_TASKS 进行设置,对需要使用的功能进行选择置位。
OSStartHighRdy()控制最高优先级任务的运行,OSCtxSw()用来实现中断服务子程序、陷阱或异常处理程序的任务切换,OSTickISR()用来实现时钟节拍功能。
将各种函数编写好以后,装载入2407 或外部RAM 中,进行成功移植后,即可在此基础上进行嵌入式系统的软件开发。
3.2 智能控制器软件设计
智能控制器系统软件设计主要有两部分:主程序和中断程序,中断程序包括定时器采样中断、延时保护处理中断和通讯中断,其中定时器中断优先级高于通讯中断,以保证定时采集数据并进行相关处理。
软件采用了汇编语言和高级语言混合编制而成,按功能可分为两类:一类是执行软件,完成各种实质性的功能,如测量、计算、显示等;另一类是监控软件,采用了模块化设计技术,便于系统功能扩展和提高程序的可靠性、可维护性,为实现智能控制器的测量、保护、监控和通信等功能,设计了一种多任务操作系统。
主程序流程如图3 所示。其中主要功能如液晶显示、保护算法、滤波算法、有效值计算、通信的发送和接收、键盘输入设置参数等,由于实时性要求不高,用主循环依次实现。对于实时性要求较高的程序,比如A/D 采样转换程序和瞬动保护判断程序,采用了汇编语言编程,这样可以加快相关代码运行的速度,提高系统运行的效率。利用DSP 的A/D 转换器,每隔1 ms 采样1 次,完全可以满足实时性要求,定时采样中断程序流程如图4所示。

智能控制器通过定时采样中断和计算获取主线路的信号,比较是否达到或超过短路瞬时整定值、短延时整定值、过载长延时整定值,作出相应的分断命令。
3.3 上位监控软件
设计中,智能断路器与上位机之间的通讯采用多主方式,即网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,目的是使智能节点不仅能响应上位机进行数据传输,而且能够定时或在智能节点出现异常时能够及时主动地向上位机传送相关信息。上位机采用VB 编程实现了以下功能:实时接收智能断路器上传的数据, 包括正常情况下的定时发送和异常情况下的实时发送;随时读取下位智能断路器的数据,即工作人员可从上位监控机上根据需要随时向下位智能节点发送远程帧,索取相关数据;具有在线远程设置相关参数及远程控制断路器的分、合闸。即实现“四遥”功能。
4 试验和总结
设计的样机在企业试验站进行了现场调试、试验,如保护特性的测试、上位机和控制器之间的通信以及液晶显示、测量等,做了大量的运行试验,取得很好的结果。试验表明:设计的
智能控制器实现了测量、保护、通信和监控等功能,实时性好,指标达到预期要求。
本文的创新点在于:基于DSP 的新型智能控制器,不仅运行可靠,实时性强,精度高,电磁兼容性好,而且由于采用了us/OS-II 嵌入式实时操作系统,提高了DSP 的运行效率和控制器的可靠性。同时,本文也为us/OS-IIus/OS-II 嵌入式操作系统在电力系统领域的应用开辟了新的空间。
该样机已通过验收,预计每年可产生经济效益100 万元。

C. 编程器是用来干什么的

在硬件上,通用编程器的管脚驱动采用具有各种功能的通用结构,只需更新软件就能支持新的器件,具有很好的灵活性,满足目前和未来的器件需要。 通常通用编程器锁紧座的每一个管脚可以用作时钟信号、数据总线、地址总线、控制总线、地线、电源线、VCCQ电压、VPP编程电压、管脚接触不良测量专用总线等等。驱动电压可以从1.8V-25.0V,起码分256级可调。通用编程器另外一个重要特点是具有管脚接触不良检测功能。平时锁紧座处于悬空状态,放入任何IC都不会因为原有的电压造成短路或者烧坏IC。当进行编程等操作时,通用编程器首先采用独特的专用总线,利用微弱的信号检测管脚接触状况。只有接触良好才施加所需电压,并且判断器件的ID代码,只有ID代码正确后才进行编程操作;如果接触不良,立刻连续图形显示接触不良状况(UP-48系列产品特有的功能),直到接触良好才进行操作。 在图形显示器件接触不良的时候,可以形象的看到器件每一个管脚的接触状况。特别是器件有一些管脚处于接触良好与接触不良之间的状态,如果不用连续的图形显示,例如仅仅一次的数字显示,是不能很好地发现问题的,UP-48遇到这种情况,与管脚相应的图形会不断闪烁,并提示“接触不良”字样。与普通非通用编程器相比,通用编程器具有功能升级方便、适配器通用、速度快等优点。同时通用编程器特有的管脚接触不良检测功能,有效防止了因为器件放反、部分管脚短路、接触不良等原因所造成的损失。

D. vpp源码分析(2) - 入口函数

我们使用: cmake3 --build /mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp
编译了 vpp
在次之前执行了 make install-ext-deps ,DPDK各种库文件已经安装,模块已经安装到了内核,
现在我们要分析一下入口函数。

进入目录:/mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp

nm -al bin/vpp 生成符号表,带源文件地址。
objmp -j .text -Sl bin/vpp --prefix-addresses > debug.info 反汇编,汇编和C语言混合。

上面生成以备后用。
调试使用cgdb.

[root@devel-ng-exporter-225 vpp]# pwd
/mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp
[root@devel-ng-exporter-225 vpp]# cgdb bin/vpp

/usr/bin/vpp -c /etc/vpp/startup.conf
我们先看一下用户态程序的参数传递规则:

上面程序很精简,并不复杂得到下面的结果:

设置main程序亲和性,main_core默认为1,可在文件中配置。

关于/etc/vpp/startup.conf中参数和使用配置参考: https://fdio-vpp.readthedocs.io/en/latest/gettingstarted/users/configuring/startup.html

设置main程序的亲和性:

272│ /* Set up the plugin message ID allocator right now... */
273├> vl_msg_api_set_first_available_msg_id (VL_MSG_FIRST_AVAILABLE);

上面完成:

E. 斐讯n1开机卡在android

GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;

TE: 257051

BL2 Built : 11:58:42, May 27 2017.

gxl gc3c9a84 - xiaobo.gu@droid05

set vdd cpu_a to 1120 mv

set vdd cpu_b to 1050 mv

set vddee to 1000 mv

Board ID = 4

CPU clk: 1200MHz

DQS-corr enabled

DDR scramble enabled

DDR3 chl: Rank0+1 [url=home.php?mod=space&uid=162986]@[/url] 912MHz - PASS

Rank0: 1024MB(auto)-2T-13

Rank1: 1024MB(auto)-2T-13

DataBus test pass!

AddrBus test pass!

-s

Load fip header from eMMC, src: 0x0000c200, des: 0x01400000, size: 0x00004000

aml log : R2048 check pass!

New fip structure!

Load bl30 from eMMC, src: 0x00010200, des: 0x01700000, size: 0x0000d600

aml log : R2048 check pass!

Load bl31 from eMMC, src: 0x00020200, des: 0x01700000, size: 0x0002c600

aml log : R2048 check pass!

Load bl33 from eMMC, src: 0x00050200, des: 0x01700000, size: 0x00053400

aml log : R2048 check pass!

NOTICE: BL3-1: v1.0(release):a625749

NOTICE: BL3-1: Built : 11:25:15, Aug 25 2017

[BL31]: GXL CPU setup!

NOTICE: BL31: BL33 decompress pass

mpu_config_enable:ok

[Image: gxl_v1.1.3243-377db0f 2017-09-07 11:28:58 qiufang.dai@droid07]

OPS=0x04

8d 85 8 c5 d3 cb 99 9e 8c aa b0 61 [0.845055 Inits done]

secure task start!

high task start!

low task start!

ERROR: Error initializing runtime service opteed_fast

U-Boot 2015.01-00010-gfe36fb9 (Mar 02 2018 - 19:00:28)

DRAM: 2 GiB

Relocation Offset is: 76ed9000

register usb cfg[0][1] = 0000000077f5d330

[CANVAS]canvas init

vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters

vpu: clk_level = 7

vpu: set clk: 666667000Hz, readback: 666660000Hz(0x300)

vpu: vpu_clk_gate_init_off

vpp: vpp_init

MMC: aml_priv->desc_buf = 0x0000000073ed9640

aml_priv->desc_buf = 0x0000000073edb960

SDIO Port B: 0, SDIO Port C: 1

emmc/sd response timeout, cmd8, status=0x1ff2800

emmc/sd response timeout, cmd55, status=0x1ff2800

init_part() 293: PART_TYPE_AML

[mmc_init] mmc init success

dtb magic 71b104da

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

start dts,buffer=0000000073ede1b0,dt_addr=0000000073ee91b0

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

parts: 10

00: logo 0000000002000000 1

01: recovery 0000000002000000 1

02: rsv 0000000000800000 1

03: tee 0000000000800000 1

04: crypt 0000000002000000 1

05: misc 0000000002000000 1

06: boot 0000000002000000 1

07: system 0000000050000000 1

08: cache 0000000020000000 2

09: data ffffffffffffffff 4

init_part() 293: PART_TYPE_AML

eMMC/TSD partition table have been checked OK!

check pattern success

mmc env offset: 0x27400000

In: serial

Out: serial

Err: serial

reboot_mode=cold_boot

hpd_state=1

[1080p60hz] is invalid for cvbs.

set hdmitx VIC = 16

config HPLL = 2970000

HPLL: 0xc000027b

config HPLL done

j = 4 vid_clk_div = 1

hdmitx: set enc for VIC: 16

HDMITX-DWC addr=0x10004006 rd_data=0x40

Error: HDMITX-DWC exp_data=0xff mask=0x9f

rx version is 2.0 div=10

hdmtix: set audio

hdmitx phy setting done

[store]To run cmd[emmc dtb_read 0x1000000 0x40000]

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

dtb_read()-1039: total valid 2

dtb_read()-1106: do nothing

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

vpp: vpp_pq_load pq val error !!!

Net: Phy 0 not found

dwmac.c9410000amlkey_init() enter!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

Start read misc partition datas!

info->attemp_times = 0

info->active_slot = 0

info->slot_info[0].bootable = 1

info->slot_info[0].online = 1

info->slot_info[1].bootable = 0

info->slot_info[1].online = 0

info->attemp_times = 0

attemp_times = 0

active slot = 0

wipe_data=successful

wipe_cache=successful

upgrade_step=2

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[CANVAS]addr=0x7f851000 width=3840, height=2160

amlkey_init() enter!

amlkey_init() 71: already init!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[KM]Error:f[key_manage_query_size]L507:key[deviceid] not programed yet

gpio: pin GPIOAO_2 (gpio 102) value is 1

InUsbBurn

noSof

Hit Enter or space or Ctrl+C key to stop autoboot -- : 0

[imgread]szTimeStamp[2018030720035817]

[imgread]secureKernelImgSz=0xd88800

aml log : R-2048 check pass!

aml log : R2048 check pass!

aml log : R2048 check pass!

ee_gate_off ...

mmc env offset: 0x27400000

Writing to MMC(1)... done

## Booting Android Image at 0x01080000 ...

reloc_addr =73f5e400

done

Kernel command line: buildvariant=user

load dtb from 0x1000000 ......

Amlogic multi-dtb tool

Single dtb detected

Uncompressing Kernel Image ... OK

kernel loaded at 0x01080000, end = 0x021d4598

Loading Ramdisk to 73894000, end 73ec7000 ... OK

Loading Device Tree to 000000001fff2000, end 000000001ffff6b8 ... OK

fdt_instaboot: no instaboot image

Starting kernel ...

uboot time: 3883528 us

[ 0.000000@0] Initializing cgroup subsys cpu

[ 0.000000@0] Initializing cgroup subsys cpuacct

[ 0.000000@0] linux version 3.14.29-00007-gff93835 (jenkins@slave2) (gcc version 4.9.3 (Ubuntu/Linaro 4.9.3-13ubuntu2) ) #1 SMP PREEMPT Wed Mar 7 19:32:34 CST 2018

[ 0.000000@0] CPU: AArch64 Processor [410fd034] revision 4

[ 0.000000@0] no prop version_code

[ 0.000000@0] bootconsole [earlycon0] enabled

[ 0.000000@0] Reserved memory: incorrect alignment of CMA region

[ 0.000000@0] [amvecm] pq string error !!!

[ 0.187655@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.190157@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

[ 0.198344@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.206249@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

domain-0 init dvfs: 4

[ 0.228385@0] tv_vout: chrdev devno 266338304 for disp

[ 0.242559@0] 1507 node need 400ms

[ 0.927350@0] Initramfs unpacking failed: junk in compressed archive

[ 1.020166@1] mtdoops: mtd device (mtddev=name/number) must be supplied

[ 1.150815@1] amlogic-new-usb3 d0078080.usb3phy: This phy has no usb port

[ 1.157031@1] ATVR driver - init called!

[ 1.166026@0] get_storage_dev return 1

[ 1.305368@1] DI-di_probe: get flag_cma error.

[ 1.307366@1] PPMGRDRV: err: ppmgr_driver_probe called

efuse_pw_en: 0x7

WARNING! efuse bits is disabled

Enable A53 JTAG to AO

[ 1.338469@1] cectx aocec: no hdmirx reg resource

[ 1.338498@1] cectx aocec: no hhi reg resource

[ 1.557834@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTL

[ 1.559838@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTL -> direct -> Ext Spk

[ 1.568717@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTR

[ 1.576247@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTR -> direct -> Ext Spk

相关资源:adb工具+USB调试驱动.zip_usb调试驱动-其它工具类资源-CSDN文库
点击阅读全文
打开CSDN,阅读体验更佳

参与评论 请先 登录 后发表或查看评论
智能家居-斐讯N1安装篇_ITPaint的博客
2、 开启ADB调试 N1 用 HDMI 连显示器,正常开机后用鼠标点击斐讯 N1 官方固件的那个版本号 4 次,出现 【ADB调试开启】的字样即可,如下图 3、选择2,N1降级 4、输入 .\fastboot.exe reboot 重启设备 二、刷入官改 1、安装USB烧...
斐讯N1救砖指南!值得收藏_ITPaint的博客_n1救砖
一、准备工作 1、拆除底部四个螺,在胶垫下面 2、下载刷机工具USB_Burning_Tool 3、 二、刷机流程 1、打开刷机工具导入N1官改固件包,等待加载完成 2、去除 擦除flash 擦除bootloader 两个勾选。 3、连接USB双公线,短接如下图两个...
斐讯n1卡在android,斐讯N1,看本地高清电影请务必刷coreelec
斐讯N1,看本地高清电影请务必刷coreelec2019-10-11 18:38:5149点赞461收藏94评论kodi很多人都知道也在使用,但是很多朋友并不清楚coreelec下的kodi,和安卓盒子上的kodi到底有什么区别。以至于很多买了n1的朋友,觉得安卓上面的kodi也一般般。简单地说:coreelec是一个linux系统,约等于你买了一台电脑,安装了操作系统,上面只运行kodi,kod...
继续访问
斐讯N1变砖终于有救了,使用ddbr恢复官改系统救砖方法
斐讯 N1 使用 ddbr 恢复官改系统 ddbr 官改镜像下载: 链接: https://pan..com/s/1IRPeEeyrdcGyAaaMDfo5kw 提取码: c388 首先按照步骤制作一个能够从 U 盘正常启动的 arm­bian 系统,进入后系统后执行指令 ddbr 首先输入 b(backup),在进度条开始后即可 Ctrl+C 取消。这样可以获取到 ddbr 备份的文件的名称(不同版本的 Arm­bian 备份出来的包名有不同) 打开 winscp 用 sftp 加你的 ssh
继续访问

斐讯N1 – 完美刷机Armbian教程_Jeans Liu的博客
为了让斐讯N1的各个硬件可以被armbian正常调度,所以需要给斐讯N1适配一套dtb文件。 dtb文件需要随着内核编译,所以不同armbian内核版本必须使用配套的dtb文件。 目前斐讯N1的dtb文件已经被armbian收录到官方源码库里,但是使用的时候linux负载会显...
N1刷Android TV,贫民种草指北 篇二:N1盒子:不谈刷机,只谈使用!_眠子子 ...
最后,不推荐连鼠标,蓝牙鼠标成本高。有线麻烦;手机app控制,电视盒子系统听说可以下载斐讯遥控控制(未测试成功),coreelec可以通过skbu for kodi控制(实测ok,使用也还ok),手机和N1处于同一局域网,打开app自动连接。操作比较全如下图。
HP服务器放电后进不了系统,遇到奇怪的问题,armbian系统 reboot之后 卡在开机界面 进不去系统 断电重启正常...
GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;TE: 483967BL2 Built : 11:58:42, May 27 2017.gxl gc3c9a84 - xiaobo.gu@droid05set vdd cpu_a to 1120 mvset vdd cpu_b to 1050 ...
继续访问
arm linux开机第一屏,小白求助大神T1刷机提示成功,但开机卡在斐讯白屏界面。...
本帖最后由 taczgk 于 2020-5-28 10:42 编辑请大神帮帮忙,我的斐讯T1盒子原来用的YYF系统,刷了W大3.0和3.5系统都是开机卡在斐讯界面,刷YYF系统就卡在安卓机器人界面,打勾救砖模式都提示错误:[0x00101004]擦除bootloader/USB限流/设备识别/命令结果返回错误,不打勾的话,刷机提示刷机成功,电脑也可以识别,刷完就卡在开机界面,无法联网无法ADB,求...
继续访问
斐讯 N1 降级、刷机及 Armbian 安装 [2019.7.23]
最前 最近捡垃圾不断,之前购买了斐讯遗产 K2P(真香,最近刷了 OpenWrt)、T1(刷了电视盒子)和蜗牛星际(刷了黑群晖),最近又捡了台斐讯 N1,主要用于做一些简单的爬虫和 Adguard Home 服务。其实原先有过一台树莓派 3B,但是 emmmm 吃灰了一年,然后二手卖了。虽然近期树莓派 4 发布了,性能有较大提升,但由于价格的原因,还是 N1 香。刷机过程由于已有的几篇文章有些内容...
继续访问

手机开机卡在android画面,手机一直停在开机画面怎么解决【图文】
手机我相信人们不会不知道,这几年手机的发展速度非常地快,不知道大家平时使用手机的过程之中出现一些故障没有,相信大多数的用户是碰到过的,但是我相信大多数的手机用户是不会解决碰到的故障的。大家平时遇到最对的故障是什么呢?手机开机后一直停在开机界面这种情况相信大家都经历过吧!今天小编就教教大家如何解决这种故障。手机开机后一直停在开机界面怎么办top1:长按电源键12S左右重启手机手机在执行系统升级,刷机...
继续访问
最新发布 PHICOMM(斐讯)N1盒子 - recovery模式救砖卡登录页LOGO卡1%卡4%卡26%
PHICOMM(斐讯)N1盒子recovery模式救砖卡登录页LOGO卡1%卡4%卡26% 卡1%:需要先刷入T1_1.3T47_mod_by_webpad_v3_20180419_2.img救砖包,再重新刷 卡4%:USB供电不足。使用台式机或USB加5V(如带供电的USB分线器) 卡26%:换不卡的包,如RUSH的包...
继续访问
Initramfs unpacking failed:junk in compressed archive
使用kvm创建自定义镜像后重装云主机启动报错如下: 解决办法: 重做镜像,内存原来的2047MB改成了1024MB,其实也不知道对不对,反正做了好几遍最后一次好了。
继续访问

机顶盒ttl无法输入_请教大神,机顶盒接TTL进不了uboot模式
本帖最后由 cgl4134 于 2019-12-24 00:13 编辑更新一下... 自己刚开始折腾机顶盒,好多地方都搞不太懂.. 正在学习中..这个uboot 跟刷机包有关系,换了个潜龙的线刷包,就可以进uboot了,,不过现在uboot好像让我搞坏了, uboot模式下, usb_update system 会失败..欢迎其他小白交流学习----------------------------...
继续访问
关于解决 inittramfs unpacking failed:Decoding failed 报错
解决办法 vi /etc/initramfs-tools/initramfs.conf 更改COMPRESS=lz4以COMPRESS=gzip 保存更改 sudo update-initramfs -u
继续访问
armbian 斐讯n1_记录一下斐讯N1盒子刷Armbian的各种坑
最近搞了一个斐讯N1盒子,准备拿来刷Armbian,也就是linux。armbian使用了AArch64架构,也就是说,是armv8,安装nodejs时注意下载armv8的版本。斐讯N1盒子自带的系统是安卓系统,版本是V2.2,刷机主要参考的教程在这里:https://www.uselys.com/archives/85.html第一步,需要将盒子的系统版本降级到V2.19,方便后面刷入系统。首先...
继续访问
HDMI相关
HDMI相关基础4.4 与 9.0 差异AVMUTE 的使用hdcp异常检查 HDCP 交互:检查 ksv(视频加密密钥):HDCP 的内部检测:显示模式分析查看是否已连接电视机查看当前显示模式更改当前显示分辨率查看 EDID 信息查看显示设备的 EDID 信息查看电视机支持的最佳分辨率Android 系统对 HDMI 输出制式的设置1. 查看当前输出制式的节点命令:2. 输出制式在 Framework 层的代码位置:主要接口说明最优分辨率、颜色空间、色深的配置使用 HDMI Bist 模式验证 HDMI
继续访问
斐讯n1刷鸿蒙系统,【总结】在N1上面成功刷入armbian并启动的步骤
本帖最后由 ruojiner 于 2018-6-25 00:08 编辑用的是Armbian_5.44_S9xxx_Debian_stretch_3.14.29_server_20180601.img.xz这个镜像。TIM图片20180624230645.png (48.41 KB, 下载次数: 398)2018-6-24 23:22 上传TIM图片20180624230657.png (18.02...
继续访问

Linux学习笔记—驱动篇(一)
注:以下驱动只是均以GEC6818开发板为例进行撰写 要想写驱动我们得先了解什么是u-boot 一、什么是u-boot ? Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是...
继续访问

linux initramfs启动原理
当linux选择支持initramfs方式启动,并且在initramfs source file中选择了要打包的rootfs路径以后,则会尝试以initramfs方式启动。initramfs方式会对rootfs进行压缩,和linux kernel打包在同一个镜像文件中。然后系统加载的时候uboot会把整个镜像文件都加载到内存中。以该种方式加载的rootfs,是没办法修改flash中rootfs的数...
继续访问

n1盒子救砖_斐讯N1盒子刷机救砖教程
https://codess.cc/archives/108.html自从斐讯0元购的车翻了之后,咸鱼上的斐讯产品也非常多,从路由器到空气净化器再到矿机。前几天我在撕逼鱼收了两个斐讯N1盒子,这东西原来是挖矿的,矿场坍塌倒闭之后,矿老板们大量甩卖矿机,有的甚至是全新未拆...大概70块左右包邮的价格,配置一点也不低,比市面上绝大多数的电视盒子的配置都高。最重要的是,它能解码4K! 解码真4K! 单...
继续访问
Kernel启动时间优化
1、问题描述 Linux的内核用的是3.14版本。UI层跑的是类似Qt的系统。目前Kernel从启动到init进程大概需要3.5秒时间,另外到加载U盘需要7.5秒左右时间。 由于Bootloader执行过程很快,所以不是本次需要优化的目标。 系统原始的Kernel启动部分Log如下: 15:29:01.552: [ 0.000000]Linux version 3.14.19 (g
继续访问
热门推荐 N1救砖总结帖
一、正常降级刷固件的教程在恩山论坛蛮多的就不多赘述了 正常刷机教程-来自恩山 二、变砖原因: 1.刷错T1等非N1的固件 2.刷机过程中由于各种原因断开了USB连接线(我就是手欠用的USB-Hub连接没有固定好) 三、变砖现象 四、救砖方法 ①有用焊接使用TTL直刷的,这种成本高,要求也高,还麻烦,暂不考虑,有兴趣去恩山看下帖子就好 ②我抄作业学到的: 需要的软件:USB_Burning_To...
继续访问

斐讯n1开机卡在android
斐讯n1卡在android

F. 学生科研单片机需要哪些硬件哦

1. VCC(40):电源+5V。

2. VSS(20):接地,也就是GND。

3. XTL1(19)和XTL2(18):振荡电路。

单片机是一种时序电路,必须有脉冲信号才能工作,在它的内部有一个时钟产生电路,有两种振荡方式,一种是内部振荡方式,只要接上两个电容和一个晶振即可;另一种是外部振荡方式,采用外部振荡方式时,需在XTL2 上加外部时钟信号(详细的内容将在以后的课程中专门介绍)。

4. PSEN(29):片外ROM 选通信号,低电平有效。

5. ALE/PROG(30):地址锁存信号输出端/EPROM 编程脉冲输入端。

至于它们的作用我们暂时不去管它,等以后学到相关的知识时再来研究它。这也许就是本教程区别于其他教材的最大特点----先实践后理论,尽量用实验结果来总结理论知识,因为单片机是一种通用的产品,它的功能设计是为了满足大多数使用者的要求,换句话说,不同的使用者只会使用其相关的功能,几乎不可能把全部的功能都用起来,因此我们完全不必象学习其他电子技术那样,把单片机的全部知识都搞懂了再去开发产品。这话前面好象说过了!

6. RST/VPD(9):复位信号输入端/备用电源输入端。

什么是复位信号,为什么要加复位信号?当然也暂时不去管它。

7. EA/VPP(31):内/外部ROM 选择端。

在30、9 脚的功能上不知大家注意没有,都有一个/,什么意思呢?这是引脚的第二功能,也就是说,该引脚既可以作前面的功能,也可以作后面的功能,至于它是如何工作的,我们暂时也别去研究它。

8. P0 口(39-32):双向I/O 口。

9. P1 口(1-8):准双向通用I/0 口。

10. P2 口(21-28):准双向I/0 口。

11. P3 口(10-17):多用途口。

I/O 就是英文IN/OUT 的缩写,这些引脚的功能想必大家也都明白了,(就是输入/输出的意思),这32 个I/O 口就是留给我们作连接外围电路用的,那么它们之间有些什么不同呢?这个问题稍微有点复杂,我们将在以后的课程中专门来学习。现在我们先来往下看:

二.单片机的电路连接和开发过程

看附图,这就是我们做实验用的电路图,想必大家都能看得懂吧。接下来就让我们通过一个实验来看看单片机是如何工作的?我们的实验是让一个LED 灯亮起来,亮哪一个?这就随便你了,比如我们就让LED1 亮起来吧,仔细看一下电路图,LED1 接在什么地方呢?接在单片机的P1.0 的引脚(也就是1脚)上,那么按照该电路图的连接方法,当1 脚为高电平时,LED1 是不亮的;只有当1 脚为低电平时,LED1 才会亮起来,怎样才能让1 脚由高电平变为低电平呢?我们让人做事,就必须对她说一声,也就是发布命令,想让单片机工作,也得发布命令,不过在计算机中那叫指令,我们要让1 脚变为低电平的指令是CLR P1.0(让1 脚变为高电平的指令是SETB P1.0),这就是我们通常所说的源代码,(这是我们开发产品的第一步—源代码编辑);怎么做呢?我们首先得打开实验软件,屏幕出现一个浏览器的软件窗口,点击左边的扩展实验,选中实验16—自动温度控制器,再点击工具栏里的调试按钮,弹出一个记事本对话框,写入CLR P1.0;(?分号必须在英文状态下输入),输入完毕后选择文件→保存即可;

那么单片机能读懂这条指令吗?当然不能,接下来我们还有一件事情要做,就是把这句指令翻译成单片机能读懂的东西,单片机能读懂什么呢?它其实只懂一样--就是数字,因此,我们就把CLR P1.0 翻译成C2H,90H,至于为什么要翻译成这样,这当然是INTEL 公司规定好的,我们就不需要去研究它了。这个过程我们叫作编译,(这是我们开发产品的第二步),那么指令是怎么编译过来的呢?这就得靠专业的软件了,我们做实验使用的软件就有此功能,只要点击工具栏上的编译按钮,稍等片刻即出现一个编译信息窗口,如果编译通过就会有编译完成,结果如下:0 个警告,0 个错误的编译信息,如果编译错误则会出现编译错误的信息,并提示错误的行号;编译完了之后通常要进行程序仿真(这是第三步),当然我们的实验程序很简单是不需要仿真的;接下来怎么才能把编译通过的指令写入单片机中呢?这通常需要借助于一种硬件工具,叫编程器(也叫烧录器),不过我们的实验板采用的是具有串行下载功能的单片机,所以您只要直接点击快捷工具栏上的下载按钮,程序就进入了实验板(这是第四步—编程)。

自此就完成了单片机开发的全过程。

全部工作结束后,我们看到了什么?接P1.0(1 脚)的LED1 亮了起来;改变源代码,变成SETB P1.0;

进行编译,下载,看看结果是不是LED1 不亮了。怎么样,不难吧!!!

最后让我们来思考一个问题,当我们用编程器把编译后的指令写入单片机时,单片机就开始执行这条指令,那么这条指令就一定在单片机内部的某个地方,它究竟在哪里呢?单片机的内部结构又是怎么样的呢?这将是我们第三课要讨论的内容—单片机的内部结构(一)??半导体存储器。

G. AT89C51和AT89S51的区别

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示

[编辑本段]主要特性:

·与MCS-51兼容

·4K字节可编程闪烁存储器

·寿命:1000写/擦循环

·数据保留时间:10年

·全静态工作:0Hz-24MHz

·三级程序存储器锁定

·128×8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

串口通讯

单片机的结构和特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?

SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfrSBUF=0x99;当然你也可以用其它的名称。通常在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就可以了。

SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下:

SM0SM1SM2RENTB8RB8TIRI

SM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。

SM0SM1模式功能波特率

000同步移位寄存器fosc/12

0118位UART可变

1029位UARTfosc/32或fosc/64

1139位UART可变

在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc代表振荡器的频率,也就是晶振的频率。UART为(UniversalAsynchronousReceiver)的英文缩写。

SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。

REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。大家也可以用上面的实际源码加入REM=0来进行实验。

TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。

RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。

TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。

RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。

波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600÷10=960字节。51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在fosc/64或fosc/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。那么我们怎么去计算这两个模

式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。

波特率=(2SMOD÷32)×定时器1溢出速率

上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:

溢出速率=(计数速率)/(256-TH1)

上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式:

11.0592M

9600=(2÷32)×((11.0592M/12)/(256-TH1))

TH1=250

12M

9600=(2÷32)×((12M/12)/(256-TH1))

TH1≈249.49

上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

1.主要特性:

•8031CPU与MCS-51兼容

•4K字节可编程FLASH存储器(寿命:1000写/擦循环)

•全静态工作:0Hz-24KHz

•三级程序存储器保密锁定

•128*8位内部RAM

•32条可编程I/O线

•两个16位定时器/计数器

•6个中断源

•可编程串行通道

•低功耗的闲置和掉电模式

•片内振荡器和时钟电路

2.管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

阅读全文

与vpp源码编译相关的资料

热点内容
pythonoa项目 浏览:307
android杜比音效 浏览:341
杀手47为什么连接不了服务器 浏览:108
静态路径命令 浏览:533
一直编译不过怎么办 浏览:829
汽车串联并联算法 浏览:458
助眠解压的声音音频小哥哥 浏览:277
pythoncmd换行 浏览:376
linux取消行号 浏览:355
安卓原生系统官网是什么 浏览:444
底部主图源码 浏览:878
服务器崩了有什么提示 浏览:780
远程海康服务器用什么浏览器 浏览:232
解压报纸图片 浏览:956
python微信公众号开发平台 浏览:895
知识付费网站java源码 浏览:255
方舟怎么做命令管理 浏览:849
linux流量异常 浏览:675
单片机如何给电脑加密码 浏览:519
如何删掉多余的服务器 浏览:220