Forums

跨银行电话(9S12DG128)

开始于 da_old_skool 2008年10月7日
你好

我在交叉银行电话方面遇到了问题,希望有人
可以帮我

目标:9s12DG128
编译器:宇宙

我已经使用9s12DJ64很久了,但是现在我想去
DG128,因为它具有两倍的内存。
我创建了一个新的链接器文件(.lkf),并且代码可以编译,但是
运行时,代码在遇到跨银行调用时崩溃。
我在存储页面中的功能中使用了@far关键字。

有人有什么想法吗?

我创建了一个用于调试的压缩程序,这是我的链接器文件
用过的:

-----------------------------
#MC68HC12DG128的链接命令文件
#COSMIC Software版权所有(c)2001
#手动填充页面
#
+ seg .const -b 0x1c000 -o 0xc000 -n .const -s flash#常量
没有银行存款(第7页)
+ seg .data -b 0x400 -m 0xffe#数据起始地址

+ seg .eeprom -b 0x3800 -m0x7ff -n EEPROM -c

+ def __sbss = @。bss#bss的起始地址

+ seg .text -b 0x00000 -o 0x8000 -m 0x4000 -n .page0 -s flash#页面0
#在此处输入页面0的目标文件
+ seg .text -b 0x04000 -o 0x8000 -m 0x4000 -n .page1 -s flash#页面1
#在此处输入第1页的目标文件
+ seg .text -b 0x08000 -o 0x8000 -m 0x4000 -n .page2 -s flash#页面2
#在此处输入第2页的目标文件
+ seg .text -b 0x0c000 -o 0x8000 -m 0x4000 -n .page3 -s flash#页面3
#在此处输入第3页的目标文件
+ seg .text -b 0x10000 -o 0x8000 -m 0x4000 -n .page4 -s flash#页面4
#在此处输入第4页的目标文件
+ seg .text -b 0x14000 -o 0x8000 -m 0x4000 -n .page5 -s flash#第5页
#在此处输入第5页的目标文件
“ .. \ source \ test.o”
+ seg .text -b 0x18000 -o 0x4000 -m 0x4000 -n .page6 -s flash#第6页
没有银行
#在此处输入第6页的目标文件
“ .. \ source \ isr.o”
“ .. \ source \ pll.o”
“ .. \ source \ main.o”
+ seg .text -a .const -n .common -it -s flash#第7页
#在此处输入第7页的目标文件
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ crtsi.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libe.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libi.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libm.h12

+ seg .vector -b 0x1ffb8 -o 0xffb8 -s flash#矢量起始地址
“ .. \ source \ vector_dg128.o”#中断向量
+ def __memory = @。bss#库使用的符号
+ def __stack = 0x2000#堆栈指针初始值
-----------------------------

当main.c尝试调用test.c中的函数时,代码崩溃。

我会很感激我能得到的任何帮助!谢谢!
你好

我相信S12DG128的第一页应该偏向0xE0000
给您的PPAGE为0x38。例如

+ seg .ftext -b 0xE0000 -o 0x8000 -m 0x4000 -nPAGE0 -sCODE#页面0
银行代码PPAGE = 0x38

mod0.o

+ seg .ftext -b 0xE4000 -o 0x8000 -m 0x4000 -nPAGE1 -sCODE#页面1之1
银行代码PPAGE = 0x39
+ seg .const -aPAGE1
....

+ seg .text -b0xF8000 -o 0x4000 -m 0x4000 -nFIXED1 -sCODE#固定页面
1在0x4000上也第6页

+ seg .text -b0xFC000 -o 0xC000 -m 0x3F80 -nFIXED2 -sCODE -ck#固定页面
2在0xC000处也第7页
...

“ libe.h12”#HCS12
EEPROM库
“ libi.h12”#整数
图书馆
“ libm.h12”#宇宙
HC12 / HCS12机器库(必需)

+ seg .const -b 0xFFF80 -o 0xFF80#处的向量
逻辑地址0xFF80
vect_HCS12D.o

希望能有所帮助。

麦克风

- - -原始信息 - - -
发件人:6 ... [mailto:6 ...]代表
da_old_skool
发送:2008年10月7日,星期二,下午3:28
至:6 ...
主题:[68HC12]跨银行通话(9S12DG128)

你好

我在交叉银行电话方面遇到了问题,希望有人
可以帮我

目标:9s12DG128
编译器:宇宙

我已经使用9s12DJ64很久了,但是现在我想去
DG128,因为它具有两倍的内存。
我创建了一个新的链接器文件(.lkf),并且代码可以编译,但是
运行时,代码在遇到跨银行调用时崩溃。
我在存储页面中的功能中使用了@far关键字。

有人有什么想法吗?

我创建了一个用于调试的压缩程序,这是我的链接器文件
用过的:

-----------------------------
#MC68HC12DG128的链接命令文件
#COSMIC Software版权所有(c)2001
#手动填充页面
#
+ seg .const -b 0x1c000 -o 0xc000 -n .const -s flash#常量
没有银行存款(第7页)
+ seg .data -b 0x400 -m 0xffe#数据起始地址

+ seg .eeprom -b 0x3800 -m0x7ff -n EEPROM -c

+ def __sbss = @。bss#bss的起始地址

+ seg .text -b 0x00000 -o 0x8000 -m 0x4000 -n .page0 -s flash#页面0
#在此处输入页面0的目标文件
+ seg .text -b 0x04000 -o 0x8000 -m 0x4000 -n .page1 -s flash#页面1
#在此处输入第1页的目标文件
+ seg .text -b 0x08000 -o 0x8000 -m 0x4000 -n .page2 -s flash#页面2
#在此处输入第2页的目标文件
+ seg .text -b 0x0c000 -o 0x8000 -m 0x4000 -n .page3 -s flash#页面3
#在此处输入第3页的目标文件
+ seg .text -b 0x10000 -o 0x8000 -m 0x4000 -n .page4 -s flash#页面4
#在此处输入第4页的目标文件
+ seg .text -b 0x14000 -o 0x8000 -m 0x4000 -n .page5 -s flash#第5页
#在此处输入第5页的目标文件
“ .. \ source \ test.o”
+ seg .text -b 0x18000 -o 0x4000 -m 0x4000 -n .page6 -s flash#第6页
没有银行
#在此处输入第6页的目标文件
“ .. \ source \ isr.o”
“ .. \ source \ pll.o”
“ .. \ source \ main.o”
+ seg .text -a .const -n .common -it -s flash#第7页
#在此处输入第7页的目标文件
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ crtsi.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libe.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libi.h12
C:\ Progra〜1 \ COSMIC \ CX12 \ Lib \ libm.h12

+ seg .vector -b 0x1ffb8 -o 0xffb8 -s flash#矢量起始地址
“ .. \ source \ vector_dg128.o”#中断向量
+ def __memory = @。bss#库使用的符号
+ def __stack = 0x2000#堆栈指针初始值
-----------------------------

当main.c尝试调用test.c中的函数时,代码崩溃。

我会很感激我能得到的任何帮助!谢谢!