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
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |