书签 分享 收藏 举报 版权申诉 / 34
上传文档赚钱

类型嵌入式微处理器系统课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5039341
  • 上传时间:2023-02-05
  • 格式:PPT
  • 页数:34
  • 大小:230KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《嵌入式微处理器系统课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    嵌入式 微处理器 系统 课件
    资源描述:

    1、嵌入式微處理器系統GNU開發工具與U-Boot環境v實驗一:程式編譯、連結與函式庫製作main.cfunc1.cfunc2.clib_func1.clib_func2.clib_func3.cmain.ofunc1.ofunc2.oldgcclib_func1.olib_func2.olib_func3.oarlibtest.alibm.aexecutablegcc【實驗一】相關知識v執行檔製作流程vGCC常用參數與操作vLD常用參數與操作v靜態與動態函式庫的製作與使用v其它常用工具【實驗一】相關知識v執行檔製作流程1.前置處理(Preprocessing)2.編譯(Compiling)3.組

    2、譯(Assembling)4.連結(Linking)【實驗一】相關知識v原始程式碼(Source Code)#include#define STRING Hello World!n“int main(void)printf(STRING);return 0;【實驗一】相關知識v前置處理(Preprocessing)略 extern int fprintf(FILE*_restrict _stream,_const char*_restrict _format,.);extern int printf(_const char*_restrict _format,.);extern int spr

    3、intf(char*_restrict _s,_const char*_restrict _format,.);略 int main(void)printf(Hello World!n);return 0;【實驗一】相關知識v編譯(Compiling)略.LC0:.ascii Hello World!012000.text .align 2 .global main .type main,functionmain:stmfd sp!,lr bl _gccmain ldr r0,.L3 bl printf_FPCce mov r0,#0 ldmfd sp!,pc 略【實驗一】相關知識v組譯(As

    4、sembling)Disassembly of section.text:00000000:0:e52de004 str lr,sp,-#4!4:e59f0008 ldr r0,pc,#8 8:ebfffffe bl 8 8:R_ARM_PC24 puts c:e3a00000 mov r0,#0 ;0 x0 10:e49df004 ldr pc,sp,#4 略 Disassembly of section.rodata:00000000:0:6c6c6548 stcvsl 5,cr6,r12,-#288 4:6f57206f swivs 0 x0057206f 8:21646c72 cmnc

    5、s r4,r2,ror r12【實驗一】相關知識v連結(Linking)略 Disassembly of section.text:000083d0:83d0:e52de004 str lr,sp,-#4!83d4:e59f0008 ldr r0,pc,#8 83d8:ebffffb3 bl 82ac 83dc:e3a00000 mov r0,#0 ;0 x0 83e0:e49df004 ldr pc,sp,#4 略 Disassembly of section.rodata:000084c8:84c8:00020001 andeq r0,r2,r1 84cc:6c6c6548 stcvsl

    6、5,cr6,r12,-#288 84d0:6f57206f swivs 0 x0057206f 84d4:21646c72 cmncs r4,r2,ror r12【實驗一】相關知識v執行檔製作流程vGCC常用參數與操作vLD常用參數與操作v靜態與動態函式庫的製作與使用v其它常用工具【實驗一】相關知識vGCC常用參數與操作-o output_name:指定輸出檔名-E:對程式碼進行前置處理-S:執行到編譯動作便停止,不做組譯與連結-c:編譯並組譯程式碼,但不做連結#gcc-o hello hello.c#gcc-E hello.c-o hello.i#gcc-S hello.c-o hello.

    7、S#gcc-c hello.c-o hello.o【實驗一】相關知識vGCC常用參數與操作-I hdr_path:將指定路徑加入標頭檔搜尋路徑中-L lib_path:將指定路徑加入函式庫搜尋路徑中-l lib_name:與指定函式庫進行連結#gcc-c-I/home/kenny/include-o hello.o hello.c#gcc-L/home/kenny/lib-o hello hello.o#gcc-L/home/kenny/lib-lm-lpthread-o hello hello.o指定與名為libm和libpthread函式庫做連結【實驗一】相關知識vGCC常用參數與操作-O

    8、 level:設定編譯最佳化程度-O 或-O0:不做最佳化-O1:第一層級最佳化-O2:第二層級最佳化(較多)-O3:第三層級最佳化(更多)-Os:最佳化Code Size#gcc-O2-c-o hello.o hello.c【實驗一】相關知識v執行檔製作流程vGCC常用參數與操作vLD常用參數與操作v靜態與動態函式庫的製作與使用v其它常用工具【實驗一】相關知識vLD常用參數與操作-o output_name:指定輸出檔名-L lib_path:將指定路徑加入函式庫搜尋路徑中-l lib_name:與指定函式庫進行連結-e addr:設定連結啟始位址#ld-o hello crt0.o hel

    9、lo.o#ld-L/home/kenny/lib-o hello crt0.o hello.o#ld-L/home/kenny/lib-lc-lm-o hello crt0.o hello.o#ld-L/home/kenny/lib-lc-lm-e 0 x10000-o hello crt0.o hello.o【實驗一】相關知識vLD常用參數與操作-s:移除所有符號-S:移除除錯符號-r:輸出可重定位(relocatable)的檔案-Map map_file:產生連結後的符號位址對應檔#ld-L/home/kenny/lib-lc-lm-s-o hello crt0.o hello.o#ld-

    10、L/home/kenny/lib-lc-lm-S-o hello crt0.o hello.o#ld-r-o romfs.o romfs.img#ld-L/home/kenny/lib-lc-lm-o hello crt0.o hello.o-Map hello.map【實驗一】相關知識vLD常用參數與操作-T:指定Link Script-Ttext addr:指定text段位址-Tdata addr:指定data段位址-Tbss addr:指定bss段位址#ld-lc-lm-T hello.ld-o hello crt0.o hello.o#ld-lc-lm-Ttext 0 x1000-o

    11、hello crt0.o hello.o#ld-lc-lm-Ttext 0 x0-Tdata 0 x1000-o hello crt0.o hello.o#ld-lc-Ttext 0 x0-Tdata 0 x1000-Tbss 0 x3000-o hello crt0.o hello.o【實驗一】相關知識v執行檔製作流程vGCC常用參數與操作vLD常用參數與操作v靜態與動態函式庫的製作與使用v其它常用工具【實驗一】相關知識v靜態與動態函式庫的製作與使用靜態函式庫與靜態連結hello.olibc.aStatic Linkinghello.exeCode ofprintf()libm.aCode

    12、ofsin()RAM【實驗一】相關知識v靜態與動態函式庫的製作與使用動態函式庫與動態連結hello.olibc.soDynamic LinkingCode ofprintf()libm.soCode ofsin()hello.exeExecuteCode ofhello.exeLoad【實驗一】相關知識v靜態與動態函式庫的製作與使用製作靜態函式庫使用archive使用方法:ar options archive_file src_filesn建立Archiven查看Archive內容n取出Archive中的檔案連結靜態函式庫#ar-r libabc.a a.o b.o c.o#ar-tv lib

    13、abc.a#ar-x libabc.a a.o#gcc-static-labc hello.o-o hello【實驗一】相關知識v靜態與動態函式庫的製作與使用製作動態函式庫利用gcc安裝動態函式庫n將函式庫拷貝至搜尋路徑中,或者n將函式庫所在路徑加入/etc/ld.so.conf檔中n執行ldconfig以更新系統搜尋路徑與函式庫資料庫連結動態函式庫#gcc-shared a.o b.o c.o-o libabc.so#gcc-labc hello.o-o hello【實驗一】相關知識v靜態與動態函式庫的製作與使用查看程式相依函式庫利用ldd【實驗一】相關知識v執行檔製作流程vGCC常用參數與

    14、操作vLD常用參數與操作v靜態與動態函式庫的製作與使用v其它常用工具【實驗一】相關知識v其它常用工具as組譯器nm列出目標檔中的符號n符號類型:lR:唯讀符號lN:除錯用符號lD:已初始化變數符號lT:Text段符號lU:未定義符號lS:未初始化變數符號#as-o hello.o hello.S#nm hello.o【實驗一】相關知識v其它常用工具objdump查看目標檔資訊n-D:反組譯並顯示所有區段內容n-d:反組譯並顯示可執行區段內容n-r:顯示重定位入口n-h:顯示各區段之資訊#objdump-Dr hello.o【實驗一】相關知識v其它常用工具objcopy拷貝與轉換目標檔格式n-O

    15、 bfdname:指定輸出格式n-only-section=name:轉換時保留指定區段n-remove-section=name:轉換時移除指定區段n-gap-fill=value:將區段間的空隙以指定值填滿#objcopy-gap-fill=0 xff-O binary hello.elf hello.bin【實驗一】實驗內容v根據實驗一之編譯流程圖,將範例中的程式碼編譯並連結成可執行檔【註】連結動作以gcc代替ld來簡化參數設定【實驗一】實驗步驟v進入Topic1之實驗一資料夾【實驗一】實驗步驟v分別編譯資料夾下的C程式(僅編譯不連結)【實驗一】實驗步驟v進入lib資料夾並分別編譯資料夾下的C程式【實驗一】實驗步驟v將lib資料夾下的Object檔製作成靜態函式庫【實驗一】實驗步驟v回到上一層資料夾並連結所有Object檔與函式庫【實驗一】實驗步驟v執行test程式

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:嵌入式微处理器系统课件.ppt
    链接地址:https://www.163wenku.com/p-5039341.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库