完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正在学习裸机程序,已经用汇编程序照着书上写过了,在学习第三课mmu的时候,发现可以用C语言来完成 disable_watchdog,mem_setup等内容,于是用C语言改写,但是程序烧写到JZ2440上不能正确运行,请大侠不吝赐教
源码如下: Makefile: sdram.bin: sdram.s GPIO_LED.c ARM-linux-gcc -c -o sdram.o sdram.s arm-linux-gcc -c -o GPIO_LED.o GPIO_LED.c arm-linux-ld -Ttext 0x30000000 sdram.o GPIO_LED.o -o sdram_elf arm-linux-objcopy -O binary -S sdram_elf sdram.bin arm-linux-objdump -D -m arm sdram_elf > sdram.dis clean: rm -f *.dis sdram.bin sdram_elf *.o *~ sdram.s .text .global _start _start: ldr sp, =4096 bl disable_watchdog bl sdram_setup bl nandcopy2sdram ldr pc, =sdram sdram: ldr sp, =0x34000000 bl main halt_loop: b halt_loop GPIO_LED.c #define GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) #define WDCON (*(unsigned long*)0x53000000) #define SDRAMCON 0x48000000 #define GPF4_out (1<<(4*2)) #define GPF5_out (1<<(5*2)) #define GPF6_out (1<<(6*2)) void wait(volatile unsigned long dly) { for(; dly > 0; dly--); } int main(void) { unsigned long i = 0; GPFCON = GPF4_out|GPF5_out|GPF6_out; // 将LED1,2,4对应的GPF4/5/6三个引脚设为输出 while(1){ wait(30000); GPFDAT = (~(i<<4)); // 根据i的值,点亮LED1,2,4 if(++i == 8) i = 0; } return 0; } void disable_watchdog() { WDCON = 0 ; //禁用watchdog } void sdram_setup() { unsigned long const sdramfig[] = { 0x22011110, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00000700, 0x00018005, 0x00018005, 0x008c07a3, 0x000000b1, 0x00000030, 0x00000030, }; int i = 0; volatile unsigned long *p = (volatile unsigned long *) SDRAMCON; for(;i<13;i++) { p= sdramfig; } } void nandcopy2sdram() { volatile unsigned long *p = (volatile unsigned long *) 0x0; volatile unsigned long *q = (volatile unsigned long *) 0x30000000; int i = 0; for(;i<4096;i++) q = p; } |
|
相关推荐
1个回答
|
|
一样,我也是用C语言写了没用,完全搞不懂哪里有问题
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2152 浏览 6 评论
1960 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4519 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 03:20 , Processed in 0.613288 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号