zoukankan      html  css  js  c++  java
  • sdram 裸机程序

     硬件平台 :JZ2440

     实现功能:将led闪烁代码从2440的2k sram中拷贝到sdram

     start.s      -->   上电初始化,拷贝代码

     sdram.c   -->   led代码

     start.s 源码:

    .equ MENRI_BASE, 0x48000000
    .equ SDRAM_BASE, 0x30000000
    
    .text
    .global _start
    _start:
            bl close_watchdog
            bl sdram_set
            bl copy_sram_to_sdram
            ldr pc,=on_sdram
    on_sdram:
            ldr sp,=0x34000000
            bl main
    loop1:
           b loop1
            
    close_watchdog:
            ldr r0,=0x53000000
            mov r1,#0x0        
            str r1,[r0]
            mov pc,lr
    
    copy_sram_to_sdram:
            ldr r0,=SDRAM_BASE
            mov r1,#0x0
            mov r3,#4*1024
    l:    
            ldr r4,[r1], #4
            str r4,[r0],#4    
            cmp r1, r3  
            bne l
             
             mov pc,lr 
             
    sdram_set:
            mov r1,#MENRI_BASE
            adrl r2,mem_reg_set
            add r3,r1,#52
    m:
            ldr r4,[r2],#4
            str r4,[r1],#4
            cmp r1,r3
            bne m
            
            mov pc,lr
    
    .align 4
    mem_reg_set:
    .long  0x22011110
    .long  0x00000700
    .long  0x00000700
    .long  0x00000700 
    .long  0x00000700               
    .long  0x00000700               
    .long  0x00000700 
    .long  0x00018005
    .long  0x00018005
    .long  0x008c07a3
    .long  0x000000b1
    .long  0x00000030
    .long  0x00000030

    sdram.c 源码:

    #define GPFCON (*(unsigned long *)0x56000050) 
    #define GPFDAT (*(unsigned long *)0x56000054)
    #define LED1_ON   (1<<8)
    #define LED2_ON   (1<<10)
    #define LED3_ON   (1<<12)
    
    void delay(unsigned long num)
    {
        while(--num);
    }
    
    int main(void)
    {
        GPFCON=LED1_ON|LED2_ON|LED3_ON;
        while(1)
        {
            GPFDAT=(1<<4);
            delay(100000);
            GPFDAT=(1<<5);
            delay(100000);
            GPFDAT=(1<<6);
            delay(100000);
        }
        
        return 0;
    }

    编译的Makefile:

    sdram.bin:start.s sdram.c
        arm-linux-gcc -o start.o -c start.s
        arm-linux-gcc -o sdram.o -c sdram.c
        arm-linux-ld -Ttext 0x3000000 -o sdram_elf start.o sdram.o
        arm-linux-objcopy  -O binary -S sdram_elf sdram.bin
        arm-linux-objdump -D -m arm sdram_elf > sdram.dis
    clean:
        rm *.o *.dis *.bin sdram_elf 

        

  • 相关阅读:
    Linux centos 6.4安装
    vm虚拟机安装,配置与使用
    Linux简介
    360兼容视图
    补丁patch 漏洞 bug或glitch
    迫不得已! ! 仅仅针对IE浏览器的样式,尤其是IE8及以下
    JS延时器 定时器 暂停器 中断器
    CSS动态定位
    一个标准的AJAX请求
    ajax的两个重要参数contentType 和dataType
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10408121.html
Copyright © 2011-2022 走看看