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主函数

相关推荐
薛定谔的悦2 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
新时代牛马5 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
Julien20045 小时前
控制 SELinux 文件上下文
linux·运维·服务器
sulikey6 小时前
Linux Core Dump 完全指南:从原理到实战的崩溃调试手册。什么是core dump?程序报错core dumped怎么办?
linux·服务器·操作系统·调试·coredump
MayZork8 小时前
Windows 与 Linux 下 vcpkg 的安装部署指南
linux·运维·windows
zbyyd9 小时前
Linux 进程间通信学习笔记
linux·笔记·学习
w2005122412 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
chen<>13 小时前
C++ 六种 memory_order:从原子性到线程间可见性.md
java·linux·开发语言·c++
一直C13 小时前
Linux系统编程|进程间通信IPC全套详解(1)(管道、信号)
linux·c语言·开发语言·网络·青少年编程·visual studio code
库玛西14 小时前
Linux网络编程:HTTP/HTTPS协议核心技术全解析
linux·运维·服务器·网络·c++·http·https