• 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 

        

  • 相关阅读:
    CVE-2017-11826:Office Open XML 标签嵌套解析混淆漏洞
    未授权访问漏洞总结
    Linux提权—脏牛漏洞(CVE-2016-5195)
    Linux提权
    (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
    SSH后门万能密码
    Linux中使用gdb dump内存
    在 x64dbg 中设置条件断点和条件记录断点
    Linux中的.bash_ 文件详解
    Photoshop 第二课 工具-钢笔的使用
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10408121.html
Copyright © 2020-2023  润新知