Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1366271
  • 博文数量: 860
  • 博客积分: 425
  • 博客等级: 下士
  • 技术积分: 1464
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-20 19:57
个人简介

对技术执着

文章分类

全部博文(860)

文章存档

2019年(16)

2018年(12)

2015年(732)

2013年(85)

2012年(15)

我的朋友

分类: LINUX

2015-03-14 15:10:44

操作系统:ubuntu10.04


测试代码:
    1,arm汇编程序

点击(此处)折叠或打开

  1. @******************************************************************************
  2. @ File:start.S
  3. @ 功能:通过它转入C程序
  4. @******************************************************************************

  5. .text
  6. .global    _start
  7. _start:
  8.     ldr    r0,    =0x53000000    @ WATCHDOG 寄存器地址
  9.     mov    r1,    #0x0
  10.     str    r1,    [r0]        @ 写入0,禁止WATCHDOG,否则CPU会不断重启
  11.     
  12.     ldr    sp,    =1024*3        @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
  13.                     @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K

  14.     bl    main            @ 调用C程序中的main函数

  15. loop:
  16.     b    loop

    2,C语言程序

点击(此处)折叠或打开

  1. #define    GPFCON    (*(volatile unsigned long*)0x56000050)
  2. #define    GPFDAT    (*(volatile unsigned long*)0x56000054)


  3. int main(void)
  4. {
  5.     GPFCON    = 0x00001100;    // 设置GPF5,6为输出口,[11:10]=0b01,[13:12]=0b01
  6.     GPFDAT    = 0x00000000;    // GPF5,6输出0,LED2,LED3点亮

  7.     return 0;
  8. }

    3,makefile 程序

点击(此处)折叠或打开

  1. ###############################################################################
  2. #
  3. # A smart Makefile template for GNU/LINUX programming
  4. #
  5. # Author: SR
  6. # Date:
  7. #
  8. # Usage:
  9. # $ make Compile and link (or archive)
  10. # $ make clean Clean the objectives and target.
  11. ###############################################################################

  12. CROSS_COMPILE = arm-linux-
  13. OPTIMIZE := -O2
  14. WARNINGS := -Wall -Wno-unused -Wno-format
  15. DEFS := -DMYDEF=1 -UMYDEF2
  16. EXTRA_CFLAGS :=
  17. CFLAGS = $(EXTRA_CFLAGS) $(WARNINGS) $(OPTIMIZE) $(DEFS)


  18. GCC := $(CROSS_COMPILE)gcc
  19. LD        := $(CROSS_COMPILE)ld
  20. OBJCOPY    := $(CROSS_COMPILE)objcopy
  21. OBJDUMP    := $(CROSS_COMPILE)objdump



  22. led_main.bin : start.S led_main.c
  23.     $(GCC) -g -c -o start.o    start.S
  24.     $(GCC) -g -c -o led_main.o led_main.c
  25.     $(LD) -Ttext 0x0001024 -g start.o led_main.o -o led_main_elf
  26.     $(OBJCOPY) -O binary -S led_main_elf led_main.bin
  27.     $(OBJDUMP) -D -m arm led_main_elf > led_main.dis




  28. PHONY = clean

  29. clean:
  30.     rm -f led_main.bin led_main_elf *.o *.dis

  31. .PHONY: $(PHONY)


疑问:为什么不需要设置时钟频率??
        答案:*arm9 S3C2440系统时钟  
阅读(578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~