JAVA裸机执行_uboot启动后在内存中运行裸机程序hello

本文介绍了在JAVA裸机环境下,通过uboot启动后将程序下载到内存50008000处运行遇到的问题及解决过程,包括uboot的打印信息修改、hello_world应用程序的加载失败以及自己编写hello.c程序的正确编译和链接方法。通过查看System.map找到printf函数地址,并理解裸机程序的ELF头信息和链接地址问题。
摘要由CSDN通过智能技术生成

如题,实现过程中发现3额问题,先写下来,待解答:

1、uboot启动后再dnw上打印许多信息,我想改变其中的打印信息或加上自己的打印信息以证明程序运行到何处。修改完后重新编译uboot.bin。

在DNW下执行dnw 50008000 USB下载uboot.bin到内存50008000处, go 50008000,从内存50008000处运行我刚下载的程序,发现我修改的内容并未显示。

重新执行dnw 50008000,nand erase 0 100000,nand write.uboot 50008000 0 100000,后从nand直接启动,发现我修改的内容被打印出来了。

总结:可能的原因:1、程序下载到50008000,但50008000处并非有执行命令。2、确实从50008000处执行了,但uboot.bin里的start.s会调用原来nand里的uboot.bin执行

2、uboot里有个examples文件夹里有hello_world应用程序(姑且这么说吧):

我dnw 50008000 hello_world.bin,go 50008000,执行后重启了。

看了makefile里LOAD_ADDR = 0xc100000,dnw c10000 hello_world.bin,go c1008000,执行后停住了

然后又看了半天makefile,太繁琐,无果,没解决掉。

3、自己写了个hello.c

dnw 50008000 ,go 50008000,运行ok,打印出hello world.

printf函数是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值