问个问题啊,嵌入式开发所谓的bss段,data段,text段属于哪方面知识,有没有书推荐
发布网友
发布时间:2022-05-20 12:53
我来回答
共3个回答
热心网友
时间:2023-10-21 15:03
你好,你提到的bss段,data段,text段是计算机(不一定是pc机,也可能是嵌入式开发板)的引导程序的汇编部分,对于pc来说就是bios,而对于嵌入式产品就是 bootloader的 startup.s汇编程序,当然启动引导程序在机器里面会以二进制文件形式出现,也就是.bin文件,亦称可执行文件,并且把可执行文件分为两种情况:分别为存放态和运行态。下面分两部分来讲解:
1、存放态是指在存储介质(flash或磁盘)上的分布. 此时可执行文件一般由两部分组成:分别是代码段和数据段。代码段又分为可执行代码段(.text)和只读数据段(.rodata),数据段又分为初始化数据段(.data)和未初始化数据段(.bss)。分布见下图
+-------------+-----------
| .bss |
+-------------+-- 数据段
| .data |
+-------------+-----------
| .rodata |
|_____________| 代码段
| .text |
+-------------+-----------
2、当可执行文件(也就是.bin文件)被拷贝到flash等之类的外部存储器时,接下来要做的就是把可执行文件搬运到cpu内部的ram中,这个过程叫装载,也就是可执行文件从存放态到运行态的转变。当然,搬过去的时候可执行文件在结构上将发生变化,下面是装载前后的变化:
| ... |
+-------------+-----------
| .bss | ZI 段
+-------------+-- 数据段
| .data | RW 段
+-------------+-----------
| .rodata |
|_____________| 代码段(RO 段)
| .text |
+-------------+-----------
| ... |
装载前
当可执行文件装载后, 在RAM中的分布如下:
| ... |
+-------------+-- ZI段结束地址
| ZI 段 |
+-------------+-- ZI段起始地址
| 保留区2 |
+-------------+-- RW段结束地址
| RW 段 |
+-------------+-- RW段起始地址
| 保留区1 |
+-------------+-- RO段结束地址
| RO 段 |
+-------------+-- RO段起始地址
| ... |
装载后
好了,我说的也许太含糊,那就推荐几本书给你:《linux系统移植》、《linux内核全注释》,如果看不懂那就说明你的基础还有待提高,多看一些基础的书籍:《arm汇编》、《c语言》、《嵌入式系统设计》
希望对你有帮助,欢迎追问!!!追问你好,你的这些内容是从哪里知道的呢?能否给我个你的常用邮箱地址呢?
追答先选为最佳答案呗
热心网友
时间:2023-10-21 15:04
《嵌入式linux应用开发完全手册》这本书讲了,还有这本书的视频也不错,看看吧,我买的盗版的书,从网上下的视频。
热心网友
时间:2023-10-21 15:04
《嵌入式linux应用开发完全手册》