完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
//makefile
src :=head.o init.o interrupt.o main.o time.bin:$(src) ARM-linux-ld -Ttime.lds -o time_elf $^ arm-linux-objcopy -O binary -S time_elf $@ arm-linux-objdump -D -m arm time_elf > time.dis %.o:%.s arm-linux-gcc -c -Wall -O -o $@ $< %.o:%.c arm-linux-gcc -c -Wall -O -o $@ $< clean: rm -rf *.o *.bin time_elf time.dis //s3c24xx.h /* WOTCH DOG register */ #define WTCON (*(volatile unsigned long *)0x53000000) /* SDRAM regisers */ #define MEM_CTL_BASE 0x48000000 #define SDRAM_BASE 0x30000000 /* NAND Flash registers */ #define NFCONF (*(volatile unsigned int *)0x4e000000) #define NFCMD (*(volatile unsigned char *)0x4e000004) #define NFADDR (*(volatile unsigned char *)0x4e000008) #define NFDATA (*(volatile unsigned char *)0x4e00000c) #define NFSTAT (*(volatile unsigned char *)0x4e000010) /*GPIO registers*/ #define GPBCON (*(volatile unsigned long *)0x56000010) #define GPBDAT (*(volatile unsigned long *)0x56000014) #define GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) #define GPFUP (*(volatile unsigned long *)0x56000058) #define GPGCON (*(volatile unsigned long *)0x56000060) #define GPGDAT (*(volatile unsigned long *)0x56000064) #define GPGUP (*(volatile unsigned long *)0x56000068) #define GPHCON (*(volatile unsigned long *)0x56000070) #define GPHDAT (*(volatile unsigned long *)0x56000074) #define GPHUP (*(volatile unsigned long *)0x56000078) /*UART registers*/ #define ULCON0 (*(volatile unsigned long *)0x50000000) #define UCON0 (*(volatile unsigned long *)0x50000004) #define UFCON0 (*(volatile unsigned long *)0x50000008) #define UMCON0 (*(volatile unsigned long *)0x5000000c) #define UTRSTAT0 (*(volatile unsigned long *)0x50000010) #define UTXH0 (*(volatile unsigned char *)0x50000020) #define URXH0 (*(volatile unsigned char *)0x50000024) #define UBRDIV0 (*(volatile unsigned long *)0x50000028) /*interrupt registes*/ #define SRCPND (*(volatile unsigned long *)0x4A000000) #define INTMOD (*(volatile unsigned long *)0x4A000004) #define INTMSK (*(volatile unsigned long *)0x4A000008) #define PRIORITY (*(volatile unsigned long *)0x4A00000c) #define INTPND (*(volatile unsigned long *)0x4A000010) #define INTOFFSET (*(volatile unsigned long *)0x4A000014) #define SUBSRCPND (*(volatile unsigned long *)0x4A000018) #define INTSUBMSK (*(volatile unsigned long *)0x4A00001c) /*external interrupt registers*/ #define EINTMASK (*(volatile unsigned long *)0x560000a4) #define EINTPEND (*(volatile unsigned long *)0x560000a8) /*clock registers*/ #define LOCKTIME (*(volatile unsigned long *)0x4c000000) #define MPLLCON (*(volatile unsigned long *)0x4c000004) #define UPLLCON (*(volatile unsigned long *)0x4c000008) #define CLKCON (*(volatile unsigned long *)0x4c00000C) #define CLKSLOW (*(volatile unsigned long *)0x4c000010) #define CLKDIVN (*(volatile unsigned long *)0x4c000014) #define CAMDIVN (*(volatile unsigned long *)0x4c000018) /*PWM &TIME registers*/ #define TCFG0 (*(volatile unsigned long *)0x51000000) #define TCFG1 (*(volatile unsigned long *)0x51000004) #define TCON (*(volatile unsigned long *)0x51000008) #define TCNTB0 (*(volatile unsigned long *)0x5100000c) #define TCMPB0 (*(volatile unsigned long *)0x51000010) #define TCNTO0 (*(volatile unsigned long *)0x51000014) //head.s .text .global _start _start: b reset handleundef: b handleundef handleswi: b handleswi handleprefetchabort: b handleprefetchabort handledataabort: b handledataabort handlenotused: b handlenotused b handle_irq handlefiq: b handlefiq reset: ldr sp,=4096 bl disable_watchdog bl clock_init bl memsetup bl copy_steppingstone_to_sdram ldr pc,=on_sdram on_sdram: msr cpsr_c,#0xd2 ldr sp,=4096 msr cpsr_c,#0xdf ldr sp,=0x34000000 bl init_led bl time0_init bl init_irq msr cpsr_c,#0x5f ldr lr,=halt_loop ldr pc,=main halt_loop: b halt_loop handle_irq: sub lr,lr,#4 stmdb sp!,{r0-r12,lr} ldr lr,=int_return ldr pc,=time0_handle int_return: ldmia sp!,{r0-r12,pc}^ //init.c #include"s3c24xx.h" #define GPF4_OUT (1<<(2*4)) #define GPF5_OUT (1<<(2*5)) #define GPF6_OUT (1<<(2*6)) #define GPF4_MASK (3<<(2*4)) #define GPF5_MASK (3<<(2*5)) #define GPF6_MASK (3<<(2*6)) void disable_watchdog(void) { WTCON=0; } void init_led(void) { GPFCON&=(~(GPF4_MASK & GPF5_MASK & GPF6_MASK)); GPFCON|=GPF4_OUT | GPF5_OUT |GPF6_OUT; } void clock_init(void) { CLKDIVN=0x03; //fclk:hclk:pclk prescaler 1:2:3 __asm__( "mrc p15,0,r1,c1,c0,0n" "orr r1,r1,#0xc0000000n" "mcr p15,0,r1,c1,c0,0n" ); MPLLCON=(0x5c<<12)|(0x01<<4)|(0x02); //flck= mpll=200mhz hclk=100mhz pclk=50mhz } void memsetup(void) { volatile unsigned *P=(volatile unsigned long *)0x48000000; P[0] = 0x22011110; //BWSCON P[1] = 0x00000700; //BANKCON0 P[2] = 0x00000700; //BANKCON1 P[3] = 0x00000700; //BANKCON2 P[4] = 0x00000700; //BANKCON3 P[5] = 0x00000700; //BANKCON4 P[6] = 0x00000700; //BANKCON5 P[7] = 0x00018005; //BANKCON6 P[8] = 0x00018005; //BANKCON7 P[9] = 0x008C04F4; //REFRESH P[10]= 0x000000b1; //BANKSIZE P[11]= 0x00000030; //MRSRB6 P[12]= 0x00000030; //MRSRB7 } void copy_steppingstone_to_sdram(void) { unsigned int *src= (unsigned int *)0; unsigned int *dest=(unsigned int *)0x30000000; while(src<(unsigned int *)4096) { *src=*dest; //could modefy src++; dest++; } } void time0_init(void) { TCFG0=99; //prescaler=99 TCFG1=0x3; //divider =16 frequency=pclk/(99+1)/16=312500 TCNTB0=15625; //interrupt=0.5s TCON|=(1<<1); TCON=0x09; } void init_irq(void) { INTMSK &=(~(1<<10)); } //interrupt.c #include "s3c24xx.h" void time0_handle(void) { if(INTOFFSET==10) GPFDAT=GPFDAT&(~(7<<4)); SRCPND=1< } //time.lds SECTIONS { . = 0x30000000; .text : { *(.text) } .rodata ALIGN(4): { *(.rodata) } .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.BSS) *(COMMON) } } //main.c void main(void) { while(1); } |
|
相关推荐
1个回答
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
296个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2466 浏览 6 评论
2201 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4828 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 14:19 , Processed in 0.762112 second(s), Total 79, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2911