娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

U-Boot移植

發(fā)布者:電子創(chuàng)意達(dá)人最新更新時(shí)間:2024-07-10 來(lái)源: elecfans關(guān)鍵字:u-boot  移植  s3c2440 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

1. 安裝韋東山的虛擬版的ubuntu 9, 里面交叉編譯啥的都弄好了, 直接用, 然后把workstation共享目錄打開(kāi), 指向uboot的壓縮包所在目錄.

2. 在虛擬機(jī)上, 打開(kāi)ssh, 通過(guò)ssh, 進(jìn)/mnt/hgfs/ 把uboot壓縮包解壓了.

 

3. 編輯Makefile, 在smdk2400下面增加兩行, 注意要好tab鍵

smdk2400_config    :    unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0

tx2440_config :         unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t tx2440 NULL s3c24x0

修改交叉編譯命令如紅色部分:

ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-

 

4. 把board目錄下的除smdk2140目錄其他全刪了, 然后把smdk2140改名成tx2440

進(jìn)去tx2440, 修改一下smdk2140.c改成tx2440.c

然后用vi, 修改board_init, 增加時(shí)鐘的有關(guān)注釋, 如下:

/* S3C2440: Mpll,Upll = (2*m * Fin) / (p * 2^s)
 * m = M (the value for divider M)+ 8, p = P (the value for divider P) + 2
 */
#define S3C2440_MPLL_400MHZ     ((0x7f<<12)|(0x02<<4)|(0x01))
#define S3C2440_UPLL_48MHZ      ((0x38<<12)|(0x02<<4)|(0x02))
#define S3C2440_CLKDIV          0x05    /* FCLK:HCLK:PCLK = 1:4:8 */
 
/* S3C2410: Mpll,Upll = (m * Fin) / (p * 2^s)
 * m = M (the value for divider M)+ 8, p = P (the value for divider P) + 2
 */

#define S3C2410_MPLL_200MHZ     ((0x5c<<12)|(0x04<<4)|(0x00))
#define S3C2410_UPLL_48MHZ      ((0x28<<12)|(0x01<<4)|(0x02))
#define S3C2410_CLKDIV          0x03    /* FCLK:HCLK:PCLK = 1:2:4 */

int board_init (void)
{
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
    /* set up the I/O ports */
    gpio->GPACON = 0x007FFFFF;
    gpio->GPBCON = 0x00044555;
    gpio->GPBUP = 0x000007FF;
    gpio->GPCCON = 0xAAAAAAAA;
    gpio->GPCUP = 0x0000FFFF;
    gpio->GPDCON = 0xAAAAAAAA;
    gpio->GPDUP = 0x0000FFFF;
    gpio->GPECON = 0xAAAAAAAA;
    gpio->GPEUP = 0x0000FFFF;
    gpio->GPFCON = 0x000055AA;
    gpio->GPFUP = 0x000000FF;
    gpio->GPGCON = 0xFF95FFBA;
    gpio->GPGUP = 0x0000FFFF;
    gpio->GPHCON = 0x002AFAAA;
    gpio->GPHUP = 0x000007FF;

    /*support both of S3C2410 and S3C2440*/
    if ((gpio->GSTATUS1 == 0x32410000) || (gpio->GSTATUS1 == 0x32410002))
    {
       /*FCLK:HCLK:PCLK = 1:2:4*/
       clk_power->CLKDIVN = S3C2410_CLKDIV;

       /* change to asynchronous bus mod */

        __asm__(    'mrc    p15, 0, r1, c1, c0, 0/n'    /* read ctrl register   */
                    'orr    r1, r1, #0xc0000000/n'      /* Asynchronous         */
                    'mcr    p15, 0, r1, c1, c0, 0/n'    /* write ctrl register  */
                    :::'r1'
                    );

        /* to reduce PLL lock time, adjust the LOCKTIME register */
        clk_power->LOCKTIME = 0xFFFFFF;
        /* configure MPLL */
        clk_power->MPLLCON = S3C2410_MPLL_200MHZ;
        /* some delay between MPLL and UPLL */
        delay (4000);
        /* configure UPLL */
        clk_power->UPLLCON = S3C2410_UPLL_48MHZ;
        /* some delay between MPLL and UPLL */
        delay (8000);
        /* arch number of SMDK2410-Board */

        gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
    }
    else
    {
       /* FCLK:HCLK:PCLK = 1:4:8 */
        clk_power->CLKDIVN = S3C2440_CLKDIV;
        /* change to asynchronous bus mod */
        __asm__(    'mrc    p15, 0, r1, c1, c0, 0/n'    /* read ctrl register   */
                    'orr    r1, r1, #0xc0000000/n'      /* Asynchronous         */
                    'mcr    p15, 0, r1, c1, c0, 0/n'    /* write ctrl register  */
                    :::'r1'
                    );

        /* to reduce PLL lock time, adjust the LOCKTIME register */
        clk_power->LOCKTIME = 0xFFFFFF;
        /* configure MPLL */
        clk_power->MPLLCON = S3C2440_MPLL_400MHZ;
        /* some delay between MPLL and UPLL */
        delay (4000);
        /* configure UPLL */
        clk_power->UPLLCON = S3C2440_UPLL_48MHZ;
        /* some delay between MPLL and UPLL */
        delay (8000);
        /* arch number of SMDK2440-Board */
        gd->bd->bi_arch_number = MACH_TYPE_S3C2440;
    }

    /* adress of boot parameters */
    gd->bd->bi_boot_params = 0x30000100;
    icache_enable();
    dcache_enable();
    return 0;
}

 

接著修改這個(gè)board/tx2440/下面的Makefile

把原來(lái)的smdk2410.o改成下面:

COBJS   := tx2440.o flash.o

 

5. 進(jìn)include/configs/, 把其他的都刪掉, 只把smdk2140.h改名為tx2440.h

6. 把cpu/arm920t/config.mk里面-msoft-float注釋掉

PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8
#       -msoft-float

 

7. 用make tx2440_config看看有否:

Configuring for tx2440 board...

 

8. 增加對(duì)sdram的支持, 確定board/tx2440/lowlevel_init.s內(nèi)存映射如下:

#define B1_BWSCON          (DW32)
#define B2_BWSCON          (DW16)
#define B3_BWSCON          (DW16 + WAIT + UBLB)
#define B4_BWSCON          (DW16)
#define B5_BWSCON          (DW16)
#define B6_BWSCON          (DW32)
#define B7_BWSCON          (DW32)

并修改REFCNT為0x4f4

#define REFCNT             0x4f4    /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */

 

9. 修改cpu/arm920t/s3c24X0/speed.c

增加一行:

DECLARE_GLOBAL_DATA_PTR;

增加紅色的部分:

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;

/* support both of S3C2410 and S3C2440 */

    if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
        return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
    else
        return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));   /* S3C2440 */

   // return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
}

/* return FCLK frequency */
ulong get_FCLK(void)
{
    return(get_PLLCLK(MPLL));
}

 

同時(shí)增加下面的:


/* for s3c2440 */
#define S3C2440_CLKDIVN_PDIVN        (1<<0)
#define S3C2440_CLKDIVN_HDIVN_MASK   (3<<1)
#define S3C2440_CLKDIVN_HDIVN_1      (0<<1)
#define S3C2440_CLKDIVN_HDIVN_2      (1<<1)
#define S3C2440_CLKDIVN_HDIVN_4_8    (2<<1)
#define S3C2440_CLKDIVN_HDIVN_3_6    (3<<1)
#define S3C2440_CLKDIVN_UCLK         (1<<3)

#define S3C2440_CAMDIVN_CAMCLK_MASK  (0xf<<0)
#define S3C2440_CAMDIVN_CAMCLK_SEL   (1<<4)
#define S3C2440_CAMDIVN_HCLK3_HALF   (1<<8)
#define S3C2440_CAMDIVN_HCLK4_HALF   (1<<9)
#define S3C2440_CAMDIVN_DVSEN        (1<<12)


/* return HCLK frequency */

ulong get_HCLK(void)
{
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    unsigned long clkdiv;
    unsigned long camdiv;
    int hdiv = 1;

    /* support both of S3C2410 and S3C2440 */
    if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
        return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
    else
    {
        clkdiv = clk_power->CLKDIVN;
        camdiv = clk_power->CAMDIVN;
        /* work out clock scalings */
        switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
        case S3C2440_CLKDIVN_HDIVN_1:
            hdiv = 1;
            break;
 
        case S3C2440_CLKDIVN_HDIVN_2:
            hdiv = 2;
            break;

        case S3C2440_CLKDIVN_HDIVN_4_8:
            hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
            break;

        case S3C2440_CLKDIVN_HDIVN_3_6:
            hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
            break;
        }

        return get_FCLK() / hdiv;
    }
}

 

/* return PCLK frequency */

ulong get_PCLK(void)
{
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    unsigned long clkdiv;
    unsigned long camdiv;
    int hdiv = 1;

    /* support both of S3C2410 and S3C2440 */

    if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
        return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());
    else
    {  
        clkdiv = clk_power->CLKDIVN;
        camdiv = clk_power->CAMDIVN;

        /* work out clock scalings */

        switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {

        case S3C2440_CLKDIVN_HDIVN_1:
            hdiv = 1;
            break;
 
        case S3C2440_CLKDIVN_HDIVN_2:
            hdiv = 2;
            break;

        case S3C2440_CLKDIVN_HDIVN_4_8:
            hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
            break;

        case S3C2440_CLKDIVN_HDIVN_3_6:
            hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
            break;
        }
        return get_FCLK() / hdiv / ((clkdiv & S3C2440_CLKDIVN_PDIVN)? 2:1);
    }      
}

[1] [2]
關(guān)鍵字:u-boot  移植  s3c2440 引用地址:U-Boot移植

上一篇:TQ2440觸摸屏
下一篇:ALSA聲卡_從零編寫(xiě)之?dāng)?shù)據(jù)傳輸(基于優(yōu)龍F(tuán)S2410開(kāi)發(fā)板,UDA1341聲卡)

推薦閱讀最新更新時(shí)間:2025-05-22 00:55

U-Boot移植(18)網(wǎng)卡dm9000aep移植總結(jié)
總結(jié): 主要修改三個(gè)文件: 1、/u-boot-1.1.6/include/configs/100ask24x0.h 2、/u-boot-1.1.6/board/100ask24x0/lowlevel_init.S 3、/u-boot-1.1.6/drivers/dm9000x.c 補(bǔ)充:4、/u-boot-1.1.6/drivers/dm9000x.h 把移植好的u-boot-1.1.6重新打成壓縮包,便于收藏。 如下: tar cjf u-boot-1.1.6-new.tar.bz2 u-boot-1.1.6
[單片機(jī)]
U-boot 在 mini2440-S3C2440 上的移植(1)-開(kāi)發(fā)環(huán)境搭建-交叉編譯工具鏈的安裝
編譯U-boot給mini2440時(shí),要編譯出能在ARM平臺(tái)上使用的可執(zhí)行文件-bin,首先要在ubuntu 中安裝交叉編譯工具鏈,因?yàn)槲沂褂玫氖怯焉浦鄣拈_(kāi)發(fā)板,所以我使用的已經(jīng)制作好的工具鏈,當(dāng)然也可以自己制作工具鏈:如基于GCC和glibc制作工具鏈,可以使用cross tools編譯; 我使用的工具鏈的版本是arm-linux-gcc-4.3.3版本,下載地址:下載地址 1.在pc端下載好以后,將壓縮包用xftp傳輸?shù)経buntu;當(dāng)然也可以用其他軟件上傳;上傳后把它放在根目錄下的/usr/local文件夾中新建一個(gè)arm文件夾,然后把壓縮包復(fù)制到這個(gè)文件夾;注意先建好文件夾再上傳,可以減少很多工作量; 一定要上傳壓縮包,
[單片機(jī)]
<font color='red'>U-boot</font> 在 mini2440-S3C2440 上的<font color='red'>移植</font>(1)-開(kāi)發(fā)環(huán)境搭建-交叉編譯工具鏈的安裝
基于S3C6410處理器的U-Boot SD卡啟動(dòng)的移植分析與功能
通用Bootloader(Universal Bootloader,U-Boot)是系統(tǒng)上電后執(zhí)行的第一段代碼,其作用主要包括初始化硬件環(huán)境以及加載執(zhí)行操作系統(tǒng)內(nèi)核。在進(jìn)行系統(tǒng)安裝時(shí),U-Boot通常需要使用專用工具燒寫(xiě)到FLASH中,內(nèi)核及文件系統(tǒng)則通過(guò)U-Boot命令進(jìn)行燒寫(xiě),該過(guò)程操作繁瑣,并且容易出錯(cuò),不適宜系統(tǒng)的大量安裝。 S3C6410是三星公司生產(chǎn)的一款基于ARM11架構(gòu)的通用嵌入式處理器,其啟動(dòng)方式除了傳統(tǒng)的Flash啟動(dòng)模式外,還支持從SD 卡中啟動(dòng)系統(tǒng)。本文基于S3C6410處理器,分析了從SD卡啟動(dòng)系統(tǒng)的原理,并對(duì)U-Boot源碼進(jìn)行修改以支持該啟動(dòng)方式,在此基礎(chǔ)上進(jìn)一步擴(kuò)展了U-Boot的功能,使其
[單片機(jī)]
基于S3C6410處理器的<font color='red'>U-Boot</font> SD卡啟動(dòng)的<font color='red'>移植</font>分析與功能
基于S3C2410A的嵌入式系統(tǒng)的U-Boot移植
0 引 言 ??? ARM嵌入式處理器已被廣泛應(yīng)用于消費(fèi)電子產(chǎn)品、無(wú)線通信、網(wǎng)絡(luò)通信和工業(yè)控制等領(lǐng)域。其中,ARM9的芯片更是以其低價(jià)格、低功耗、高性能在手持設(shè)備中占據(jù)著重要市場(chǎng)。在嵌入式操作系統(tǒng)中,Linux,Vxworks,WinCE三足鼎立,其中Linux由于其開(kāi)源性、穩(wěn)定性、安全性、可裁減性更是一支獨(dú)放。在嵌入式系統(tǒng)中,如何實(shí)現(xiàn)在ARM9平臺(tái)下Linux操作系統(tǒng)的引導(dǎo)工作是嵌入式技術(shù)開(kāi)發(fā)的重要環(huán)節(jié)。 1 嵌入式系統(tǒng)的軟件組成 1.1 系統(tǒng)的軟件組成 ??? 嵌入式的軟件系統(tǒng)主要由Bootloader、操作系統(tǒng)、文件系統(tǒng)、應(yīng)用程序等組成。其中,Bootloader是介于硬件和操作系統(tǒng)之間的一層,其作用就好像P
[嵌入式]
基于S3C2440和DM9000移植LWIP
終于開(kāi)始我的第一篇筆記了。這回要做的事情,是以太網(wǎng)的移植。 使用mini2440已經(jīng)有一段時(shí)間了。諸如裸機(jī)的LED,鍵盤(pán)開(kāi)關(guān)等等等等也都試驗(yàn)過(guò)了,uCOS,WinCE也是淺嘗了一下。如今想到了以太網(wǎng)。 由于mini2440的板上集成了一個(gè)DM9000的網(wǎng)卡,并且在CE系統(tǒng)里面成功的使用以太網(wǎng)與PC連接了。于是自然而然的想,能不能在uCOS下也實(shí)現(xiàn)以太網(wǎng)接口呢? 一上來(lái)什么都不懂,于是找一些資料,在這里要謝謝焦海波老師所著的嵌入式網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)一書(shū),移植過(guò)程中很多資料都來(lái)源于這本書(shū)。其次是mikenoodle的單片機(jī)驅(qū)動(dòng)DM9000網(wǎng)卡一文,里面詳細(xì)地講述如何在2440裸機(jī)下驅(qū)動(dòng)DM9000網(wǎng)卡。 首先明確我們需要做的事情是什么?為了
[單片機(jī)]
S3C2440移植uboot之啟動(dòng)過(guò)程概述
文章目錄 1.分析start.S 2._start會(huì)跳轉(zhuǎn)到start_code處 3.然后進(jìn)入第一個(gè)C數(shù):board_init_f() 4.接下來(lái)進(jìn)入重定位 5.清除bss段 移植Uboot其他文章鏈接: S3C2440移植uboot之編譯燒寫(xiě)uboot S3C2440移植uboot之新建單板_時(shí)鐘_SDRAM_串口 S3C2440移植uboot之啟動(dòng)過(guò)程概述 S3C2440移植uboot之支持NAND啟動(dòng) S3C2440移植uboot之支持NORFLASH S3C2440移植uboot之支持NANDFLASH操作 S3C2440移植uboot之支持DM9000 S3C2440移植uboot之裁
[單片機(jī)]
<font color='red'>S3C2440</font><font color='red'>移植</font>uboot之啟動(dòng)過(guò)程概述
基于S3C2440的Linux內(nèi)核移植和yaffs2文件系統(tǒng)制作-- 配置Linux內(nèi)核
1.3.3 配置Linux內(nèi)核 1、 進(jìn)入Linux-2.6.29.1內(nèi)核主目錄,通過(guò)以下命令將2410的默認(rèn)配置文件寫(xiě)到當(dāng)前目錄下的.config。S3C2410的配置和S3C2440差不多,,在這基礎(chǔ)上進(jìn)行修改。 make s3c2410_defconfig 2、 配置內(nèi)核模塊的功能,有幾種方式可以進(jìn)行界面選擇: make menuconfig(文本選單的配置方式,在有字符終端下才能使用) make xconfig(圖形窗口模式的配置方式,圖形窗口的配置比較直觀,必須支持Xwindow下才能使用) make oldconfig(文本配置方式,在原內(nèi)核配置的基礎(chǔ)修改時(shí)使用) 這里使用make menuconfi
[單片機(jī)]
基于s3c2440的madplay移植
在mini2440移植聲卡后,趕緊找了移植madplay的資料,看上去挺簡(jiǎn)單的,于是接著移植madplay。 一、 環(huán)境和軟件介紹 1、主機(jī)環(huán)境:虛擬機(jī)下Fedora9 2、交叉編譯器:arm-linux-gcc-4.3.2 3、軟件包:zlib-1.2.3、libid3tag-0.15.1b.tar.gz、libmad-0.15.1b.tar.gz、madplay-0.15.2b.tar.gz 4、 把以上軟件包解壓到/opt/studyarm/madplay-make目錄下,分別改名為zlib、libid3tag、libmad、madplay。并在madplay-make目錄下新建include和lib目錄用于存放編譯后
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 南华县| 且末县| 潞西市| 安阳县| 定日县| 桃园市| 应城市| 依兰县| 肃北| 莱西市| 盐池县| 敦化市| 仁寿县| 公主岭市| 周口市| 山东| 曲水县| 静海县| 睢宁县| 信宜市| 镇坪县| 石楼县| 当涂县| 义马市| 揭西县| 六盘水市| 廊坊市| 武川县| 平顺县| 海城市| 明水县| 固镇县| 蛟河市| 濉溪县| 五原县| 古交市| 腾冲县| 富宁县| 师宗县| 襄城县| 辽中县|