代码如下
*uboot下没有库函数可用 所以不可以通过调用lib库的标准printf函数实现打印输出
*变相通过uboot本身实现的printf函数 利用函数指针进行printf函数调用
*该代码仅有一个代码段为main 可用objdump -d 查看
*其中的 show = 0x33f9303c;是通过查看uboot的System.map得到的 各个版本可能不同
编译:
*为了链接时指定text段 必须手动分开编译即链接过程 采用gcc -c 选项进行编译 ld链接
链接:
*Ttext 是程序的代码段 详细了解可以参考关键字 装载域 运行域 的相关解释
*不指定代码段的话 编译器将给与自动分配代码段地址 也可以理解为运行域是未知的 可能超出寻址范围
去头:
*-I 是输入文件 格式是elf32 小端 -O是输出文件为binary 即二进制
*去头主要是为了去除文件格式信息 去头后文件不包含格式信息 段信息等内容 只是由机器指令的二进制编码构成
*不去头的话 采用go指令将无法执行 go以后遇到的第一条指令将是文件的格式头
tftp下载到sdram:
通过go执行: