您的位置:时时app平台注册网站 > 时时app平台注册网站 > arm交叉编写翻译器的常用工具集简要介绍

arm交叉编写翻译器的常用工具集简要介绍

2019-11-21 02:47

  -strip:剔除符号表。

3、android系统框架图

android系统框架图

hal层的参与,使得Libraries层和kernel层又隔开分离开了

透过分层,能够兑现软件复用性、可移植性。並且不一致模块解耦。

不是分层更加的多越来越多,分层更加多,速度也越慢。


5 静态链接的ELF可实践文件与经过之处空间

图片 1

Entry point address 是可实行文件加载到内部存款和储蓄器中早先执行的率先行代码
相似静态链接会将富有代码放在八个代码段
动态链接的进度会有多少个代码段

  arm-none-linux-gnueabi-readelf(以下就直接简写xxx的剧情):不管是在windows下或许linux下种种文件都有投机的头,在linux下定义了对象文件之中新闻怎么样结合和共青团和少先队的文件格式。内核会依照那么些新闻加载可施行文件,内核依据这一个音信能够明白从文件哪里得到代码,从哪个地方获得开首化数据,在哪里应该加载分享库,等音讯。 

3、搭建主机-指标机数据传输通道

比如说用网络,则要求网络有关服务器的安排。

诚如嵌入式中,用的可比多的劳动:

  • TFTP :基于UDP左券传输的,是FTP的简版。UDP比FTP轻便。
  • NFS:网络文件系统。目标是linux与linux之间挂载用的。
    文件系统的调养,超级多时候用NFS作为调和的工具。
7

