你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

调试STM32+EMMC+GL3227E(固件1857,1858,1859)遇到的问题

[复制链接]
攻城狮Melo 发布时间:2022-11-4 16:22
问题描述:
( W$ P3 I# y+ z4 ?( f% I/ k        使用如题的结构,STM32将数据存储在EMMC上,电脑通过GL3227E(下文都简称3227)读取EMMC中的数据。使用STM32对EMMC进行格式化(一个主分区,exFAT)后,连接电脑后,发现并不能识别文件系统,必须用电脑重新格式化后才能使用;且电脑格式化之后,STM32再往EMMC里写数据,能确定已经写到了里面,但是连接电脑,却看不到任何STM32写进去的文件。
& |* \9 H% M1 {& F7 L& F5 m
* T8 h! a# r" l9 ~ 20210823092526672.png 8 W+ Z! O4 M# N5 L

6 B, J7 V  F" V( Z: l. {. d: E测试代码,电脑格式化后,STM32能写能读,但是电脑读不到写进去的文件
0 ~6 |# D7 T  ^# Z  B2 f0 d
# `$ e# j1 u; T8 W5 L 解决过程:9 }7 C, Z3 G6 ~( `- g+ m
        用了很多方法去尝试解决这个问题,就不一一赘述了,直接讲最终解决办法的实现过程# J8 l8 Y" ^3 u% B' s

( z7 G; G7 _1 k: i9 ^) J        根据经验,怀疑问题是出在分区表上(关于分区表我之前有写过点击查看),于是先使用STM32对EMMC进行格式化,对0扇区进行查看,如下图 - r( X/ h) o$ H: O

1 e' u0 }  e1 F 20210823094843341.jpg
: D; B; ~) X. r
5 m' C# r( [9 x0 {" w可以发现分区从扇区0x3F(63)开始,于是继续查看63扇区,如下图  {3 b7 k' {9 x0 p$ ]. F1 u
2 o1 K1 Y3 t6 E# H
20210823095029375.png 0 z( |8 F& y  o! ~

, H- h- m( i9 e) P  I. z; ~ 发现开头为0xEB 0x76 0x90 “EXFAT”,满足exFAT的卷格式,说明分区表没啥问题
1 }9 g: ]; b7 f# ?, Z; j) _% B# G- n( v0 o
我们继续,使用电脑通过3227对EMMC进行分区(2048对齐),并格式化,使用winhex对磁盘进行查看,首先是0扇区,如下图
, h# m$ }3 E! T2 q4 A  ?! a# w  H& p9 o" R
20210823101234732.png 8 J- {, ^+ C+ R7 C$ b

1 R9 G5 w/ `+ W2 j- _ 由于电脑分区时使用了2048字节对齐,我们可以看到分区表上,分区也的确是从0x0800(扇区2048)开始,我继续使用STM32对EMMC的扇区0进行查看(这一次没有使用STM32进行格式化操作),发现数据还是和之前一样# ~7 ?2 }2 }5 H5 m

5 x1 R4 G1 T# D- z3 m" Q; j9 Z 20210823102653331.png
% B5 `+ }5 @  ?/ m$ d
2 I0 d/ r) Q2 u3 I是不是发现端倪了?电脑通过3227对EMMC的分区表进行修改后(也能看到的确修改成功了),STM32却并未查看到分区表被修改。这两种查看分区表的方式都是查看的“各自所认为的扇区0”,STM32看到的是“实际的EMMC的扇区0”,而电脑是通过3227看到的他“所谓的扇区0”,因此电脑“通过3227看到的扇区0”可能不是“实际的扇区0”。
( u" m0 B8 P+ Y4 T8 P5 z+ K/ N4 b1 p- R  \* \
        这款芯片并没有什么加密,我猜测可能是3227读取的扇区有一定的偏移。于是我在STM32中添加了一段代码,在EMMC中去寻找“电脑通过3227看到的扇区0”。果不其然,在扇区256看到了相同的数据。这可是个好消息,于是我在winhex上又找了几个扇区的数据,使用STM32在偏移256扇区的地方均找到了相同的数据。结合之前“电脑通过3227修改分区表并没有修改EMMC实际扇区0上的分区表”这一现象,我认为3227在操作EMMC时偏移256扇区应该是个有效的猜测。1 o$ \5 T1 t% T* t8 K+ c7 s

+ Y4 |! l4 H- [ 解决方案:+ n  f: j% a+ Y7 L" T

: q  t; w3 y6 h6 W3 r        修改了STM32上user_diskio.c文件,使之访问EMMC时,和3227保持一致,均偏移256个扇区,代码如下
  e' E( h5 C3 D! P/ v3 [- ^5 H
$ X- v5 j/ O% e. L 20210823105505962.png
8 f9 j  Z( k5 {( H+ F  Y* [9 D 20210823105515513.png ' N0 I- i: h' r% h3 |* |

, S8 \' x2 d" {8 V        重复文章开头问题描述中的流程,问题消失,成功解决。3 A; ]1 r( M& q/ d
————————————————
+ J& h" |) S1 D7 F6 g版权声明:balibala. F5 p/ u- d: E7 V( X

- p! G4 |  x( M6 l* x
+ c$ v( m; ^1 G2 o
赞 收藏 评论0 发布时间:2022-11-4 16:22

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版