Chinaunix首页 | 论坛 | 博客
  • 博客访问: 951771
  • 博文数量: 113
  • 博客积分: 7235
  • 博客等级: 少将
  • 技术积分: 2101
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 11:24
文章分类

全部博文(113)

文章存档

2013年(7)

2012年(5)

2011年(6)

2010年(8)

2009年(15)

2008年(72)

分类: LINUX

2009-03-21 22:34:05

花了570RMB买了一个mini2440开发板,却一直没有怎么用。原因一个是对嵌入式开发不熟,一个是时间不知道都用到何处去了,总是忙,但想想却是没做什么。今天终于将它那出来玩玩,也感受一下嵌入式开发相关的知识,呵呵!!

经过半天的努力,终于将ADS1.2配置好了,可以编译生成在mini2440上运行的程序了,下面是具体配置方法:

1.         打开ADS1.2,新建一个空项目。

2.         打开调试设置窗口(Edit->DebugRel Settings或者Alt + F7)

3.         选择Target->Target Settings,设置Post-linker为“ARM fromELF”。

4.         选择Language Settings->ARM Assembler,将“Architecture or Processor”改为“ARM920T”。

5.         选择Language Settings->ARM C Compiler,将将“Architecture or Processor”改为“ARM920T”。

6.         选择Linker->ARM Linker,选择”LinktypeSimple”,将”Simple image””RO Base”改为0x30000000

现在你可以直接编写汇编程序来操作mini2440了。下面给出我写的一段汇编,作用是驱动4LED灯闪亮。

GPBCON EQU 0x56000010 ;定义GPIO的GPB控制寄存器
GPBDAT EQU 0x56000014 ;定义GPIO的GPB数据寄存器
LED1 EQU 1 << (5 * 2) ;定义LED1控制端口
LED2 EQU 1 << (6 * 2) ;定义LED2控制端口
LED3 EQU 1 << (7 * 2) ;定义LED3控制端口
LED4 EQU 1 << (8 * 2) ;定义LED4控制端口
LEDS EQU LED1 | LED2 | LED3 | LED4

    CODE32
    AREA Init,CODE,READONLY
    ENTRY
    ldr r0, =0x53000000 ;关闭WATCHDOG,禁止CPU重启
    mov r1, #0x0
    str r1, [r0]
    
    ldr sp, =1024 * 4 ;设置堆栈
    ldr r0, =GPBCON ;此三条指令设置GPB的5,6,7,8(对应LED1,LED2,LED3,LED4)为输出
    mov r1, #LEDS
    str r1, [r0]
    ldr r0, =GPBDAT ;此三条指令写GPB数据寄存器,0xffffffff表示全部设置为高电平,即关闭4个LED灯
    mov r1, #0xffffffff
    str r1, [r0]
    
    mov r3, #0 ;LED灯状态指示寄存器。1表示熄灭,0表示亮
next    
    mov r2, #0x01200000 ;此三条指令实现延时
delay
    subs r2, r2, #1
    bne delay ;
    
    cmp r3, #1 ;当前LED是否是亮着的?
    beq led_on ;如果LED当前是熄灭状态,则跳转到led_on,点亮LED
        
    mov r1, #0xffffffff ;此两条指令是熄灭LED
    str r1, [r0]
    mov r3, #1 ;设置LED的状态为熄灭
    b next ;进入下一次循环
led_on
    mov r1, #0x00000000 ;三条指令是点亮LED
    str r1, [r0]
    mov r3, #0 ;设置LED的状态为点亮
    b next ;进入下一次循环
    END

7.         使用usb将编译好的二进制文件下载到内存(选择起始地址为0x30000000)里就可以运行了
阅读(3246) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

iuyinxiao2016-07-25 21:37:55

请问是不是少了一个配置步骤,二进制文件没法生成啊!

niutao.linux2009-08-25 20:00:43

我是下载了一份ARM汇编的电子书,然后打印出来,一个一个看,遇到不懂的就按照上面讲的实际用用,后来再看ARM汇编的时候,不懂了再查资料。

chinaunix网友2009-08-23 22:53:46

我想问一下,如何学习ARM汇编指令??