|
|
|
|
| 使用GNU工具移植uCOSII到日立的H8系列芯片上 |
 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-06-22 13:16 | 605 byte(s)]
 Re: 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-06-22 16:30 | 27 byte(s)]
 Re: 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-07-01 18:32 | 207 byte(s)]
 Re: 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-07-04 17:41 | 238 byte(s)]
 Re: 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-07-05 10:36 | 920 byte(s)]
 Re: 使用GNU工具移植uCOSII到日立的H8系列芯片上 - keyinwind [ 2005-07-12 19:17 | 21 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
使用的是gnu的针对h8系列的移植版本的tools,当编译有嵌入汇编指令的文件时有警告,也有错误:
Warning: Reg not valid for H8/300
Warning: Opcode `mov.l' with these operand types not available in H8/300 mode
Error: invalid operands
Warning: Opcode `trapa' with these operand types not available in H8/300 mode
Error: invalid operands
代码如下:
asm("mov.w r1,e0");
asm("mov.l er2,er1");
asm("trapa #1");
遇到这种情况是和编译器有关吗,还是有什么标志要设置??
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
还有个问题,如何使用GNU,也就是GDB来进行远程调试呢,也就是调试我的H8单片机上的程序,可以象用JTAG那样设置断点,查看地址空间之类,好象是有个STUB的东西要搞,现在还没什么概念啊,谁熟悉一点的说说里面的原理,如何开始呢???
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
还有个问题,我使用的是for h8s的toolchain,那么对于标准库我还需要重新实现一遍吗,还是可以使用GCC的标准库呢???? 一般在什么情况下需要自己重写一遍标准库,诸如memset,memcpy,strcpy等函数,实现的原则是什么,也就是不同硬件平台这些函数的实现有何不同呢??
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
caddr_t _sbrk(int incr)这是什么函数,好象是和linker紧密相关的,下面的实现是什么意思,大虾来讲讲
#include <_ansi.h>
#include <sys/types.h>
register char *stack_ptr asm ("sp");
caddr_t _sbrk(int incr)
{
extern char end; /* Defined by the linker */
static char *heap_end;
char *prev_heap_end;
if (heap_end == 0)
{
heap_end = &end;
}
prev_heap_end = heap_end;
if (heap_end + incr > stack_ptr)
{
//printf("Heap and Stack Collision occured
");
//abort ();
return (caddr_t)NULL;
}
heap_end += incr;
return (caddr_t)prev_heap_end;
}
|
|
|
[Original]
[Print]
[Top]
|
|
|