Questions tagged «bootloader»

引导加载程序是一种实用程序,用于将应用程序加载到内存中。

3
什么是引导加载程序,我将如何开发它?
我遇到了许多项目,其中AVR微控制器与引导加载程序(例如Arduino)一起使用,但是我对这个概念不太了解。 如何制作引导加载程序(对于任何微控制器)? 编写引导加载程序后,如何将其编程到微控制器(就像在AVR的Flash ROM中刻录的任何.hex程序一样,或其他方法)?

8
为什么我们需要一个与我们的微控制器应用程序分开的引导程序?
为什么我们需要在微控制器的相同闪存程序存储器(特别是STM32F103,称为引导加载程序)中使用单独的程序? 将其与主应用程序分开有何特殊之处? 一般而言,基于微处理器的系统(例如PowerPC MPC8270)的引导程序是否与微控制器(例如ARM STM32F103)的引导程序完成相同的工作,或者它们在根本上是互不相同的工作,但两者都称为“引导程序” ?

6
手机作为微控制器
我周围有几部手机,其中一个是这个手机:http : //www.gsmarena.com/sony_ericsson_elm-3057.php 可以清除闪存并用引导程序替换,然后上传arduino草图或pic32草图(C#/ C ++)。 我有这个主意,因为它是用于开发硬件项目的非常便宜的平台。(与单独购买每个部件相比,您可以获得屏幕,按钮,音频I / O,互联网等,并且以非常便宜的价格获得所有产品。) 是否可以擦除闪存并将引导加载程序安装到电话中以用作嵌入式计算机?

4
恢复出厂设置如何工作?
所有嵌入式设备都包含“恢复出厂设置”选项,如果出现问题,用户可以使用该选项重置其设备。 我正在STM32板上开发固件。该固件包括一个引导加载程序,该加载程序允许通过UART升级应用程序(通过发送包含新映像的二进制文件),我想添加另一个功能:恢复出厂设置。当用户选择此选项时,电路板应加载原始图像。 什么是出厂重置?是将整个二进制文件再次加载到内存中,还是只是调用一个函数来重新初始化最终用户修改的变量? 最佳做法是什么? 原始FW存放在哪里?是内置闪光灯还是外接闪光灯?

2
如何使用我的SMD Arduino来编程单独的DIP ATmega328?
我有一个带有表面贴装(SMD)微控制器的arduino: 我知道如何将DIP arduino用作DIP ATmega328的程序员。这很容易-您只需将微控制器放入支架即可。 但是,对于表面贴装的Arduino来说,这并不明显。拆焊微控制器是一种方法,但这是棘手的且具有破坏性。 我可以使用此Arduino作为DIP ATmega328的程序员而不会严重损坏开发板吗?如果是这样,怎么办?

2
无法使用AT32UC3L在自定义PCB上启动引导程序
我最近为客户设计了一个PCB,硬件和软件(应用程序按预期的方式运行)一切正常。现在,我们面临着更新微控制器内部程序的需求,但是由于这些PCB安装在世界各地,因此安装引导加载程序并使用与应用程序相同的UART将是完美的选择。 董事会说明 AT32UC3L032 一个UART已经用于板与PC之间的通信 应用程序的几个I / O 几个状态LED 相关的PINS和配置 PA01 # Used for entering ISP with high level PA20 # Used for application and ISP UART PA21 # Used for application and ISP UART #define COM_USART (&AVR32_USART2) #define COM_USART_RX_PIN AVR32_USART2_RXD_0_0_PIN #define COM_USART_RX_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION #define COM_USART_TX_PIN AVR32_USART2_TXD_0_0_PIN #define COM_USART_TX_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION #define …

1
Arduino Bootloader详细信息
有人可以解释一下Arduino引导程序的工作原理吗?我不是在这里寻找高层次的答案,我已经阅读了代码,并明白了要点。我还阅读了另一篇文章(我什至是其中的回应者之一)。 Arduino IDE和引导加载程序代码之间发生了许多协议交互,最终导致了许多内联汇编指令,这些指令通过在串行接口上​​传输的程序对闪存进行自编程。 我不清楚的是在第270行: void (*app_start)(void) = 0x0000; ...我将其识别为函数指针的声明以及对NULL的初始化。在引导加载程序将委托给用户加载的代码执行的位置,随后会调用app_start。 当然,某种程度上app_start需要某种方式获取非NULL值才能将它们全部组合在一起。我没有在引导加载程序代码中看到这一点...它是否与由引导加载程序加载的程序进行了神奇的链接?我认为引导加载程序的主要部分是芯片复位后进入软件的入口。 大约70行汇编中必须包含一个秘密的解码器环,该环告诉主程序app_start的实际位置在哪里?也许这是Arduino IDE所利用的一些隐性知识?我所知道的是,如果有人不将app_start更改为指向0以外的其他位置,则引导加载程序代码将永远永久旋转自身……那么诀窍是什么? 单独说明一下,引导加载程序代码是否有可能依赖于中断,还是不行吗? 编辑 我对尝试将引导加载程序移植到Tiny AVR(特别是ATTiny44A)感兴趣,该AVR没有单独的存储空间用于引导加载程序代码。对我来说显而易见的是,引导加载程序代码依赖于某些熔丝设置和芯片支持,我想我真的很想知道将引导加载程序移植到没有这些熔丝和硬件的芯片上需要做什么。支持(但仍然具有自编程功能)? 我以为我可以使用AVR307的实现将USI用作半双工UART(使用Timer0中断和引脚更改中断)。谁能提供有关如何为不支持引导加载程序的硬件编写/移植引导加载程序代码的指南? 我想我会将引导程序代码放在地址main的正常位置(例如0x029e或编译器放置main的任何地方)。然后,我将使引导加载程序代码中的“地址”添加一个偏移量,该偏移量使我刚好超过main的结尾,并将“ app_start”设置为该地址。我是在正确地考虑这个问题还是我完全错过了什么?谢谢! 编辑2 FWIW,我找到了一个文档化的程序,该程序用于将Arduino草图加载到ATTiny85上,这是我最初处理此问题的地方...我认为这很简洁

