5实验五gnu-arm裸奔程序设计实验

5实验五gnu-arm裸奔程序设计实验

ID:35523822

大小:58.99 KB

页数:5页

时间:2019-03-25

5实验五gnu-arm裸奔程序设计实验_第1页
5实验五gnu-arm裸奔程序设计实验_第2页
5实验五gnu-arm裸奔程序设计实验_第3页
5实验五gnu-arm裸奔程序设计实验_第4页
5实验五gnu-arm裸奔程序设计实验_第5页
资源描述:

《5实验五gnu-arm裸奔程序设计实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验五GNU-ARM裸奔程序设计【实验目的】I了解在linux下编写ARM裸奔程序的步骤2掌握GNU下arm汇编程序设计的方法3了解链接脚本的作用4了解arm-linux-objdump,arm-linux-objcopy等工具的使用方法【实验内容】1编写汇编程序led.s-闪烁开发板上的LED灯2编写链接脚本3编写一个包含多文件的Makefileo4烧写到开发板中,运行查看情况【实验步骤】1LED灯的裸奔程序(1)新建一个项目目录:$mkdirled$cdled(2)编写汇编程序文件geditled.s内容如下:・text・global_start_start:bresetb.b.b

2、.b・b.b.b.reset:@closedogldrrO,=0x53000000movrl,#0strrl,[rO]@ldrsp,=(0x40000000+4096)・externdelayldrrO,=0x2fffbl_delay@setgpf4,5,6,7outputldrrO,=0x56000050ldrrl,=0x5500strrl,[rO]@setupoffldrrO,=0x56000058ldrrl,二OxfO;loop:ldrrO,=0x56000054ldrrl,=0x0strrl,[rO]ldrrO,=0x2ffffbl_delayldrrO,=0x56000054

3、ldrrl,二Oxffstrrl,[rO]ldrrO,=0x2ffffbldelaybloopb..end编写另一汇编文件:geditdelay.s•globaldelay•text_delay:subr0,rO,#1cmprO,#0x0bnedelaymovpc,Ir•end(1)编写连接脚本geditled.IdsOUTPUT_FORMAT(elf32-littlearm)OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{.=0x00000000;.text:{led.o(.text)*(.text)}.data:{*(.data)*(.bss)(1)编写

4、Makefileled.bin:delay.oled.oled.Idsarm-linux-ld-Tied」dsdelay.oled.o-oled.elfarm-linux-objcopy-Obinaryled.elfled.bindelay.o:delay.sarm-linux-gcc-cdelay,s・odelay.oled.o:led.sarm-linux-gcc-cled.s-oled.o(2)编译,得到led.bin烧写到开发板中,查看LED灯2调用C函数实验(I)新建另外一个目录$cd〜$mkdirboot$cdboot⑵编辑启动汇编程序start.s•text•global

5、_start_start:bresetb.b.b・b.b.b・b・reset:@设置sp指针ldrsp,=(0x40000000+4096)⑪关闭看门狗・externdisablewatchdogbldisable_watchdog@调用led_loop函数・externled_loopblledloopb・.end(3)编辑C程序init.c#defineGPFCON(*(volatileunsignedlong*)0x56000050)ttdefineGPFDAT(*(volatileunsignedlong*)0x56000054)ttdefineGPFUP(*(volatile

6、unsignedlong*)0x56000058)^definerWTCON(*(volat订eunsigned*)0x53000000)voiddisable_watchdog(void){rWTCON=0x0;return;}voiddelay(unsignedlongd){inti;for(i=0;i

7、(0x55«8);GPFUP

8、=OxfO;wh订e⑴{delay(3000);GPFDAT&「(Oxf«4);delay(3000);GPFDAT

9、=(0xf«4);

10、(4)编写链接脚本boot.ldsOUTPUTFORMAT(elf32-littlearm)OUTPUT_ARCH(arm)ENTRYCstart)SECTIONS{.=0x40000000;•text:{}•datastart.o(.text)*(.text):{}•bss*(.data):{}}*(.bss)(5)编写Makefileobjs=start,oinit.oboot,bin:$(objs)boot.Idsarm-linux-ld

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

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

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