QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2818|回复: 2

怎样用软件复位4510?

[复制链接]
发表于 2007-3-19 16:21:10 | 显示全部楼层 |阅读模式
怎样用软件复位4510,使之从bootloader开始启动?
发表于 2007-3-20 20:43:01 | 显示全部楼层
可以模仿 bootloader 代码里面 go 命令的实现,用 current_pc () 来实现跳转到 0 地址应该就可以。  
回复

使用道具 举报

 楼主| 发表于 2007-3-27 16:08:15 | 显示全部楼层
版主所说的方法不行啊。
请看我的试验结果:

1.程序
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
  unsigned long addr;
  
  if (argc != 2)
  {
    printf("usage: %s xxxx(hex num)\n", argv[0]);
    return -1;
  }
  addr = strtoul(argv[1], NULL, 16);

  printf("go to 0x%.8x\n", addr);
  (*(void (*)(void))addr)();

  return 0;
}

2.将之编译为go.
3.相关启动信息
## Booting image at 01030000 ...
   Load Address: 00008000
   Entry Point:  00008000
4.运行结果
/> go 0
go to 0x00000000
pid 20: failed 11
/> go 1030000
go to 0x01030000
pid 21: failed 4
/> go 8000
go to 0x00008000
Unhandled fault: external abort on linefetch (F4) at 0x00000001
fault-common.c(97): start_code=0x79d040, start_stack=0x7a5f8c)
pid 22: failed 7
/>

5.我查了一下错误信息
11=Resource temporarily unavailable
4=Interrupted system call
7=Argument list too long

6.这一命令应该和bootloader里面的reset命令相似,可是这一命令太复杂了,
我没看懂。不会做。版主能帮忙吗?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-21 20:43 , Processed in 0.037366 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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