博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详细的bootloader的移植(6)
阅读量:5811 次
发布时间:2019-06-18

本文共 2523 字,大约阅读时间需要 8 分钟。

 
    {
        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);
    }        
}
(3)
 common/env_nand.c
//
 
puts ("*** Warning - bad CRC or NAND, using default environment\n\n");
 
//HJ_del
注释此句
(4)
 include/nand.h
struct nand_write_options {
结构体中添加
int skipfirstblk;   /* if true, skip the first good block*/
(5)
 include/s3c2410.h
添加:
/* for s3c2440, www.top-e.org */
static inline S3C2440_NAND * const S3C2440_GetBase_NAND(void)
{
return (S3C2440_NAND * const)S3C2410_NAND_BASE;
}
5.增加函数实现
(1)
common/cmd_load.c
1
】增加函数声明
/* support xmodem*/
static ulong load_serial_xmodem (ulong offset);
并后面添加其函数实现:
/* support xmodem */
static ulong load_serial_xmodem (ulong offset)
{
    int size;
    char buf[32];
    int err;
    int res;
    connection_info_t info;
    char xmodemBuf[1024];
    ulong store_addr = ~0;
    ulong addr = 0;
    size = 0;
    info.mode = xyzModem_xmodem;
    res = xyzModem_stream_open (&info, &err);
    if (!res) {
        while ((res =
            xyzModem_stream_read (xmodemBuf, 1024, &err)) > 0) {
            store_addr = addr + offset;
            size += res;
            addr += res;
#ifndef CFG_NO_FLASH
            if (addr2info (store_addr)) {
                int rc;
                rc = flash_write ((char *) xmodemBuf,
                          store_addr, res);
                if (rc != 0) {
                    flash_perror (rc);
                    return (~0);
                }
            } else
#endif
            {
                memcpy ((char *) (store_addr), xmodemBuf,
                    res);
            }
        }
本文转自 chen138 51CTO博客,原文链接:http://blog.51cto.com/chenboqiang/267035,如需转载请自行联系原作者
你可能感兴趣的文章
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
vrpie在Visio Studio 中无法调试的问题
查看>>
第六课:数据库的基本工具
查看>>
关于二叉树重构的思索
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
My97DatePicker 日历插件
查看>>
0603 学术诚信与职业道德
查看>>
小点心家族第3位成员——楼层定位效果
查看>>