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

相关推荐
zx_741484812 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS2 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿2 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
做运维的阿瑞3 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲4 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz4 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
susplus5 小时前
【ARM 裸机开发 (IMX6ULL-mini)】GNU工具、Makefile 工程构建、链接脚本详解|C 语言点灯 + 蜂鸣器驱动
linux·arm·makefile·imx6ull
Shadow(⊙o⊙)5 小时前
Linux进阶知识1.0
linux·运维·服务器
>Andre<5 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
用户0510122572966 小时前
Linux下有关QT显示环境变量设置
linux·嵌入式