韦东山Linux嵌入式课程社区
直播中

李焯尤

7年用户 147经验值
私信 关注

程序中没有对BANK6进行初始化

注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!

此板块为  [ARM裸机加强版]
  • 问题所在章节:新一期 -> 第十二课 -> 第四节(关于sdram)
  • 发生问题的运行环境:开发板:jz2440,编译器:arm-linux-gcc-3.4.5
  • 问题发生描述:为什么我的程序中并没有对BANK6进行初始化,为甚没对SDRAM还可以进行读写?
  • 以下为源程序
  • int main(void){

        uart0_init();
        led_init();

        unsigned int p;
        unsigned char c;
        int a;

        p = 0x30000000;
        c = 'a';
        for(a = 0; a < 10; a++){
            *(unsigned char *)p = c;
            p += 0x4;
            c++;
        }

        uart0_puts("nr");
        uart0_puts("output start!");
        p = 0x30000000;
        for(a = 0; a < 10; a++){
            uart0_puts("nr");
            uart0_putchar(*(unsigned char *)p);
            p += 0x4;
            delay(1000000);
        }
        return 0;
    }


    输出的结果如下




  • 输出的错误信息:没有错误信息

回帖(4)

张博

2019-4-10 11:51:51
start.S初始化了SDRAM
举报

王红梅

2019-4-10 12:11:12
我的start.s中也没有对bank6进行过配置,所以说bank6的默认配置可以直接读写sdram吗?
以下为start.s的源代码
.text
.global _start
_start:
    /*
        关闭看门狗
     */
    ldr r0, =0x53000000
    mov r1, #0x0
    str r1, [r0]

    /*
        设置时钟
     */
    ldr r0, =0x4C000014
    mov r1, #0x5
    str r1, [r0]

    mrc p15,0,r0,c1,c0,0
    orr r0,r0,#0xc0000000
    mrc p15,0,r0,c1,c0,0
   
    ldr r0, =0x4C000004
    mov r2, #0x5c
    mov r1, r2, lsl#0x0c
    mov r3, #0x01
    mov r2, r3, lsl#0x04
    orr r1, r1, r2
    orr r1, r1, #0x1
    str r1, [r0]
    /*
        先设置成Nor Flash启动,0x40001000
        在进行判断Flash类型
        如果为Nand Flash,将地址设置成4096
     */
    ldr sp, =0x40001000
    mov r1, #0x0
    ldr r0, [r1]
    mov r2, #0x0
    str r2, [r1]
    ldr r3, [r1]
    cmp r2, r3
    moveq sp, #0x1000
    streq r0, [r1]

    bl main
   
halt:
    b halt
举报

高建明

2019-4-10 12:17:15
第004节_辅线1_硬件知识_SDRAM的设置_P

这节课末尾有讲在哪添加初始化,以及去掉初始化后,实验不成功,来对比。

你的代码具体是哪个路径考出来的,文件夹的名字是? 注意按照视频学习把代码对应对
举报

刘辉

2019-4-10 12:29:36
问题已经解决
问题分析:sdram的芯片本身会缓存2440传递的参数并保存
我的程序结构分为1、初始化bank6,2、写sdram,3、读sdram

一、如果第一次下载程序成功配置sdram,挨个读写0x30000000开始的字节无任何问题
二、在不给开发板断电的情况下,从新下载程序并且去掉初始化bank6的部分,仍然可以正常读写数据,但是从0x30000000的地址开始每4个字节的第一个字节能成功读写数据,其余部分不能读写数据。然后将开发板彻底断电后,从新上电,不初始化bank6的程序无法正常读写sdram。
三、epo貌似影响sdram的掉电不保存数据的特性,如果拔掉开发板电源后,不拔掉epo,时隔一分钟仍可从开发板中0x30000000的地方每4个字节中的第一个字节读数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分