OK6410A 开发板 (八) 93 linux-5.11 OK6410A 从0到APP启动的过程中的二进制文件解读

2024-05-27 15:32

本文主要是介绍OK6410A 开发板 (八) 93 linux-5.11 OK6410A 从0到APP启动的过程中的二进制文件解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里说的二进制文件说的是 代码二进制文件 , 不是 数据二进制文件代码二进制文件是有格式的,linker按照格式生成代码二进制文件,loader按照格式解析代码二进制文件
在不同的系统上,二进制文件格式有不同的发展史
// 括号中是目前2023-10-18 23:10:21比较流行的格式,分别被三家OS支持!
// 三个OS支持三种不同的可执行二进制文件,而对这些格式的描述也来源于三家OS
// windows cygwin 环境下 支持 ELF
// macos 天生支持 ELF
// 注意 : 很多(arm/riscv/mips)裸机应用都是生成ELF文件,然后转换为bin文件
1. unix-like  	:a.out COFF (ELF)
2. windows 		:.com MZ NE LE (PE)
3. MacOs 		:(Mach-O)
4. AIX 			:XCOFF  我们现在 以 linux 中的 ELF 为例解析, 注意 除了 linux,linux-app,u-boot也是elf格式的
  • ELF标准

  • 有哪些文件

u-boot spl 阶段:
u-boot 阶段:u-boot
linux阶段 : vmlinux
app 阶段 : main main.srec main.bin main.o main.hex // main.hex 不是 二进制文件
什么是二进制文件
创建文件的时候 : open的 如果 参数 为 "b" , 则得到的文件为 二进制文件
二进制文件的格式分类
elf
a.out
srec
bin
hex
main.o:    ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), not stripped
main.srec: Motorola S-Record; binary data in text format
main:      ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=514d3a8c8f73547faaf6e0c1b1b03bbf27a47b2a, not stripped
main.bin:  data
main.hex:  ASCII text

这篇关于OK6410A 开发板 (八) 93 linux-5.11 OK6410A 从0到APP启动的过程中的二进制文件解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007867

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

Java通过ServerSocket与Socket实现通信过程

《Java通过ServerSocket与Socket实现通信过程》本文介绍了Java中的ServerSocket和Socket类,详细讲解了它们的构造方法和使用场景,并通过一个简单的通信示例展示了如何... 目录1 ServerSocket2 Socket3 服务器端4 客户端5 运行结果6 设置超时总结1

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Java序列化之serialVersionUID的用法解读

《Java序列化之serialVersionUID的用法解读》Java序列化之serialVersionUID:本文介绍了Java对象的序列化和反序列化过程,强调了serialVersionUID的作... 目录JavChina编程a序列化之serialVersionUID什么是序列化为什么要序列化serialV