【U盘故障】分区表正被其它程序独占访问, 本程序修改它失败. 请先关闭所有的其它程序再试.

【发生原因】

使用傲梅分区助手对装入了微PE的U盘进行删除分区操作

【U盘故障】

抱歉, 当前操作己取消!
信息代码: 6
描述: 分区表正被其它程序独占访问, 本程序修改它失败. 请先关闭所有的其它程序再试.

关于此信息代码的详细信息与解决办法请访问这个网址: http://www.disktool.cn/jiaocheng/errorcode.html

【解决办法】

使用DiskGenius处理解决修复了

好的,以下是一个简单的bootloader代码实现,用于对读取到的update.bin文件进行程序升级: ```c #include "gd32f3x0.h" #include <stdio.h> #include <string.h> #define APP_ADDRESS 0x08004000 // 应用程序的起始地址 #define PAGE_SIZE 1024 // 扇区大小 typedef void (*pFunction)(void); pFunction Jump_To_Application; uint32_t JumpAddress; void bootloader_main(void) { uint8_t *update_buffer; uint32_t update_size; uint32_t update_crc; uint32_t i; uint32_t app_size; uint32_t app_crc; uint8_t erase_flag = 0; uint32_t sector_error = 0; /* 初始化GPIO、UART、USB等外设 */ /* ... */ /* 等待USB连接 */ while (!usb_detected()); /* 从USB接口读取update.bin文件 */ update_buffer = usb_read_file("update.bin", &update_size); /* 计算update.bin的CRC码 */ update_crc = crc32(update_buffer, update_size); /* 计算应用程序的大小和CRC码 */ app_size = get_app_size(); app_crc = crc32((uint8_t*)APP_ADDRESS, app_size); /* 比较update.bin和应用程序的CRC码 */ if (app_crc != update_crc) { erase_flag = 1; } /* 如果需要,擦除应用程序的扇区 */ if (erase_flag) { FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR); FLASH_ErasePage(APP_ADDRESS); sector_error = FLASH_GetFlagStatus(FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR); FLASH_Lock(); if (sector_error != 0xFFFFFFFF) { /* 擦除扇区失败,进入错误处理流程 */ error_handler(); } } /* 将update.bin写入应用程序的扇区 */ FLASH_Unlock(); for (i = 0; i < update_size; i += PAGE_SIZE) { FLASH_ProgramPage(APP_ADDRESS + i, &update_buffer[i]); sector_error = FLASH_GetFlagStatus(FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR); if (sector_error != 0xFFFFFFFF) { /* 写入扇区失败,进入错误处理流程 */ error_handler(); } } FLASH_Lock(); /* 跳转到应用程序 */ JumpAddress = *(__IO uint32_t*) (APP_ADDRESS + 4); Jump_To_Application = (pFunction) JumpAddress; __set_MSP(*(__IO uint32_t*) APP_ADDRESS); Jump_To_Application(); } ``` 这个bootloader实现的主要流程是: 1. 初始化外设,等待USB连接。 2. 从USB接口读取update.bin文件,并计算其CRC码。 3. 计算应用程序的大小和CRC码,比较update.bin和应用程序的CRC码,如果不同,则需要擦除应用程序的扇区。 4. 如果需要,擦除应用程序的扇区。 5. 将update.bin写入应用程序的扇区。 6. 跳转到应用程序的起始地址。 需要注意的是,这个bootloader代码实现仅供参考,具体实现过程可能会因为硬件环境和需求的不同而有所不同。同时也需要注意程序升级的安全性和可靠性,避免出现数据丢失或者损坏等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WuLve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值