20260720

  1. ARM工具链中gcc、ld、objcopy、objdump工具的作用?

gcc(编译器):将(.S .c)高级语言代码转换为汇编代码,再将汇编代码转换为(.o)目标文件;

ld(链接器):从-T后的链接地址开始,将多个(.o)目标文件链接成(.elf)可执行文件;

objcopy(目标文件格式转换器):将(.elf)可执行文件转换为(.bin)纯二进制格式文件,并从目标文件中提取特定的段;

objdump(反汇编器):将(.bin)机器码反汇编为汇编代码。

  1. .text段、.bss段、common段、.data段、.rodata段区别?

.text段:存放代码和指令

.bss段:存放未初始化的静态变量和初始化为0的全局变量

common段:存放未初始化的全局变量

.data段:存放非0初值的全局变量和静态变量

.rodata段:存放只读常量(const、字符串常量、switch跳转表、浮点数常量)

注:在main函数运行前,要将.bss和common段清0

  1. 你的imx6ull在启动裸机代码之前都干了什么?

1.先定义异常向量表

2.上电之后,触发复位中断,进入_reset_handler

3.切换irq普通中断工作模式,并设置栈指针地址;再切换到system工作模式,设置对应的栈指针寄存器

4.对.bss段和common段清0处理

5.跳入main主函数

相关推荐
ltl4 小时前
内核追踪:ftrace、kprobe、uprobe、tracepoint 生产实战
linux
·薯条大王4 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
小小、码农7 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
不会就选b8 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
沫璃染墨10 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
AIgorithmGEEK10 小时前
Linux 环境变量完全指南:从入门到理解底层原理
linux·运维·服务器
酷可达拉斯11 小时前
Linux操作系统-升级OpenSSH修复漏洞
linux·运维·服务器·云计算
Molesidy12 小时前
【Linux】基于busybox的根文件系统的完善
linux·服务器·嵌入式linux
jufeng130714 小时前
【系列:MiniKV 原理剖析 · 第 6 篇】
linux·软件工程·个人开发·makefile
IT摆渡者15 小时前
ubuntu系统网络问题
linux·运维·ubuntu