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

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

MySQL之搜索引擎使用解读

《MySQL之搜索引擎使用解读》MySQL存储引擎是数据存储和管理的核心组件,不同引擎(如InnoDB、MyISAM)采用不同机制,InnoDB支持事务与行锁,适合高并发场景;MyISAM不支持事务,... 目录mysql的存储引擎是什么MySQL存储引擎的功能MySQL的存储引擎的分类查看存储引擎1.命令

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命