推荐阅读最新更新时间:2026-03-06 23:24
stm32 bootloader启动正常,APP程序会在时钟配置出错原因分析
实验环境 STM32F411芯片 HAL库 利用CubeMX生成的Bootloader和APP工程 现象描述 将Bootloader和APP程序分别下载到板子上,Bootlader程序可以正常运行,而APP程序会死在Error_Handler()的while(1)循环中。 具体调试发现程序是在执行HAL_RCC_OscConfig()函数的PLL 配置部分检测到当前PLL已经被配置为了系统时钟而返回了HAL_ERROR的返回值导致进入了Error_Handler()。为什么bootloader程序中的时钟配置没有问题,而APP中的时钟配置就会有问题呢? 分析 网上搜索了一下,发现了一种说法:PLL在启动之后便不能够重新配置。感
[单片机]
启动代码和Bootloader区别
很多人都会把两者混淆,所以这里稍微说一下。 启动代码和Bootloader有点类似于类和结构体的关系,也就是说结构体只是一种很特殊很特殊的类,但不能说类是一种结构体。 也就是说可以说启动代码是Bootloader,但是不能说Bootloader是启动代码。但是这也不是绝对的,只在某些情况下可以这么说。 通常,启动代码仅仅是指CPU复位后到main函数之前需要执行的汇编代码。需要这段代码是为了给C语言程序准备好堆栈空间,中断入口和外部数据等。而且这段汇编代码可以直接对硬件进行操作,效率很高。 Bootloader不是代码,而是程序,完整的程序,比如引导转载Linux和WinCE,以及BIOS程序。有些Bootloader将启动
[单片机]
WinCE下BootLoader的启动流程和开发经验
Windows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统。在形形色色的嵌入式设备世界里,一款CE系统通常只能针对某一种硬件平台生成。 一般来说,Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。其中,0AL开发最基本的一步是板级支持包(BSP),而BootLoader设计则在BSP开发中具有极为关键的地位。 1. 什么是BootLoader 嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码
[模拟电子]
基于ARM的嵌入式系统Bootloader启动流程分析
一. 引言: 对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为Bootloader程序,因此整个系统的加载启动任务就完全由Bootloader 来完成。简单地说,通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调
[单片机]
基于微处理器S3C44B0实现SJY-1射频监测仪系统的设计
引言 发电机是电力系统的核心,随着单机容量的不断增大,其运行可靠性显得尤为重要。对于发电机而言,并网运行后实现在线监测和诊断已成为一项亟待解决的课题。其主要目的在于:检出发电机在初始阶段出现的缺陷,以便有计划地安排检修,减少强迫停机次数,避免事故的发生;延长发电机平均无故障时间及缩短平均修理时间,降低发电机的维护费和提高发电机的可用性。 发电机运行状态监测原理 发电机长期运行后,绝缘性能渐趋劣化,而绝缘结构的劣化是各种劣化的综合表征。目前,射频监测法是较为常用的监测发电机绝缘状态的方法。 本文论述的远程监测系统配合在线运行的SJY-1射频监测仪,通过监测射频仪的输出信号,进行初步的故障诊断。如何确定射频监测仪的示值变化与发
[单片机]
基于三星S3C44B0芯片实现VxWorks网络接口的软硬件设计
VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。 1、 硬件设计 核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系统成
[单片机]
S3C44B0的可用I/O口分析
PA0~PA8:做地址线, 最好不用 PA9 :如果不需要扩展32M的存储器, 可用(仅做输出) PB0~PB10:SDRAM接口和片选线, 最好不用 PC0~PC3:如果不需要IIS音频接口, 可用 PC4~PC7:如果不需要外接LCD, 可用 PC8~PC9:如果不需要使用外部DMA, 可用 PC10~PC15:如果不需要使用串口1, 可用 PD0~PD7:如果不需要外接LCD, 可用 PE0: 如果不需要作为时钟输出, 可用 PE1~PE2:串口0的数据输入输出, 最好不用 PE3~PE7:定时器0~4输出, 可用 PE8: 如果不需要IIS音频接口, 可用 PF0~PF1
[单片机]
S3C44B0的初始化程序的理解
S3C44B0的初始化程序就是初始化各个关键的寄存器,建立中断向量,然后转移到主函数去执行程序。不过S3C44B0不支持地址映射,所以程序不COPY到RAM种执行。S3C44B0初始化对我们广大初学者来说,比较难理解的是中断的处理和一些少见的操作符号,S3C44B0的中断子程序地址存放在初始化程序最后就是 HandleADC # 4 HandleRTC # 4 HandleUTXD1 # 4 HandleUTXD0 # 4 HandleSIO # 4 HandleIIC # 4 HandleURXD1 # 4 HandleURXD0 # 4 这一段,它的其实地址是ISR_STA
[单片机]