| C6713的boot汇编代指令理解问题: 1、如下两行代码取自TI的二级bootloader程序。觉得不好理解。大家看看我的中文注释的对吗??? [ b0] b copy_loop ; 如果b不为0跳到copy_loop???????? [!b0] b copy_section_top ;如果b为0跳到copy_section_top??????? 2、以下为完整的bootloader拷贝功能代码,代码应该没问题,总觉得这两条指令放的位置不对,还没开始 复制怎么就跳转了??? ;**************************************************************************** ; copy sections ;**************************************************************************** mvkl copyTable, a3 ; load table pointer装载表的首地址 mvkh copyTable, a3 copy_section_top: ldw *a3++, b0 ; byte count 装载字节数到b0寄存器 ldw *a3++, b4 ; load flash start (load) address 装源地址到b4寄存器 ldw *a3++, a4 ; ram start address 装目的地址到a4寄存器 nop 2 [!b0] b copy_done ; have we copied all sections? 如果b0寄存器值0为则跳到完成处 nop 5 copy_loop: ldb *b4++,b5 ;从源地址装载一字节数据到b5寄存器 sub b0,1,b0 ; decrement counter 字节数减一 [ b0] b copy_loop ; setup branch if not done 如果b不为0跳到copy_loop???????? [!b0] b copy_section_top ;如果b为0跳到copy_section_top??????? zero a1 [!b0] and 3,a3,a1 stb b5,*a4++ ;开始复制??? [!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 .S2 _c_int00, B0 mvkh .S2 _c_int00, B0 b .S2 B0 nop 5 copyTable: ; count ; flash start (load) address ; ram start (run) address ;; .text .word _text_size .word _text_ld_start .word _text_rn_start ;; end of table .word 0 .word 0 .word 0 | 
C6713的boot汇编代指令理解问题:
 
					
				 
					
				
	paradoxfx  程序中的20,21行是不是应该放到 27行去啊??应为开始复制的代码是在24行啊,很困惑 
	1 ;****************************************************************************
2 ; copy sections
3 ;****************************************************************************
4        mvkl  copyTable, a3 ; load table pointer装载表的首地址
5        mvkh  copyTable, a3
6
7        
8   copy_section_top:
9         ldw   *a3++, b0     ; byte count 装载字节数到b0寄存器
10        ldw   *a3++, b4     ; load flash start (load) address 装载源地址到b4寄存器
11        ldw   *a3++, a4     ; ram start address  装载目的地址到a4寄存器
12        nop   2             
13
14 [!b0]  b copy_done         ; have we copied all sections?  如果b0寄存器值0为则跳到完成处
15        nop   5
16
17 copy_loop:
18        ldb   *b4++,b5      ;从源地址装载一字节数据到b5寄存器
19        sub   b0,1,b0       ; decrement counter  字节数减一
20 [ b0]  b     copy_loop     ; setup branch if not done  如果b不为0跳到copy_loop????????
21 [!b0]  b     copy_section_top     ;如果b为0跳到copy_section_top???????
22        zero  a1
23 [!b0]  and   3,a3,a1
24        stb   b5,*a4++    ;开始复制???
25 [!b0]  and   -4,a3,a5      ; round address up to next multiple of 4
26 [ a1]  add   4,a5,a3       ; round address up to next multiple of 4
27
28 ;****************************************************************************
29 ; jump to entry point
30 ;****************************************************************************
31 copy_done:
32        mvkl .S2 _c_int00, B0
33        mvkh .S2 _c_int00, B0
34        b    .S2 B0
35        nop   5
36
37 copyTable: 
38        
39                        ; count
40                        ; flash start (load) address 
41                        ; ram start (run) address
42         
41                    ;; .text
44                    .word _text_size
45                    .word _text_ld_start
46                    .word _text_rn_start
47    
48                                      
49                    ;; end of table
50                    .word 0
51                    .word 0
52                    .word 0
 
					
				回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

