韦东山判断nor flash还是nand flash启动汇编代码解析

这段汇编代码用于判断系统是以NOR Flash还是NAND Flash启动。通过尝试写入0到0地址并比较,若地址值不变则为NOR Flash,反之为NAND Flash。NOR Flash只读,写操作无效,而NAND Flash可读写,能执行写操作导致判断成立。

先贴代码:

        mov r1, #0
ldr r0, [r1] /* 读出原来的值备份 */
str r1, [r1] /* 0->[0] */
ldr r2, [r1] /* r2=[0] */
cmp r1, r2 /* r1==r2? 如果相等表示是NAND启动*/
ldr sp, =0x40000000+4096  /*先假设是nor启动*/
moveq sp, #4096     /*nand 启动*/
streq r0, [r1]      /*回复原来的值*/


判断nor flah还是nand flash启动的关键是:nor flash只可读、不可写。所以用nor flash启动,0地址就是nor flash 

0地址,所以代码的第3句往0地址写入0是无法实现的,0地址还是它原来的值。所以后面的判断不成立sp = 0x40000000+4096

而nand flash是将前4k内容copy到内存中,是可读可写,所以执行到第三局代码,0地址被写入0,判断成立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值