2
通过FPGA进行PIC编程
我想知道是否有一种通过FPGA卡首次编程PIC(以Flash写入)的方法。 PIC已经焊接到FPGA了,我无法将其移除。PIC上不存在引导程序。因此,我需要使用引导加载程序以USART / SPI / I2C模式对其进行编程,以便它可以从FPGA接收数据。 我知道通常我必须拆焊,将其连接到PICKit之类的硬件程序员,并使用MPLAB之类的计算机上的软件对其进行编程,但是我负担不起。 我可以使用MPLAB(一个.hex文件)生成引导加载程序,但是如何将其传输到FPGA,然后通过FPGA引脚传输到PIC? 使用的PIC是Microchip PIC12F1822。


2
理解引导加载程序结构的好工具或方法?
最近,我弄清楚了我一直在与运行U-boot(一个开源的Bootloader)的Atmel AT91SAM9G20 SBC一起工作的一个令人讨厌的错误的原因。问题的核心是U-boot期望配置的硬件与我构建的硬件不同,因此某些设备寄存器的配置不正确。 现在,我已经解决了问题,我需要调整U-boot以正确配置寄存器。我可以通过在程序末尾添加几行代码来盲目地执行此操作,但这很麻烦。 这使我想到了一个问题:与从main()开始并读取所有文件中所有可能的代码路径相比,我如何找出U-boot的工作效率更高?我试着在文件中四处寻找,并查看相关标识符附近的代码。事实证明这是无效的;似乎大多数代码是我不在乎的子系统的驱动程序。我实际上已经了解了引导加载程序到现在的运行情况,但是我希望有一种比我幼稚的方法更好的方法。

2
PIC12F675 GP4不起作用
我正在为一个项目使用PIC12F675,除一件事情外,其他所有东西都工作正常。GP4不能用作数字IO。我已经看了很多配置和代码,但是找不到任何东西。 配置: #pragma config FOSC = INTRCCLK #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config MCLRE = OFF #pragma config BOREN = ON #pragma config CP = OFF #pragma config CPD = OFF 码: #include <xc.h> #include <math.h> #include "config.h" #define _XTAL_FREQ 4000000 void delay(unsigned int …
9 pic  c  embedded  programming  audio  oscillator  spark  dc-dc-converter  boost  charge-pump  eagle  analog  battery-charging  failure  humidity  hard-drive  power-supply  battery-charging  charger  solar-energy  solar-charge-controller  pcb  eagle  arduino  voltage  power-supply  usb  charger  power-delivery  resistors  led-strip  series  usb  bootloader  transceiver  digital-logic  integrated-circuit  ram  transistors  led  raspberry-pi  driver  altium  usb  transceiver  piezoelectricity  adc  psoc  arduino  analog  pwm  raspberry-pi  converter  transformer  switch-mode-power-supply  power-electronics  dc-dc-converter  phase-shift  analog  comparator  phototransistor  safety  grounding  current  circuit-protection  rcd  batteries  current  battery-operated  power-consumption  power-electronics  bridge-rectifier  full-bridge  ethernet  resistance  mosfet  ltspice  mosfet-driver  ftdi  synchronous  fifo  microcontroller  avr  atmega  atmega328p  verilog  error  modelsim  power-supply  solar-cell  usb-pd  i2c  uart 

3
Arduino引导程序
我对嵌入式世界非常陌生。到目前为止,我只从事软件方面的工作 谁能解释一下Arduino Bootloader的用法?我希望Arduino使用一些必须放入芯片的其他组件来执行一些简单的数学运算。 我是否需要引导加载程序?

2
烧录引导程序后ATTiny85不工作
我的ATTiny85有问题。我应该提到我使用Arduino作为ISP对其进行编程。 在我决定将时钟速度从1MHz提升到20MHz之前,我的ATTiny工作良好,因此我从Boards菜单中选择了20MHz的ATTiny85,然后单击Tools> Burn Bootloader。但这很愚蠢,因为现在我的ATTiny根本不起作用。我无法在上面上传草图,如果尝试,我会收到以下消息: avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. 所以我想问的是,有没有办法重置我所做的事情?甚至更好,使其工作在20MHz?

4
我没有Arduino的概念
一段时间以来,我一直在努力制作Arduino(使用ISP编程器电缆成功制作了面包板版本)。他们说,制造Arduino引导加载程序的目的是不需要对ATmega8进行编程的任何外部电路。但是当我查看原理图时,串行连接需要正常电路。那么,引导加载程序实际上是做什么的?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.