- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
s3c2440 的LED 点灯裸机 C 程序 gcc 编译的时候-g 选项表示添加一些调试信息。 一个程序一般会经过(针对一个 linux 程序) (1)预处理 编译:.c 文件处理为.s 文件 汇编:.s 文件处理为.o 文件 链接:把多个.o 文件合并为一个可执行文件 nor flash 不能像内存一样写数据,必须先擦除再写。 main 函数被谁调用?main 函数的返回值给谁了? 答:普通应用程序,main 函数会被启动文件或者库文件调用。自己编写裸机函数,那么就需要自己完成 main 函数的调用工作。 启动文件需要完成的软件初始化工作包括: (1)设置栈以及硬件初始化 (2)设置 main 函数的返回地址 (3)调用 main 函数(4)完成一些清理工作 注:如果使用的 RAM 是 2440 的片内 SRAM,那么设置栈的工作已经不需要做了,但是如果使用片外的 SDRAM,那么设置栈的工作必须要有。 硬件相关的初始化的工作包括: (1)关闭看门狗(2)初始化时钟 (3)初始化 SDRAM c 程序的启动文件 .text .global _start _start: ldr r0, =0mov r1, #0x0 str r1, [r0] ldr sp, =1024*4 @ WATCHDOG 寄存器地址 @ 写入 0,禁止 WATCHDOG,否则 CPU 会不断重启 @ 设置堆栈,注意:不能大于 4k, 因为现在可用的内存只有 4K @ nand flash 中的代码在复位后会移到内部 ram 中,此 ram 只有 4K bl main @ 调用 C 程序中的 main 函数 halt_loop: b halt_loop C 程序文件: #define GPBCON (*(volatile unsigned long *)0 #define GPBDAT (*(volatile unsigned long *)0 int main() { GPBCON = 0 // 设置 GPB5 为输出口, 位[11:10]=0b01 GPBDAT = 0 // GPB5 输出 0,LED1 点亮 return 0; } 对 应 的 makefile 文 件 : led_on_c.bin : crt0.S led_on_c.c arm-linux-gcc -g -c -o crt0.o crt0.S arm-linux-gcc -g -c -o led_on_c.o led_on_c.c arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_elf arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin arm-linux-objdump -D -m arm led_on_c_elf led_on_c.dis clean: rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o 在下面的 makefile 文件中 CFLAGS := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding leds.bin : crt0.S leds.c arm-linux-gcc $(CFLAGS) -c -o crt0.o crt0.S arm-linux-gcc $(CFLAGS) -c -o leds.o leds.c arm-linux-ld -Ttext 0x0000000 crt0.o leds.o -o leds_elf # arm-linux-ld -Tleds.lds crt0.o leds.o -o leds_elf arm-linux-objcopy -O binary -S leds_elf leds.bin arm-linux-objdump -D -m arm leds_elf leds.dis clean: rm -f leds.dis leds.bin leds_elf *.o 其中: -Wall 是打开警告开关 s3c2440 裸机 LED 点灯代码(汇编代码) .text .global _start _start: LDR R0,=0@ R0 设为 GPBCON 寄存器。此寄存器 @ 用于选择端口B 各引脚的功能: @ 是输出、是输入、还是其他 MOV R1,#0STR LDR R1,[R0] R0,=0x5600001
有哪些信誉好的足球投注网站
文档评论(0)