你好
我在交叉银行电话方面遇到了问题,希望有人
可以帮我
目标: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中的函数时,代码崩溃。
我会很感激我能得到的任何帮助!谢谢!
跨银行电话(9S12DG128)
开始于 ●2008年10月7日
回覆者 ●2008年10月7日2008-10-07
你好
我相信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中的函数时,代码崩溃。
我会很感激我能得到的任何帮助!谢谢!
我相信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中的函数时,代码崩溃。
我会很感激我能得到的任何帮助!谢谢!