嵌入式软件开发基础ppt课件.ppt

嵌入式软件开发基础ppt课件.ppt

ID:58509284

大小:745.50 KB

页数:27页

时间:2020-10-21

嵌入式软件开发基础ppt课件.ppt_第1页
嵌入式软件开发基础ppt课件.ppt_第2页
嵌入式软件开发基础ppt课件.ppt_第3页
嵌入式软件开发基础ppt课件.ppt_第4页
嵌入式软件开发基础ppt课件.ppt_第5页
资源描述:

《嵌入式软件开发基础ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章嵌入式软件开发基础第6章嵌入式软件开发基础6.1嵌入式软件开发语言6.2嵌入式软件开发流程6.3调试工具和方法6.4C语言程序的结构6.3仿真环境6.1嵌入式软件开发语言汇编(与体系结构相关)C语言(最常用语言)C++语言(面向对象,C语言的扩展)JAVA(面向对象,可移植性强)脚本语言(不需要编译)6.2嵌入式软件开发流程嵌入式应用的生成特点编译汇编链接加载程序嵌入式应用的生成特点C语言程序的生成分成编译、汇编、链接等几个步骤。最终的目标文件的主要部分是处理器可执行的机器代码组合。根据系统的不同,目标文件除了可执行的二进制代码部分外,可能还包括一定的头。嵌入式应用的生成特

2、点集成开发环境:ADS(ArmDeveloperSuite),主要需要使用以下工具:编译器:armcc.exe(编译成ARM指令汇编)和tcc.exe(编译成Thumb指令汇编)汇编器:armasm.exe链接器:armlink.exeARM-LinuxGCC交叉编译系统,则主要使用以下工具:编译器:arm-lixux-gcc(可以统一编译-汇编过程)汇编器:arm-linux-as链接器:arm-linux-ld嵌入式应用的生成特点编译(Compile)编译(Compile)是指从高级语言转换成汇编语言的过程。从本质上编译是一个文本转换的过程(从文本文件到文本文件)。编译包含了

3、C语言的语法解析和生成汇编语言两个步骤。。汇编(Assemble)汇编(Assemble)是指从汇编语言程序生成目标系统的二进制代码(机器代码)的过程。相对于编译过程的语法解析,汇编的过程相对简单。这是因为对于一款特定的处理器,其汇编语言和二进制的机器代码是一一对应的。链接(Link)链接(Link)过程将汇编成的多个机器代码组合成一个可执行程序。一般来说,通过编译和汇编过程,每一个源文件将生成一个目标文件。链接器的作用就是将这些目标文件组合,组合的过程包括了代码段、数据段等部分的合并,以及添加相应的文件头。6.3调试工具和方法嵌入式调试的特点打印调试信息JTAG调试远程gdb调

4、试嵌入式调试的特点在嵌入式系统中,调试的概念相对复杂。对于其调试过程,程序主体运行在目标机上,主机所起的作用是获得程序运行中的信息,并通过人工或者程序的方式分析这些信息。因此嵌入式调试的基础是需要一条从主机到目标机的通讯通道。打印调试信息打印调试信息是基本的调试方式,printf()标准输出,在嵌入式系统中,这种输出的通讯通道可能是串口或者网络协议。在某些系统中,没有实现标准输出,这就需要开发者自己开发调试手段。JTAG调试JTAG是JointTestActionGroup的简称。JTAG使用边界扫描(Boundary-Scan)的方式调试:在正常的运行状态下,这些边界扫描寄存器

5、对于芯片是透明的;在调试的运行状态下,通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。远程GDB调试在远程GDB调试中,调试器是运行在主机(host,桌面电脑)的应用程序,被调试的程序是运行在目标(target)上。它通过插桩(stub)的方式实现,即在目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。调试器与被调程序的通信:Gdb和调试stub通过GDB串行协议进行通信。6.4C语言程序的结构C语言目标文件中的段执行程序内部细节目标文件各段的链接C语言程序的执行C语言目标文件中的段C语言的目标文件一般包含三个主体段:代码段(Code,又称T

6、ext)只读数据段(ROData)读写数据段(RWData)执行程序内部细节1#include2#include34constcharro_data[1024]={"Thisisreadonlydata"};5charrw_data_1[1024]={"Thisisglobalreadwritedata"};6staticcharrw_data_2[1024]={"Thisisinternalreadwritedata"};7staticcharzero_data_1[1024];8执行程序内部细节9intmain(intargc,char*

7、argv[])10{11staticcharzero_data_2[1024];12inti;13charstack_data_1[100];14charstack_data_2[]={"InitstackData"};15char*memptr;16memptr=(char*)malloc(1024);17if(NULL==memptr)18{19printf("mallocerror");20return-1;21}22else23{24printf("mallocsuc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。