zoukankan      html  css  js  c++  java
  • u-boot移植总结(二)LED点灯调试 和 u-boot加载地址

    (一)LED点灯调试

    FL2440电路总共有4个LED0,LED1,LED2,LED3,分别接到板子GPB5,GPB6,GPB8,GPB10引脚。通过设置三个寄存器GPBCON(0x56000010),GPBDAT(0x56000014),GPBUP(0x56000018),控制GPB[10:0]引脚可控LED的亮灭。

    控制LED亮灭有三步:

    1,设置GPB5,GPB6,GPB8,GPB10为输出工作方式,GPBCON [21:20]  = 01 GPBCON [17:16]  = 01,GPBCON [13:12]  = 01,GPBCON [11:10]  = 01

    2,GPBUP置0000 0101 0110 0000 即GPB5,GPB6,GPB8,GPB10禁止使能上拉

    3,设置GPBDAT寄存器,低电平LED亮

    例子:

    #define GPBCON   0x56000010/*设置GPB5,GPB6,GPB8,GPB10工作方式*/
    #define GPBDAT   0x56000014 /*输出端口,控制LED亮灭*/
    #define GPBUP     0x56000018 /*禁止使能上拉*/


    ldr     r0, =GPBCON  /*Set GPIO5, GPIO6, GPIO8, GPIO10 as GPIO OUTPUT mode   */

    ldr      r1, [r0]

    ldr      r1, =0x00295550    

    str r1, [r0]


    ldr r0, =GPBUP /*Set bit 5,6,8,10, disable pullup resister*/ 

    ldr r1, [r0] 

    orr r1, r1, #0x0560          /*0000   0101   0110   0000    */

    str r1, [r0]


    ldr     r2, =GPBDAT

    ldr     r3, [r2]

    orr     r3, r3, #0x0540     /*Set bit 6,8,10 as high level and bit 5 as low, Turn On LED0*/

    str     r3, [r2]


    以下附上部分原理图,具体参考s3c2440的datasheet,以及fl2440电路原理图





    (二)u-boot加载地址

    基于FL2440板子,配有64M的SDRAM,并且挂载到nGCS6(0x3000 0000),所以64M的SDRAM

    寻址范围:0x3000 0000 – 0x3400 0000。



    在我修改 u-boot-2010.09/board/lingyun/ly2440/config.mk文件如下:


    # (C) Copyright 2002
    # Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
    # David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
    #
    # SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
    #
    # see http://www.samsung.com/ for more information on SAMSUNG
    #
    
    #
    # SMDK2410 has 1 bank of 64 MB DRAM
    #
    # 3000'0000 to 3400'0000
    #
    # Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
    # optionally with a ramdisk at 3080'0000
    #
    # we load ourself to 33F8'0000
    #
    # download area is 3300'0000
    
    
    
    TEXT_BASE = 0x33F80000




    总结:

    1,Linux系统自启过程中,u-boot默认加载到 0x33f8 0000运行, Linux-Kernel则默认加载到0x3000 8000运行。

    2,用J-TAG调试阶段,u-boot临时下载到0x33f8 0000运行。

    3,在移植阶段,需把u-boot和Linux-Kernel烧写到NANDFLASH,但是不能直接烧写。所以先TFTP下载到内存,

         再由内存下载到NANDFLASH,因此临时下载到0x3000 8000地址,并且不会覆盖已经运行的u-boot(通过J-TAG

         下载到地址0x33f8 0000运行,由0x3000 8000到0x33f8 0000 为15M空间,本次u-boot和Linux-Kernel大小都小于15M

    4,总之,移植过程J-TAG下载阶段借用0x33f8 0000地址下载;TFTP下载阶段借用0x3000 8000地址下载。

          也可以用其他地址临时烧写,但是必须保证不能冲突,覆盖已经运行的u-boot。


  • 相关阅读:
    Coin-row problem(1139)
    算法的稳定性
    折半查找的实现(1010)swust-oj
    判断回文(0315)SWUST-OJ
    逆置单链表(0957)swust-oj
    单链表上查找算法的实现(0955) swust-oj
    单链表的插入操作的实现(0952)SUWST-OJ
    单链表的链接(0954)swust-oj
    单链表的删除操作的实现(0953)swust-oj
    ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(三)—用户账户及cookie配置
  • 原文地址:https://www.cnblogs.com/xiaoxing/p/3933606.html
Copyright © 2011-2022 走看看