Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69370
  • 博文数量: 23
  • 博客积分: 906
  • 博客等级: 准尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 23:57
文章分类

全部博文(23)

文章存档

2011年(3)

2010年(20)

我的朋友

分类: C/C++

2010-06-22 17:49:59

文件:hexbin.rar
大小:7KB
下载:下载
文件: TestKeil.rar
大小: 13KB
下载: 下载
(原创)
一.
加入STARTUP.A51 L51_BANK.A51,并把STARTUP.A51文件中的关于BANK的部分功能使能.
EXTRN CODE (?B_SWITCH0)
CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
二.设置如下:
C51选项:
Interrupt verctors at a :0x2000
如果要直接烧录使用时,则需要在前面加入跳转操作.
Target选项:
Code Banking: 0x8000-0xffff
BL51 Locate选项:
Code Range: 0X2000-0X7FFF
Xdata Range: 0X0000-0X7FFF
//如果需要指定C函数的绝对地址定位如些设置Code :?PR?MAIN?TEST(0X2100),?PR?*?TEST
三.修改操作:
修改STARTUP.A51中代码如下
PUBLIC  ?C_STARTUP
CSEG    AT      2000H
这个不应该是main()的地址,而是STARTUP.A51中的起始地址.
四.使用处理
如果要直接烧录使用时,则需要在前面加入中断跳转操作,如果加入跳转后就可利用JTAG可以直接调试
(调试时不用关心此部分,和不设置时操作相同)
;NAME ?APP_JMP    ;模块名
  CSEG AT 0H
   ;DB  12H     ; fixed encoding for parity information
 LJMP 2000H
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 LJMP 2013H
;END
;?CO?Bin_Verify.A51?n SEGMENT OFFS 1000H
               NAME    ?C_STARTUP
?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATA
                RSEG    ?STACK
                DS      1
                EXTRN CODE (?C_START)
                PUBLIC  ?C_STARTUP
                CSEG    AT      2000H
?C_STARTUP:     LJMP    STARTUP1
                RSEG    ?C_C51STARTUP
STARTUP1:
....................
实际操作时可以直接跳转到BANK4中,在BANK4中加入处理.然后检测COM更新数据,其中可以利用串口,也可不使用.
注意如果从更新跳转到应用时需要在应用的开始就清空所有的数据空间(在STARTUP.A51中有此部分,不应该屏蔽).
其它:
生成BIN应用文件
User选项:
After Buile/ReBuile
Run User Program #1 :../hexbin.exe ../Debug/AC800.hex ../Debug/AC800.bin Intel
  
阅读(1547) | 评论(1) | 转发(0) |
0

上一篇:工具,任务集合

下一篇:C51 绝对地址定位

给主人留下些什么吧!~~

chinaunix网友2010-07-05 01:02:17

so great!