首页 > 代码库 > 裸机点亮LED(运行在片内RAM中)

裸机点亮LED(运行在片内RAM中)

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992464.html

 

  1. .globl _start  
  2. _start:  
  3.   
  4. /*硬件相关的设置-该设置是ARM11中特有的,告诉CPU外围设备的基地址*/  
  5.     ldr r0, =0x70000000  
  6.     orr r0, r0,  #0x13  
  7. /*设置协寄存器,在ARM11内核手册中有说明*/  
  8. /*r0 = 0x70000013 表示 长度为256M*/  
  9.     mcr p15, 0, r0, c15, c2, 4  
  10.   
  11. /*关看门狗*/  
  12. /*WTCON(0X7E004000) = 0*/  
  13.     ldr r0, =0x7E004000  
  14.     mov r1, #0  
  15.     str r1, [r0]  
  16.   
  17. /*设置GPKCON0让 GPK4,GPK5,GPK6,GPK7作为输出引脚*/  
  18.     ldr r0, =0x7F008800  
  19.     ldr r1, =0x11110000  
  20.     str r1, [r0]  
  21.   
  22. /*设置GPKDAT让 GPK4 = 0, GPK5 = 1, GPK6 = 0, GPK7 = 1*/  
  23. /*即LED1亮,LED2暗,LED3亮,LED4暗*/  
  24.     ldr r0, =0x7F008808  
  25.     mov r1, #0x00A0  
  26.     str r1, [r0]  
  27.   
  28. halt:  
  29.     b halt  

 

通过LINUX编译 makefile文件如下:

[csharp] view plain copy
 
  1. led.bin: start.o  
  2.         arm-linux-ld -Ttext 0 -o led.elf start.o  
  3.         arm-linux-objcopy -O binary led.elf led.bin  
  4.         arm-linux-objdump -D led.elf > led.dis  
  5.   
  6. start.o : start.S  
  7.         arm-linux-gcc -o start.o start.S -c  
  8.   
  9. clean:  
  10.         rm *.o led.elf led.bin led.dis  

 通过SD卡将led.bin烧入flash中,启动就能看到LED1、LED3被点亮了

 

 

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992464.html

裸机点亮LED(运行在片内RAM中)