背景:
stm32 uboot代码没有版本号,在app程序中无法获取到,不好维护uboot代码。
思路:
本想在app升级时,通过上位机与uboot代码的通信来获取到uboot的版本,然后记录到日志中。组长说uboot和app应该能通信,遂搜索了下,基本确认可以通过备份寄存器的方式完成。
搜到的帖子:
1、stm32 boot和app之间的数据传递
https://blog.csdn.net/micky613/article/details/134276489
个人点评:介绍了典型方法的原理,重要。
2、stm32备份寄存器的配置与使用
https://blog.csdn.net/william_zhang_csdn/article/details/106214014?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-8-106214014-blog-129581291.235^v43^control&spm=1001.2101.3001.4242.5&utm_relevant_index=11
个人点评:演示了备份寄存器的使用,可以参考
3、读写bkp&实时时钟
https://blog.csdn.net/m0_70732442/article/details/131941050
个人点评:读写bkp以及rtc的演示程序,比较重要
个人实践代码:
用了3个寄存器:bkp_dr1、bkp_dr2、bkp_dr3。
uboot中写入这3个寄存器,表示年、月、日,app中来读。
注意:先用使能时钟和访问开关,才能写。
rcc_apb1periphclockcmd(rcc_apb1periph_pwr,enable);
rcc_apb1periphclockcmd(rcc_apb1periph_bkp,enable);
pwr_backupaccesscmd(enable);
bkp_writebackupregister(bkp_dr1, 2024);
bkp_writebackupregister(bkp_dr2, 2);
bkp_writebackupregister(bkp_dr3, 19);
app中读:
rcc_apb1periphclockcmd(rcc_apb1periph_pwr,enable);
rcc_apb1periphclockcmd(rcc_apb1periph_bkp,enable);
pwr_backupaccesscmd(enable);
g_bkp_dr1 = bkp_readbackupregister(bkp_dr1);
g_bkp_dr2 = bkp_readbackupregister(bkp_dr2);
g_bkp_dr3 = bkp_readbackupregister(bkp_dr3);