动态链接分为可执路程序装载时动态链接和平运动转时动态链接
linux下动态链接文件.so,windows是dll


  -um:能够收获符号列表(小编本身今后还不领会那么些具体在写代码时有啥用 ̄□ ̄||卡塔 尔(英语:State of Qatar)

四、系统移植的核心步骤

获得一块板子,怎么样让整个系统跑起来吧?

2 目的文件的格式,

.o文件和可推行文件都以指标文件。

图片 2

ELF(Executable and Linkable Format卡塔 尔(英语:State of Qatar)可推行与可链接格式,是二个文件格式的正式。在对象文件之中已是二进制包容的格式,即这些指标文件已经适应到某种CPU系列布局上的二进制指令(ABI)。

  -objcopy:在arm中运作可执路程序时,只认得机器码,所以当我们在运作裸板程序时,由于未有跑操作系统,必要将附加消息从代码中退出出来。去掉elf头,只剩下代码段、数据段等等。

5、烧写测量检验

生龙活虎体举行合併,然后放到工厂开展集成化临盆就足以了。


6装载可执路程序从前的行事

命令行参数和境遇变量是何许保存和传递的
调用execve系统调用时,要加载的可执路程序,把原本的进程情状覆盖掉,覆盖掉之后,客户态仓库被清空。
命令行参数和情形变量是何许步向新进程的库房的
创造贰个新的客户态宾馆时,把命令行参数的剧情和情状变量的剧情,通过指针的艺术传递到系统调用的根本管理函数。内核管理函数在创建二个新的可执路程序的顾客态旅馆时,会把argv和envp拷贝到客户态仓库里,来开首化新的可执路程序试行的上下文情状。
先函数调用参数传递,再系统调用参数传递。

  -objdump:反汇编,在调试代码时会很有用。

五、情状搭建须求解析

供给剖判:
主机中的数据 怎样传递 到开拓板?

目标1:普通数据的传递:比如,uboot,kernel。
珍视指标正是为了传递。
UART超少使用,更加多使用的是互连网接口。最要紧的应用方法是TFTP服务。

TFTP首要传输的是kernel的文件。
uboot会通过任何措施烧写(当然互联网接口也得以传输。看支出情状来决定。)

目的2:调试:主机的一块内部存款和储蓄器空间,直接挂载在板子上。

在x86上调好,再放到板子上。
不过,有望调节和测验不是很顺遂,由此需求开辟板与PC间制造更客观、方便的消除方案。

不可能在板子上一贯调节和测验,正是因为板子容积太小。
要想办法增添板子空间,不过flash太贵。

板子能够外挂非常大空间的存款和储蓄器,比如U盘。
唯独U盘很艰难,插开拓板上,完了还得拔下来插PC上。

思路:疗养时,不必然非要进行互连网传输。只须求把多少挂到板子上就能够了。

办法:经过网线把分享的数据块(当作USB卡塔 尔(英语:State of Qatar),通过TCP/IP来传。
分享的数据库就在PC上。

调解起来尤其有利,PC上的改善板子上就足以平昔看看了,没有供给举行越多的数额传输了。

调剂内核驱动、应用程序,相当多时候是信任这种措施,在PC上海展览中心开软件开荒,然后间接在板子上海展览中心开求证。


安徽大学大 原创作品转发请表明出处 《Linux操作系统一分配析》MOOC课程

  -strings:能够查阅文件中有啥字符串能够用。

2、类android等繁缛作用体系结构图

为了减轻上述难题,引进叁个概念:OS;引进黄金年代层:kernel层。

能够让应用层程序猿解放出来,不用关注底层。
而且,也得以举行财富处理、多进度多线程管理等。

类android等复杂效用类别结构图

使得决定硬件工作。

使得与基本:驱动把扶持的设备向底子报告,内核依据传来的信息,会调用差别的驱动程序,来决定相应的硬件。

它们得以感觉是三个安然无事,都归属尾部软件的限量。

1 可执路程序是怎么得来的

对于c代码来讲,先是透过编写翻译器的预管理,然后编译成汇编代码。再由汇编器把汇编代码编写翻译成指标代码,然后再连接成可实行文件。可实践文件由操作系统加载到内部存款和储蓄器里实行。

shiyanlou:~/ $ cd Code                                                
shiyanlou:Code/ $ vi hello.c                                          
shiyanlou:Code/ $ gcc -E -o hello.cpp hello.c -m32  #对c程序预处理,hello.cpp是预处理的中间文件                  
shiyanlou:Code/ $ vi hello.cpp                                        
shiyanlou:Code/ $ gcc -x cpp-output -S -o hello.s hello.cpp -m32 #编译成汇编代码     
shiyanlou:Code/ $ vi hello.s                                          
shiyanlou:Code/ $ gcc -x assembler -c hello.s -o hello.o -m32 #编译成目标代码        
shiyanlou:Code/ $ vi hello.o #二进制文件,当中已经有一些机器指令                                         
shiyanlou:Code/ $ gcc -o hello hello.o -m32  #连接成可执行程序                          
shiyanlou:Code/ $ vi hello  #hello.o和hello 都是ELF格式的文件                                          
shiyanlou:Code/ $ gcc -o hello.static hello.o -m32 -static  #把所有依赖的内容都放在了程序的内部 
shiyanlou:Code/ $ ls -l                                               
-rwxrwxr-x 1 shiyanlou shiyanlou   7292  3u6708 23 09:39 hello
-rw-rw-r-- 1 shiyanlou shiyanlou     64  3u6708 23 09:30 hello.c
-rw-rw-r-- 1 shiyanlou shiyanlou  17302  3u6708 23 09:35 hello.cpp
-rw-rw-r-- 1 shiyanlou shiyanlou   1020  3u6708 23 09:38 hello.o
-rw-rw-r-- 1 shiyanlou shiyanlou    470  3u6708 23 09:35 hello.s
-rwxrwxr-x 1 shiyanlou shiyanlou 733254  3u6708 23 09:41 hello.static #比hello大很多

  非常多arm集成电路厂家都提供本身的交叉编写翻译器。像arm-none-linux-gnueabi-xxx之类的,在那之中arm自然不用解释正是arm公司嘛,如果厂家开源的话后边则是none,若不是的话只怕会是其余的。linux是指该编写翻译器提供linux接口调用,gnueabi意思是开源嵌入式的意思,下边就相比常用的工具集实行简易介绍一下:

4、编写翻译三大子系统:

bootloader成效子系统
底子主旨子系统
文件系统子系统

该步骤难度最大。

4 指标文件的格式ELF

Object文件加入程序的连结(创立八个程序)和次序的试行(运维一个顺序)。
object 文件格式提供了八个福利实用的艺术并行的眼光对待文件的开始和结果,
在他们的移位中,反映出不一样的须求。

 Linking 视角                       Execution 视角
  ============                      ==============
  ELF header                        ELF header
  Program header table (optional)   Program header table
  Section 1                         Segment 1
  ...                               Segment 2
  Section n                         ...
  Section header table              Section header table (optional)

一个ELF头在文件的最初,保存了门路图(road map),描述了该文件的公司情状。程序头表(program header table卡塔 尔(英语:State of Qatar)告诉系统怎么着来成立一个进度的内部存款和储蓄器映象。section头表(section header table卡塔 尔(阿拉伯语:قطر‎包含了描述文件sections的音讯。各类section在这里个表中有三个入口;每一种入口给出了该section的名字,大小,等等新闻。

图片 3

Entry point address是先后的起源
可实施文件的格式和进度的地址空间有多少个辉映关系,
可执路程序加载的机要办事。

当创制或充实贰个历程影像的时候,系统在理论中校拷贝叁个文件的段到几个杜撰的内部存款和储蓄器段

  Figure 2-5: Executable File

           File Offset   File                  Virtual Address
           ===========   ====                  ===============
                     0   ELF header
  Program header table
                         Other information
                 0x100   Text segment          0x8048100
                         ...
                         0x2be00 bytes         0x8073eff
               0x2bf00   Data segment          0x8074f00
                         ...
                         0x4e00 bytes          0x8079cff
               0x30d00   Other information
                         ...

参考:ELF文件格式(汉语) 英文

  本身菜鸟,想记录一下和好上学的长河笔记,希望有心上人能够协同学习指正。

2、安装交叉编写翻译器

PC的cpu架构是X86,X86程序和arm程序不协作,因而需求交叉编写翻译器。

2种方法:

(1卡塔尔国安装微电路商家已经编写翻译好的工具链

相似宛如下前缀名:

arm-none-linux-gnueabi-
简称:arm-linux-
(把arm-linux-软链接为上述前缀名卡塔 尔(阿拉伯语:قطر‎

arm-none-eabi-
那一个不扶持操作系统。

arm-elf-
本条可怜年龄大了。超级少看见了。

率先列:目的体系布局
gcc:暗中认可编写翻译x86
有arm,就能够编写翻译arm

第二列:厂家名。开源的话,经常是none

其三列:该编译器暗中认可编写翻译出来的职能是针对性linux操作系统去用的。
那几个编写翻译器内部有些专门的职业C库,是与linux系统相关的。
在windows下运作不了。

第四列:
gnu:开源
eabi:嵌入式的正式调用接口。针对嵌入式精短的相关库。

(2卡塔 尔(阿拉伯语:قطر‎自个儿入手工编织译交叉工具链
《The GNU Toolchain for ARM Target HOWTO》那本书会介绍。

自行入手编写翻译特别耗费时间,何况会报非常多不匹配的主题材料。调节和测量试验要求功力,对编写翻译原理要掌握的很驾驭。非常多商家都不会去做。不建议采纳该格局。

思路其实正如单一,唯生机勃勃的倒霉是本子间的依据关系比比较大。

3 在ELF当中有三种关键的对象文件
  • 叁个可重一贯(relocatable)文件(首假使.o文件卡塔尔保存着代码和切合的多寡,用来和此外的object文件一齐来创设三个可试行文件大概是多少个分享文件。
  • 一个可施行(executable)文件保留着二个用来实践的次第;该公文建议了 exec(BA_OS)怎样来创设程序进度影象。
  • 三个分享object文件(主要是.so文件卡塔 尔(英语:State of Qatar)保存着代码和合适的数据,用来被上边包车型地铁几个连接器链接。第二个是连接编辑器(静态链接卡塔 尔(英语:State of Qatar)[参看ld(SD_CMD)],能够和其余的重定位和分享object文件来创建其余的object。第一个是动态链接器,联合贰个可实践文件和别的的分享object文件来创设一个进度映象。

  -size:读取可执路程序的高低。

1、明确目的机(开拓板,顾客端卡塔尔国和主机(PC,开采机器,服务端卡塔尔国的接连方式

长机质量会比指标机好太多,由此日常在主机开辟,把主机编写翻译好的原委数据传输给指标机。

数量便是高低电平。

传输格局:

(1卡塔尔UART异步串行通讯接口 (串口卡塔尔
它是丰盛优良的与PC机通讯的接口。

优点:

  • 效果与利益很强盛,不只能够输入,也得以出口,相比万能。
  • 实用性强(十分之七的板子都帮衬卡塔尔

劣点:速度极低,效能比较不佳。
大文件经常不用串口传输,小文件能够。

(2卡塔 尔(阿拉伯语:قطر‎USB串行通信接口
前几天早已前行到USB 3.0

优点:速度快
症结:USB的驱动要移植校勘。
板子刚刚上电,就让串口专业,是不具体的。

(3卡塔 尔(阿拉伯语:قطر‎TCP/IP网络通信接口
优点:速度快(10/100Mbps)
症结:驱动须要移植

TCP/IP已经很干练了。开拓板与PC可以以C/S方式举行多少的传输和下载。相比通用。并且网卡的速率也一点也不慢,最少10M,100M网卡也非常多。

透过网络接口去下载数据的景观多多。

(4卡塔 尔(阿拉伯语:قطر‎Debug Jtag调节和测量检验接口
方便快速,但价格相当的高,非常少使用。


2、bootloader功用子系统

bootloader的精选和移植

系统大器晚成上电会运维两个主次:bootloader(运转加载卡塔尔,指标是load kernel。

能够做很各类方案的选料。
众多大型项目中,越来越多是选用相符项指标运行加载代码,然后再改良(移植卡塔尔国。
相当多时候,买微电路的时候,微芯片商家就曾经提供好了。

装载可执路程序以前的办事

总结
把ELF可实践文件加载到内部存款和储蓄器中,通过ELF尾部的音信,找到程序的进口推行。

3、内核核心子系统

kernel的铺排、编写翻译、移植和调和

知识要点

1、arm裸机程序系统结构图

ARM裸机程序系统结构图

硬件层:硬件程序员决定硬件放在哪个财富。如,是在GPA口,GPH口,依旧GPG口。

驱动层:驱动技术员依照硬件的架构,把驱动的能源用代码去指向,比方C语言的指针去指向相应的财富;硬件需求怎样的高/低电平或结成的数码,让其行事,是由驱动层封装的。

应用层:依照传递的不比的值,来获得不一样的结果。

该架构存在的标题:
耦合性太强,生机勃勃旦生龙活虎层发生变动, 其余层都会变。

4、文件系统子系统

根文件系统的创设

给客户用,还得提供文件系统。

那4个正是一切系统移植的精华。



1、交叉编写翻译景况

搭建立外交关系叉开辟条件

二、系统移植学习内容

把linux在arm开辟板上开展定制,并在arm开垦板上运营起来。
更加好地明白linux的构架进度。

使得开辟是在系统运营起来后,在基本中追加一些驱动子效用而已。

六、台式机移植情形搭建

串口:连接方式方便,驱动轻便。
个别据量的东西,会用串口。
正规输入/输出,会固定到串口驱动上。

笔记本都以USB接口,而开拓板要用串口,由此要买USB转串口

怎么着每种调查指标机与主机的各层是不是通了?

  • 应用层:调节和测验程序
  • 传输层:首借使端口port未有开放。要不正是服务器开放端口不对或未开放端口,也许顾客端访谈的端口不对。
  • 网络层:通过ping看看在不在贰个局域网段。
  • 物理层:查看插上的网卡灯有未有亮。

三、学习思路和艺术

先全体后有个别,层层递进。

各类子系统是什么编写翻译的 ---> 在基本作用下,如何加多命令或效果与利益 ---> 如何自定义自个儿的开垦板,与自身的开拓板具体硬件相联系

各样子系统都有着叁个繁杂的层系关系。
由此要先精晓完全,供给首先了然相关子系统的藏宝图,有了这么些地图,去追究它就有了方向。


一、概述

本文由时时app平台注册网站发布于时时app平台注册网站,转载请注明出处:arm交叉编写翻译器的常用工具集简要介绍

关键词: