<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    U-boot-2009.08移植TE2440II開發板--在SDRAM中運行

    發布時間:2011-3-23 13:42    發布者:techshare
    關鍵詞: SDRAM , TE2440II , U-BOOT , 開發板 , 移植
    因為串口的波特率問題糾結了我2天,嘿嘿。   
    1.首先創建自己板子的目錄   
    cd u-boot-2009.08   
    mkdir board/samsung/TE2440II   
    cp board/samsung/smdk2410/* board/samsung/TE2440II/   
    mv board/samsung/TE2440II/smdk2410.c board/samsung/TE2440II/TE2440II.c   
    2.添加配置文件   
    cp include/configs/smdk2410.h include/configs/TE2440II.h   
    在include/configs/smdk2410.h include/configs/TE2440II.h中添加   
    #define CONFIG_SKIP_LOWLEVEL_INIT???????? 1???
    因為是先在SDRAM中運行,所以要跳過底層的初始化。暫時沒有添加CONFIG_2440,用原來的CONFIG_2410,以提高移植速度。   
    注意暫時不要添加#define CONFIG_SKIP_RELOCATE_UBOOT??? 1     
    否則就要更改你的下載地址為0x33f80000,讓他去搬運代碼吧   
    3.修改board/samsung/TE2440II/ 目錄下的Makefile,把COBJS := 修改為   
    COBJS??? := TE2440II.o flash.o   
    4.修改頂層Makefile   
    TE2440II_config : unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t TE2440II samsung s3c24x0   
    注意有個Tab鍵   
    5. 修改頂層Makefile文件,在CROSS_COMPILE ?=后面添加自己的交叉編譯工具。   
    CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux-   
    6.完成這幾步后編譯一下   
    make TE2440II_config   
    make     
    下到SDRAM中,終端應該沒有任何信息,需要設置波特率。     
    1.修改TE2440II.c文件   
    #elif FCLK_SPEED==1  /* Fout = 405MHz */   
    #define M_MDIV  0x7f   
    #define M_PDIV  0x2   
    #define M_SDIV  0x1   
    #endif   
    2.??? 修改cpu/arm920t/start.S   
    外部晶振為12MHz,通過MPLLCON設置MPLL為405M   
    #if defined(CONFIG_S3C2410)   
    #define MPLLCON 0x4C000004   
    #define UPLLCON 0x4c000008   
    #define LOCKTIME 0x4C000000   
    #define CAMDIVN? 0x4C000018     
    ldr r0,=LOCKTIME   
    ldr r1,=0xffffffff   
    str r1,[r0]   
    //清除攝像頭分頻寄存器的值
    ldr r0,=CAMDIVN
    mov r1,#0   
    str r1,[r0]   
    ldr r0, =CLKDIVN   
    mov r1, #5   
    str r1,[r0]   
    //手冊說HDIVN不為0,加這個   
    mrc p15, 0, r1, c1, c0, 0  //read ctrl register
    orr r1, r1, #0xc0000000 //Asynchronous     
    mcr? p15, 0, r1, c1, c0, 0  //write ctrl register   
    ldr r0, =UPLLCON  //同時修改UPLLCON和MPLLCON需要先修??
    ldr r1, =0x00038022  //改UPLLCON,且之間要間隔至少7個nop     
    str r1,[r0]  //手冊有些   
    nop
    nop   
    nop   
    nop   
    nop   
    nop   
    nop   
    nop   
    ldr r0, =MPLLCON   
    ldr r1, =0x0007f021   
    str r1,[r0]   
    #endif
    3. 修改cpu/arm920t/s3c24x0/speed.c   
    由于S3C2440和S3C2410的MPLL計算公式改變了,所以要改一下。   
    get_PLLCLK改成這樣   
    static ulong get_PLLCLK(int pllreg)   
    {   
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();   
    ulong r, m, p, s;   
    if (pllreg == MPLL)   
    r = clk_power->MPLLCON;   
    else if (pllreg == UPLL)   
    r = clk_power->UPLLCON;   
    else   
    hang();   
    m = ((r & 0xFF000) >> 12) + 8;   
    p = ((r & 0x003F0) >> 4) + 2;   
    s = r & 0x3;   
    if (pllreg == MPLL) //MPLL的算法和UPLL是不同的。這里m=2*m   
    {   
    m <<= 1;   
    }   
    p = ((r & 0x003F0) >> 4) + 2;   
    s = r & 0x3;   
    return ((CONFIG_SYS_CLK_FREQ * m) / (p << s));   
    }   
    get_HCLK改成這樣   
    /* return HCLK frequency */   
    ulong get_HCLK(void)   
    {   
    ??? S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();   
    ??? return get_FCLK()/4;   
    ??? //return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());   
    }   
    get_PCLK改成這樣   
    /* return PCLK frequency */   
    ulong get_PCLK(void)   
    {   
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();   
    return get_HCLK()/2;   
    //return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());   
    }   
    4.??? 我出問題的地方是串口,顯示的基本跟正常的一樣,但是顯示為亂碼,是串口波特率的問題。在drivers/serial/serial_s3c24x0.c中,修改   
    uart->UBRDIV = 27;   
    我直接設定了,不用鳥u-boot再鳥算了,他自己怎么也算不對,我幫他。   
    5.??? make TE2440II_config   
    ?????? make     
    下載到SDRAM中,哈哈。



    李萬鵬
    本文地址:http://www.portaltwn.com/thread-59526-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