copy_loop: ; 循环加载当前段内容
ldb *a3++,b5 ;将flash地址中的数放到B5 8bit
sub b0,1,b0 ; decrement counter 每加载一个,字节数减1
[ b0] b copy_loop ; setup branch if not done 判断加载字节数是否为零
[!b0] b copy_section_top ; 当前段加载成功后转入加载下一段
zero a1 ; 执行完这条指令B5和A4中才有新的数据
[!b0] and 3,a3,a1 ; 什么条件下执行??
stb b5,*a4++ ; 将flash读出到B5中的段内容放到对应的ram地址中,
; 按bit8搬移
[!b0] and -4,a3,a5 ; round address up to next multiple of 4
[ a1] add 4,a5,a3 ; round address up to next multiple of 4
;****************************************************************************
;* Jump to entry point
;****************************************************************************
copy_done:
mvkl 0x00000100, b0 ; set pll_div1 register value
nop 5
copy_done1:
sub b0,1,b0
[ b0] b copy_done1 ; have we copied all sections?
nop 9
b .S2 b1 ;跳转到c入口标签地址 这句还不太懂
nop 9
|