Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AT
(记)终于把http_ota跑通了,顺带FAL和SFUD
发布于 2019-05-23 09:14:56 浏览:5961
订阅该版
**背景1**:从了解到使用rt-thread不足一个月时间,对rt-thread只有一个简单的入门,移植和开发基本都是论坛里面查的资料和官方文档,本人使用mcu是stm32f103,使用的bsp是stm32下根据文档新移植的rt-thread,项目前期要求一定要支持远程升级,无奈手握的只是一个sim800c,在学习和使用rt-thread的过程中,SAL和webclient,逐渐进入我的视野,尤其是SAL层的开发与开源,我对rt-thread团队感到十分的敬佩。 **背景2**:之前按照文档走过好几次,没一次能通过http_ota升级成功,开始基本是最小系统,整个bin文件不超过60K,但是[每次下载到百分之90左右就下载不下来了](https://www.rt-thread.org/qa/thread-11235-1-1.html),后来考虑到实际开发包含这种包后(尤其是U8G2加上中文显示),bin文件会很大,所以插了资料在spi口上外挂了一个16Mb的norflash,型号是mx25L1606e,经过了几次摸索终于搞定了和http_ota,顺便把FAL和SFUD也记录一下。 **一.基本的步骤**(简单从移植开始,因为初期可能就会有问题) 1. 先详细看官方的[BSP制作教程](https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md),其中一定要明确stCubeMX的作用,尤其是引脚的功能定义,从老的stm32f10x_HAL迁移过来的话,经常会忘记定义引脚,总结一定要先在cubemx定义好引脚功能,然后在kconfig中添加对应的头文件,然后系统当中才能使用。 2. 在步骤1,走通的情况下,接下来就是了解[AT组件](https://www.rt-thread.org/document/site/programming-manual/at/at/),[FAL组件](https://github.com/RT-Thread-packages/fal)和[SFUD组件](https://github.com/armink/SFUD),AT和FAL都在online package里面,SFUD在components--->device drivers---->SPI device driver下, 这边可以大致先浏览一下这些组件,不一定立马加进来update。 3. 接下来就是先把spi上挂的norflash驱动起来,需要参考官方的[SPI文档](https://www.rt-thread.org/document/site/programming-manual/device/spi/spi/),然后可以在application中新建一个spi_flash_init.c 添加代码`rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12);` 来实现系统加载时就把spi flash给驱动起来,如果没有报错的话,可以看在msh/> 中list_device 看到spi20 这个spi device。 4. 添加SFUD,如果步骤3走通,这一步就比较简单,直接在components中把sfud打开,就可以了,在msh中可以用sf一些相关的命令来实现对flash的读写。 5. 添加FAL,这一步最重要,需要修改和了解的地方最多,首先在Online packages里面把fal添加进来,需要打开FAL uses SFUD drivers,和FAL partition table config has defined on 'fal_cfg.h', 关于fal_cfg.h这个如何修改可以参见[stm32通用bootloader](https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/),**然后比较重要的是fal_init()这个函数放的位置,一定要放到sfud初始化完成之后,sfud probe到了norflash,再去调用fal_init()**,不然看上去fal初始化成功了,但是一直会有错误。如果成功了msh中fal ,可以对相关的分区进行读写等。 6. 最后就是AT模块和http_ota,这边就相对简单一些。 好像论坛在线的MARKDOWN,不能添加本机图片,本来想插一些图片来说明更加直观的,这边就先简单说一下我跑通的步骤,然后我会整理个word文档,如果有朋友需要的话可以下面留言,我到时候发给你
查看更多
35
个回答
默认排序
按发布时间排序
Ernest
2019-07-16
这家伙很懒,什么也没写!
>请问 如果不用外部norflash 只用片上flash该如何解决这个问题呢,我目前固件大小是90多k,每次下载到87%就 ... --- 下载分区大小是否足够
yqiu
2019-05-23
这家伙很懒,什么也没写!
赞楼主的分享,:D 再整理下图文并茂些可以联系小师妹发篇公众号文章了,分享项目开发过程中亲历的坑。
RT-WH
2019-05-24
这家伙很懒,什么也没写!
前几天 刚刚调通http_ota 论坛上 还发了提问貌似没有楼主这么系统的掌握
我夏了夏天
认证专家
2019-05-24
Life isn't about finding yourself, life is about creating yourself.
给楼主点赞!!!
shadowliang
2019-05-24
Hello,world!!!
楼主厉害,给楼主点赞!!!
richey07
2019-05-26
这家伙很懒,什么也没写!
[i=s] 本帖最后由 richey07 于 2019-5-26 16:17 编辑 [/i] 请问楼主,如果采用STM32片上的flash,还会有升级到95%失败的现象吗? 为什么更换外部nor flash会解决这个问题呢?
kaige
2019-06-05
这家伙很懒,什么也没写!
您好,我也是用stm32f103rct6这个芯片,现在也需要在线升级,请问FAL组件里面除了【fal_cfg.h】这个文件要添加外,【fal_flash_sfud_port.c】和【fal_flash_stm32f2_port.c】需要改动吗?这2个文件怎么跟stmf1匹配呢?
shao7936626
2019-06-05
这家伙很懒,什么也没写!
>您好,我也是用stm32f103rct6这个芯片,现在也需要在线升级,请问FAL组件里面除了【fal_cfg.h】这个文件要 ... --- 不好意思,回复晚了,这段时间驱动层搞好了,在弄应用,fal组件添加后,应该会自动添加后面的文件,还有fal_flash_stm32f2_port.c 肯定不对,要对应F1的,而且我记得后来的fal的驱动都更新了,名字也应该不是这个了,请问一下,你用的哪个Bsp啊
insect2006
2019-06-19
这家伙很懒,什么也没写!
求发整理分档,感谢!
wuhanstudio
2019-06-19
这家伙很懒,什么也没写!
赞,顺便一提 U8G2 可以参照这里裁剪掉不需要的字库,减少体积 [https://github.com/wuhanstudio/rt-u8g2/issues/3](https://github.com/wuhanstudio/rt-u8g2/issues/3)
撰写答案
登录
注册新账号
关注者
1
被浏览
6k
关于作者
shao7936626
这家伙很懒,什么也没写!
提问
51
回答
139
被采纳
1
关注TA
发私信
相关问题
1
rt-thread 2g/3g/4g通信模块的教程有吗?
2
基于AT指令,用esp8266如何连接mqtt?
3
AT组件使用问题
4
官方AT客户端应用笔记的几个小tip
5
RTT的SAL能够判断使用LWIP或者AT?
6
rt_therad AT组件移植不成功(结贴)
7
AT组件在哪个版本的?
8
AT组件 连接 Onenet 连接失败
9
esp8266 AT指令 MQTT连接问题
10
AT组件使用问题之模块主动上报【已解决】
推荐文章
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
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
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
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部