问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - Bootloader
  • PIC18的bootloader引导APP正常,但可能跑飞? sos

    硬件: 单片机:PIC18F25K80 情况: 1. bootloader单独跑没有问题;APP单独跑也没问题。 2. 将bootloader的hex文件,loadables到app工程,并将app的cod offset为0x0C00,成功进入app模式。 问题: 由bootloader引导app模式,存在程序跑飞的情况(中断已不响应)。有时候能正常运行半小时,有时仅能正常运行几十秒。 bootloader部分代码: unsigned char isBootloader __at(0x00AA); // Bootloader中的中断 void interrupt low_priority InterruptISR_Low(void) { if(0 == isBootloader) { asm ("pagesel " str (APP_LOW_VECTOR)); asm ("goto " str (APP_LOW_VECTOR)); } else lowPriorityISR(); } void main() { ...初始化 if(0 == isBootloader) { STKPTR = 0x00; // 清除 返回堆栈指针 BSR = 0x00; asm ("pagesel " str(APP_RESET_VECTOR)); asm ("goto " str(APP_RESET_VECTOR)); } ... }

    PIC18 Bootloader 跑飞

    1644浏览量 0回复量 关注量
  • GD32F470如何调用芯片的bootloader???

    各位专家大家好,请问有没有在GD32芯片上试过调用芯片的bootloader实现程序升级功能的,请指导。 我最近在GD32F470 上尝试调用芯片bootloader,发现并不能够成功,程序能掉跳转到0x1FFF0000地址,但不能给ISP软件回应。不是硬件的问题,因为我通过设置BOOT0、BOOT1引脚可以正确实现程序升级。 我的具体实现是在SystemInit()函数开始即跳转到bootloader区,代码如下: void SystemInit (void) { uint32_t i; pFunction JumpToApplication; //-------------------------------------------------------------------------------- if (0x32f1 == RTC_BKP0) { rcu_periph_clock_enable(RCU_PMU); pmu_backup_write_enable(); RTC_BKP0 = 0x1234; __set_PRIMASK(1); SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; /* 关闭所有中断,清除所有中断挂起标志 */ for (i = 0; i < 8; i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } /* 使能全局中断 */ __set_PRIMASK(0); JumpToApplication = ((pFunction) (*(__IO uint32_t*) (0x1FFF0000 + 4))); __set_MSP(*(__IO uint32_t*) 0x1FFF0000); JumpToApplication(); } //--------------------------------------------------------------------------------- ......其他无关操作.........

    GD32 Bootloader ISP

    1764浏览量 3回复量 关注量
  • GD32F30x 是否有官方的bootloader程序 sos

    GD32F30x 是否有官方的bootloader程序?哪位能提供一下吗?

    Bootloader gd32f30x

    3249浏览量 0回复量 关注量
  • GD32F103的BOOTLOADER源码在那里可以看到?

    GD32F103的BOOTLOADER源码在那里可以看到?如果使用RS485接口,可以实现BOOTLOADER功能么?

    Bootloader 源码 gd32F103 接口 RS485 RS

    7799浏览量 5回复量 关注量
  • stm32f103zg程序跳转到系统bootloader失败 sos

    目前用的芯片是stm32f103zg,准备使用串口升级程序,看到手册AN2606中,该芯片是支持USART1通过系统boot loader更新程序的。现在的程序是用stm32cubemx生成的,程序如下 int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_10)==GPIO_PIN_RESET) { JumpToBootloader(); } else { JumpToApp(); } } /* USER CODE END 3 */ } /* USER CODE BEGIN 4 */ static void JumpToBootloader(void) { uint32_t i=0; void (*SysMemBootJump)(void); /*声明一个函数指针*/ __IO uint32_t BootAddr = 0x1FFFE000;//0x1FFF0000; /* STM32F103 的系统 BootLoader 地址*/ /*关闭全局中断*/ __disable_irq(); /*关闭滴答定时器,恢复到默认值*/ SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; /*设置所有时钟到默认状态,使用HSI时钟*/ HAL_RCC_DeInit(); /* 关闭所有中断,清除中断挂起标志 */ for (i = 0; i < 8; i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } /* 使能全局中断 */ __enable_irq(); /*设置重映射到系统Flash */ // __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH(); /* 跳转到系统 BootLoader,首地址是MSP,地址 +4 是复位中断服务程序地址 */ SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); /* 设置主堆栈地址*/ __set_MSP(*(uint32_t *)BootAddr); /*在RTOS工程,这条语句很重要,设置为特权模式,使用MSP指针 */ __set_CONTROL(0); /* 跳转到系统 BootLoader */ SysMemBootJump(); } static void JumpToApp(void) { uint32_t i=0; void (*SysMemBootJump)(void); /*声明一个函数指针*/ __IO uint32_t BootAddr = 0x8001800; /* APP程序地址*/ /*关闭全局中断*/ __disable_irq(); /*关闭滴答定时器,恢复到默认值*/ SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; /*设置所有时钟到默认状态,使用HSI时钟*/ HAL_RCC_DeInit(); /* 关闭所有中断,清除中断挂起标志 */ for (i = 0; i < 8; i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } /* 使能全局中断 */ __enable_irq(); /* 跳转到系统 BootLoader,首地址是MSP,地址 +4 是复位中断服务程序地址 */ SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); /* 设置主堆栈地址*/ __set_MSP(*(uint32_t *)BootAddr); /*在RTOS工程,这条语句很重要,设置为特权模式,使用MSP指针 */ __set_CONTROL(0); /* 跳转到系统 BootLoader */ SysMemBootJump(); } /* USER CODE END 4 */ 现在这个程序是可以正常跳转到APP程序的,就是跳转bootloader不成功,用stm32programmer,连接不上串口。如果直接把BOOT0置高是可以连接上串口的,所以硬件上应该没有问题。

    Bootloader STM32F103 se ic rc TI

    3333浏览量 0回复量 关注量
  • 请问AC7840x这款芯片支持bootloader功能吗

    请问AC7840x这款芯片支持bootloader功能吗

    Bootloader 芯片 AC

    2322浏览量 3回复量 关注量
  • 有没有gd32的uart ota升级的bootloader和app的例程

    有没有gd32的uart ota升级的bootloader和app的例程

    App Bootloader OTA UART

    3012浏览量 1回复量 关注量
  • 小白求助!在bootloader的开发求助,

    参考设计是在芯旺微电子官网中软件中心中下载的chipON bootloader开发资源包。 开发过程:将bootloader的代码通过编译器下载到KF8A的单片机中(此处指定了bootloader的存储空间),在通过串口上位机将APP(应用层)生成的HEX文件下载到bootloader中(不会覆盖bootloader在flash的代码),在bootloader通过判断,可跳转到APP中,并执行APP(应用层)的main函数。问题:进bootloader中断没问题,但是APP的中断没有相应,此处在中断入口0x0004处,做了判断是进入bootloader中断函数,还是APP的中断函数,测试下来,APP的中断没有进入0x0004中断入口. 有没有道友遇见过这种问题,做过bootloader,给老兄指导一下,谢谢!

    Bootloader App 函数 应用层 中断函数 代码

    1398浏览量 3回复量 关注量
  • 将代码放入MCC生成的16bit的bootloaderAPP中,发生如下错误 sos

    编译出现如下错误,请问有经验的大神吗? nbproject/Makefile-default.mk:541: recipe for target 'dist/default/production/APP_804.X.production.hex' failed make[2]: Leaving directory 'C:/Users/Administrator/Desktop/test/APP_804/APP_804.X' nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed make[1]: Leaving directory 'C:/Users/Administrator/Desktop/test/APP_804/APP_804.X' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed build/default/production/main.o: Link Error: Could not allocate section .text, size = 150 PC units, attributes = code build/default/production/code/flash.o: Link Error: Could not allocate section .const, size = 128 PC units, attributes = psv page build/default/production/mcc_generated_files/clock.o: Link Error: Could not allocate section .text, size = 110 PC units, attributes = code build/default/production/mcc_generated_files/system.o: Link Error: Could not allocate section .text, size = 42 PC units, attributes = code build/default/production/mcc_generated_files/traps.o: Link Error: Could not allocate section .text, size = 24 PC units, attributes = code build/default/production/code/Key1650.o: Link Error: Could not allocate section .const, size = 22 PC units, attributes = psv page

    代码 App Bootloader TE TI IO

    1670浏览量 0回复量 关注量
  • kf32 单片机 bootloader 代码疑问 sos

    if(*(volatile uint32_t*)0x8000 == 0x10018000 ) //判断APP空间的首个字内容是否为栈顶地址0x10018000,正确则说明APP程序已经写入 { SYS_VECTOFF = 0x8000 ; //设置向量表偏移值,即重映射向量表,这对中断服务函数正确执行至关重要 JumpAddress = *(volatile uint32_t*) (0x8000 + 4); //获取APP的startup()入口地址 Jump_To_Application = (pFunction) JumpAddress; //将startup()入口地址赋值给函数指针 Jump_To_Application(); //使用新的函数指针,转向执行APP的startup()函数,这将导致APP程序启动 } 这段代码不明白,能否详细讲解一下,谢谢 if(*(volatile uint32_t*)0x8000 == 0x10018000 ) 如果将 0x8000 修改为0x1b000 SYS_VECTOFF = 0x8000 ; //设置向量表偏移值,即重映射向量表,这对中断服务函数正确执行至关重要 JumpAddress = *(volatile uint32_t*) (0x8000 + 4); //获取APP的startup()入口地址 这两处0x8000 是否也需要修改为0x1b000 用官方给的代码ox8000 是可以跑通的,但现在修改之后不能跑通,不知道哪里出问题啦。

    单片机 Bootloader 代码 App TI 函数

    1364浏览量 0回复量 关注量
  • kf32f330的bootloader

    这是kf32f330的bootloader 代码,根据f5样例修改,没有成功,请大佬帮忙看一下 ,谢谢,新手很多不是了解,在学习中,请多多大赐教。

    技术交流 Bootloader 代码

    1213浏览量 1回复量 关注量
  • bootloader 编写

    目前在学kf32f3系列,请问bootloader 该怎么写,请大神指导一下,比如给个方向,谢谢! 新手,请不要打击,嘿嘿!

    Bootloader 编写

    1238浏览量 5回复量 关注量
  • stm8 BootLoader问题请教 sos

    情况是这样的: 需求:通过CAN通讯升级APP代码,并且擦写flash的驱动也要通过CAN通讯发送,不能直接写在flash里面进行调用。(这样是为了安全) 使用的MCU:stm8af系列 问题:怎么样实现flash擦写函数不在代码里体现而是通过外部通讯获得。 我现在的思路是 把擦写函数编译出来的二进制代码存在数组里,然后用函数指针去调用,我觉得这种思路应该是没有问题的,但是试下来却不行。 这种需求在汽车领域应该用的很多,请各位指点迷津。。 感谢~~

    Bootloader STM8 代码 flash 通讯

    2246浏览量 0回复量 关注量