- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 嵌入式软件开发基础 第4章 嵌入式软件开发基础 4.1 嵌入式软件开发语言 4.2 嵌入式软件开发流程 4.3 调试工具和方法 4.4 C语言程序的结构 4.5 仿真环境 4.1 嵌入式软件开发语言 汇编(与体系结构相关)--效率高 C语言(最常用语言) C++语言(面向对象,C语言的扩展) JAVA(面向对象,编译结果不是目标机的机器代码,而是通用字节码,可移植性强)--需要虚拟机 脚本语言(不需要编译)-解释运行,由于资源闲置,不能使用于大规模程序。 在嵌入式系统中的软件开发中,目前普遍使用C语言为主、汇编语言为辅的手段。C语言与硬件相关的特性,可以完成各种基本系统硬件的操作。同时C语言具有广泛使用和结构化的特点,相比汇编语言,开发效率高。 在嵌入式开发中,汇编语言不可缺少。其一,有一些硬件相关的操作,尤其是与处理体系相关的操作,C语言可能无法完成。其二,对于一些与性能密切相关的程序与算法,汇编语言可以提高性能。 4.2 嵌入式软件开发流程 嵌入式应用的生成特点 C语言程序的生成分成编译、汇编、链接等几个步骤。最终的目标的文件的主要部分是处理器可执行的机器代码组合。根据系统的不同,目标文件可能除了可执行的二进制代码部分外,还包括一定的头。 例如:对于Linux操作系统,目标执行文件是ELF(Exectutable and Linking Format)格式;对于uClinux系统,目标执行文件是Flat格式;对于需要在系统直接运行的程序,目标执行文件应该是纯粹的二进制代码,载入系统后,直接转到代码区地址执行。 嵌入式应用的生成特点 ADS(Arm Developer Suite),主要需要使用以下工具: 编译器:armcc.exe(编译成ARM指令汇编)和tcc.exe(编译成Thumb指令汇编) 汇编器:armasm.exe 链接器:armlink.exe ARM-Linux GCC交叉编译系统,则主要使用以下工具: 编译器:arm-lixux-gcc(可以统一编译-汇编过程) 汇编器:arm-linux-as 链接器:arm-linux-ld 嵌入式应用的生成特点 编译(Compile) 编译(Compile)是指从高级语言转换成汇编语言的过程。从本质上编译是一个文本转换的过程(从文本文件到文本文件)。编译包含了C语言的语法解析和生成汇编语言两个步骤。 不同体系结构的处理器上会被编译成不同的汇编代码,不同编译器生成的汇编代码可能具有不同的效率。 。 汇编 (Assemble) 汇编(Assemble)是指从汇编语言程序生成目标系统的二进制代码(机器代码)的过程。相对于编译过程的语法解析,汇编的过程相对简单。这是因为对于一款特定的处理器,其汇编语言和二进制的机器代码是一一对应的。 在很多情况下,将编译和汇编的两个过程统称为编译。严格讲,编译是指从高级语言到汇编代码的过程。 例如:在Linux GCC的编译系统中,使用 gcc -c直接从C语言生成二进制代码,使用 gcc -s将从C语言生成汇编语言代码。 链接(Link) 链接(Link)过程将汇编成的多个机器代码组合成一个可执行程序。一般来说,通过编译和汇编过程,每一个源文件将生成一个目标文件。链接器的作用就是将这些目标文件组合,组合的过程包括了代码段、数据段等部分的合并,以及添加相应的文件头。文件头的格式与可执行程序需要在何种系统运行有关,可执行文件的主体部分是数据(data)和代码(code),数据是程序中使用的信息组合,代码是目标机的机器代码。 注意:在嵌入式系统的交叉开发中,生成的可执行程序一般是不能在主机上运行的。例:arm-linux-gcc编译后的文件,不能运行在x86体系的主机上运行。 加载程序 嵌入式系统的开发初期,生成的二进制代码需要烧写到系统的只读存储器中,然后跳转到代码所在的地址才能运行。系统构建完成后,还可以使用其他的手段。例如,对于Linux系统,最初是将BootLoader的代码烧写到嵌入式系统中,然后使用BootLoader将Linux内核和文件系统烧入。 实质上BootLoader和Linux内核都是处理器可执行的代码,BootLoader是首先烧入系统的纯二进制代码,Linux内核需要通过BootLoader运行。当系统构建完毕后,Linux操作系统有了基本的功能,这是可以将ELF格式的目标即可执行程序加入系统的文件系统,通过Linux加载运行。 4.3 调试工具和方法 嵌入式调试的特点 打印调试信息 JTAG调试 远程gdb调试 嵌入式调试的特点
您可能关注的文档
最近下载
- 新版(高级)汽车驾驶员考试题库大全(含答案).docx
- 长沙会战幻灯片.ppt VIP
- 7.《短歌行》《归园田居(其一)》联读课件 统编版高中语文必修上册.pptx VIP
- TB 10753-2018 高速铁路隧道工程施工质量验收标准.pdf VIP
- 压型彩钢屋面板施工方案方案.pdf VIP
- 情境教学法在小学英语课堂教学中的运用.pptx VIP
- 全国生态状况调查评估技术规范——生态系统服务功能评估(HJ 1173—2021).pdf VIP
- 北师大版四年数学上册六除法《路程、时间与速度》课件.pptx VIP
- 2025年一季度专题党课讲稿讲稿:提升党性修养践行使命担当.pptx VIP
- 频率选择表面赋能多功能隐身雷达天线罩:理论、设计与应用探索.docx
文档评论(0)