QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1037|回复: 1

关于uClinux中head.S的奇怪问题

[复制链接]
发表于 2005-7-8 19:54:39 | 显示全部楼层 |阅读模式
我用的内核是linux-2.4.24,编译好内核映象后导入,启动时却没有动静,通过我跟踪反汇编代码,发现在开始程序head.S中由LC0代表的几个地址错误,_load_addr地址为

.type LC0,#object      由反汇编单步运行可以知道地址           linux.lds值
LC0: .word __bss_start      0x2E9D20E0  
.word _end                      0x2F21580C
.word _load_addr               0x00 80 00 0C                       0x0c 00  80 00         
.word _start                      0x20 00 00 0C                        0x0c 20 00 00
.word user_stack+4096     0x2f31580c

可我配置的_load_addr地址为0c008000,,_start地址为0c200000,而且通过compress目录下在编译时生成的linux.lds可以知道是对的。

linux.lds:   sections{   . = 0x0c008000;
                                _load_addr = .  ;
                                . = 0x0c200000;
                               _text = .;

而且很奇怪head.S中的_load_addr值和linux.lds中的值好像还有些规律。我不知道这是怎么回事,请各位看看,谢谢
发表于 2005-7-12 17:51:48 | 显示全部楼层
看着像是大小端的问题(big endian/little endian).
你说你原来的地址是0x0c008000,如果以不同的字节序存储和读出才会反.
建议看一看你的linker的参数,也许会有帮助.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 02:03 , Processed in 0.039378 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表