uboot源码阅读(八)江湖人物go
2011-07-26 19:58
796 查看
我们把去掉符号链接等的bin文件,加载到内存中以后使用命令go就可以执行这个程序.
我感觉还是比较好理解的,不知道还是我没理解好!
我感觉还是比较好理解的,不知道还是我没理解好!
int do_go (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong addr, rc; int rcode = 0; if (argc < 2) { printf ("Usage:\n%s\n", cmdtp->usage); return 1; } addr = simple_strtoul(argv[1], NULL, 16); printf ("## Starting application at 0x%08lX ...\n", addr); /* * pass address parameter as argv[0] (aka command name), * and all remaining args */ #if defined(CONFIG_I386) /* * x86 does not use a dedicated register to pass the pointer * to the global_data */ argv[0] = (char *)gd; #endif #if !defined(CONFIG_NIOS) rc = ((ulong (*)(int, char *[]))addr) (--argc, &argv[1]);//这里是把要执行的位置的地址强制转化为函数指针,类似程序的入口地址 #else /* * Nios function pointers are address >> 1 */ rc = ((ulong (*)(int, char *[]))(addr>>1)) (--argc, &argv[1]); #endif if (rc != 0) rcode = 1; printf ("## Application terminated, rc = 0x%lX\n", rc); return rcode; } /* -------------------------------------------------------------------- */ //向命令列表里面注册go命令 U_BOOT_CMD( go, CFG_MAXARGS, 1, do_go, "go - start application at address 'addr'\n", "addr [arg ...]\n - start application at address 'addr'\n" " passing 'arg' as arguments\n" );转载请注明出处:/article/8604672.html
相关文章推荐
- uboot源码阅读(二)什么是江湖,链接文件u-boot.lds
- uboot源码阅读(三)江湖的历史 uboot第一阶段start.S
- uboot源码阅读(四)江湖的面纱 uboot第二阶段
- kubernetes源码之watch包filter.go阅读理解三
- go-tour源码阅读
- uboot源码阅读(九)开发板启动串口输出
- Go语言Http Server源码阅读
- go源码阅读笔记(math.1)
- nsq源码阅读 nsqlookupd源码一 nsqlookupd.go
- Eclipse源码阅读:GotoTypeAction
- nsq源码阅读 nsqlookupd源码三 tcp.go tcp_server.go
- go源码阅读笔记(math.3)
- nsq源码阅读 nsqd源码一 apps/nsqd/nsqd.go
- go-ethereum源码阅读环境
- Go 1.9 sync Map 源码阅读笔记
- 阅读go项目源码,解决无法快速找到interface有哪些struct实现问题
- uboot源码阅读(一)初入江湖,认识uboot的Makefile
- Go net/http 主要功能及部分源码阅读
- go-tour源码阅读
- nsq源码阅读 nsqlookupd源码四 lookup_protocol_v1.go