s3c2440裸板程序四个led轮流灭

原创 2015年07月10日 20:13:43

   这个程序是基于s3c2440 上编写的,程序是根据韦东山老师的教程编写出来的,但是韦东山是针对6410的,所特在此记录一下学习的过程。

这个程序是通过汇编代码来编写启动代码,然后调用c语言代码来实现的。程序的编写环境式linux。


(1)首先新建一个leds3.s 文件,输入内容如下:

-------------分割线--------------------

.globl _start
_start:

/* 硬件相关的设置:*/
/* Peripheral port setup (查看s3c2440 memory map ) */
/* 基地址+size*/
/* 查看s3c2440芯片说明 和 arm926ej-s cp15*/
ldr r0, =0x50000000
orr r0,r0,#0x08
mcr p15,0,r0,c15,c2,4    @128k(0x50000000-0x5000FFFF)

/* 关看门狗      看门狗每三秒就会重启系统,所以需要把看门狗关掉 */
/* 往 WTCON(0x53000000)写0*/
ldr r0, =0x53000000
mov r1, #0
str r1, [r0]


/*设置栈

设置sp指针的指向,尽量使sp在SRAM之外,因为SRAM为4k所以这里指向4*1024

*/
ldr sp, = 4*1024   @查看SRAM
bl main          @这里调用的是C语言
halt:
    b halt

-------------分割线--------------------

(2)再新建一个led3.c 文件,输入内容如下:

-------------分割线--------------------

void delay(){
    volatile int i = 0x20000;
    while(i--);
}
/*在这里定义了leds3.s 文件所调用了的main 函数*/
int main()
{
    int i = 0x010 ;
    volatile unsigned long *gpbcon = (volatile unsigned long *) 0x56000010;     //0x56000010是GPBCON寄存器的地址
    volatile unsigned long *gpbdat = (volatile unsigned long *) 0x56000014;     //0x56000014是GPBDAT寄存器的地址
    
    /*配置四个led灯为输出*/

   /*查看TQ2440底板原理图和核心板原理图得到led1,led2,led3,led4分别连接到GPB5,GPB6,GPB7,GPB8上

  再查看s3c2440芯片手册得到配置GPB[5:8]为输出的方式*/
    *gpbcon = 0x15400 ;

    while(1){
    //i= 0000 0001 0000 。GPB5,GPB6,GPB7,GPB8都为0,GPB4为1
        *gpbdat = i ;  
        i = i<<1;
        if(i == 0x200) // 0x200 = 0010 0000 0000
            i = 0x10;
        delay();
    }
    return 0;
}

-------------分割线--------------------

(3)最后新建MakeFile,输入内容如下:

-------------分割线--------------------

led3.bin: leds3.o led3.o
    arm-linux-ld -Ttext 0 -o led3.elf leds3.o led3.o
    arm-linux-objcopy -O binary led3.elf led3.bin
    arm-linux-objdump -D led3.elf > led3.dis

leds3.o : leds3.s
    arm-linux-gcc -o leds3.o leds3.s -c
led3.o : led3.c
    arm-linux-gcc -o led3.o led3.c -c

clean:
    rm *.o led3.elf led3.bin led3.dis

 -------------分割线--------------------

最后在linux下执行make编译即可得到我要的led3.bin。

代码:http://download.csdn.net/detail/u014699958/8888597



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

s3c2440裸板程序四个led轮流灭

这个程序是基于s3c2440 上编写的,程序是根据韦东山老师的教程编写出来的,但是韦东山是针对6410的,所特在此记录一下学习的过程。 这个程序是通过汇编代码来编写启动代码,然后调用c语言代码来实现...

arm9-s3c2440裸板程序之led

刚开始学arm9,自己买的TQ2440的开发板,倒腾了好久,总算会控制LED灯了(偶的真正意义上的第一个能正常在arm上运行的程序) 虽然在大神看来很简单,但一个菜鸟自己学的话,还是不太容易入门。往...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

S3C2440裸板程序下载

本例基于JZ2440开发板进行开发和实验。将嵌入式linux学习历程与广大网友分享,也方便自己对学习做成笔记和总结。本例使用PC机的DOS命令行,通过ope烧录器将二进制程序文件烧录到NandFlas...

【tiny6410】led裸板程序

start.s文件 启动代码很简单,主要做一些硬件相关的设置:告诉CPU外设的基地址、关看门狗、设置栈(为调用c语言准备)   .globl _start _start: /* 硬件相关...

pcDuino裸板程序-led

最近调驱动时,调试led时遇到了点问题,于是回过头来再写个led裸板程序。在我写的pcDuino第一个裸板程序uart的基础上,再写个led裸板程序还是很轻松的。很多人觉得没有必要写什么pcDuino...

s5pc100第一个裸板程序led

开发环境: 系统:ubuntu 10.04.4 单板:s5pc100 (CES-C100) 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开发环境...

TQ2440第一个裸板程序led

开发环境 系统:ubuntu 10.04.4 单板:tq2440 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开发环境配置。 目标:实现tq2...

micro2440第一个裸板程序led

开发环境: 系统:ubuntu 10.04.4 单板:micro2440 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开发环境配置。 目标:实...

ok6410第一个裸板程序led

开发环境: 系统:ubuntu 10.04.4 单板:ok6410 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开发环境配置。 目标:实现ok...

s3c2440的LED点灯裸机C程序

1.gcc编译的时候-g选项表示添加一些调试信息。 一个程序一般会经过(针对一个linux程序) (1)预处理 (2)编译:.c文件处理为.s文件 (3)汇编:.s文件处理为.o文件 (4)链接:把多...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)