Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Bootloader
IAP问题
发布于 2014-09-25 09:41:30 浏览:3977
订阅该版
各位, 我参考stm32f4_iap_using_usart把FLASH擦写的代码移植到自己的产品里面,希望能够开机自动把TF卡的bin文件烧录到SPI-FLASH里面。 boot---0x8000000~0x8004000 APP---0x8004000~0x080FFFFF 测试发现: 1)FLASH_If_Erase(APPLICATION_ADDRESS);会卡死 2)使用FLASH_If_Write(&flashdestination, (uint32_t*) ramsource, (uint16_t) packet_length/4) 升级和烧录到SPI-FLASH里面一样的rtthread.bin没有问题,但是升级不一样的rtthread.bin则直接出错。 请问是什么原因?如何解决呢?我们需要做TF卡升级APP,希望开机自动检测TF卡上是否有升级文件,有则自动擦写升级。 补充:rtthread.bin采用的是romfs。
查看更多
5
个回答
默认排序
按发布时间排序
aozima
2014-09-25
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
没听明白楼主到底说的啥。 建议单步调试并多分析。
bjhdtv
2014-09-25
这家伙很懒,什么也没写!
感谢回复,我的意思就是说目前STM32F4板子上面的SPI-FLASH有Boot区域+APP区域,然后希望板子启动之到APP之后,能够mount TF卡,检测是否有升级文件rtthread.bin,有的话,则循环读取该文件,每次读256bytes,擦写到APP区域,全部擦写完毕,则跳转重启。 目前碰到的问题是:循环读取该文件,擦写到APP区域,FLASH_If_Write就挂掉了。 APP启动之后,能否自己擦写自己? 补充: 1)TF卡里面的rtthread.bin文件和烧入到APP一样,则反复写都没问题;一旦TF卡里面的rtthread.bin文件和烧入到APP不一样,则挂了。 2)APP是采用romfs,TF卡是fat32文件系统 3)附上代码: ``` if (dfs_file_open(&src_fd, "/sd/rtthread.bin", DFS_O_RDONLY) < 0) { rt_kprintf("Open %s Failed ", "/sd/rtthread.bin"); return ; } else { rt_kprintf("Open %s OK,src_fd.size=%d ", "/sd/rtthread.bin",src_fd.size); } if (src_fd.size > (USER_FLASH_SIZE + 1)) { rt_kprintf("src_fd.size=%d > %d ",src_fd.size,USER_FLASH_SIZE+1); return ; } /*rt_kprintf("FLASH_If_Erase start "); FLASH_If_Erase(APPLICATION_ADDRESS); rt_kprintf("FLASH_If_Erase over ");*/ rt_hw_interrupt_disable(); do { memset(block_ptr,0,BUZZER); read_bytes = dfs_file_read(&src_fd, block_ptr, BUZZER); if (read_bytes > 0) { //write_spiflash(block_ptr,read_bytes); //dfs_file_write(&fd, block_ptr, read_bytes); ramsource = (uint32_t)block_ptr; packet_length=BUZZER; totle_length+=read_bytes; /* Write received data in Flash */ if (FLASH_If_Write(&flashdestination, (uint32_t*) ramsource, (uint16_t) packet_length/4) == 0) { rt_kprintf("write ok:%d,allszie=%d ",packet_length,totle_length); } else /* An error occurred while writing to Flash memory */ { rt_kprintf("write err:%d,allszie=%d ",packet_length,totle_length); return ; } } } while (read_bytes > 0); dfs_file_close(&src_fd); rt_thread_delay(RT_TICK_PER_SECOND * 3); rt_kprintf("FLASH_If_Write over:%d bytes,Now reboot ",totle_length); if (1) /* execute the new program */ { JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4); /* Jump to user application */ Jump_To_Application = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS); Jump_To_Application(); } ```
bjhdtv
2014-09-25
这家伙很懒,什么也没写!
上面的代码rt_hw_interrupt_disable(); 是多余,刚才调试使用的。
bjhdtv
2014-09-25
这家伙很懒,什么也没写!
TF卡升级固件不是在Boot里面做的,而是在APP里面做的。boot里面没有rt-thread,只是参考stm32f4_iap_using_usart简单改了下。不知这个方案是否可行? 谢谢
撰写答案
登录
注册新账号
关注者
0
被浏览
4k
关于作者
bjhdtv
这家伙很懒,什么也没写!
提问
9
回答
14
被采纳
0
关注TA
发私信
相关问题
1
Linux下通过USBTinyISP为Arduino开发板烧?写Bootloader
2
请教修改NVIC后RTT调度函数失效的问题[已解决 bootloader中打开了不必要的中断]
3
进入bootloader的方式探讨
4
求助:IAP里的APP使用的RTT,跳转后出错。[已解决]
5
有没有人在STM32F103上用UART IAP跑过RT-Thread?
6
想做网口的IAP远程升级,不知可不可行
7
[已解决]请教基于RTT的IAP程序切换到应用程序不成功的问题(基于STM32F4)?
8
stm32f4xx-----IAP移植APP程序需要注意的地方
9
在调试IAP网络升级遇到跳转之后bootloader程序网络不通
10
stm32f103+dm9000的IAP操作
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部