当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [讨论]关于UBOOT的初始化函数跳转
帖子发表于 : 2007-12-16 2:03 

注册: 2007-11-10 15:51
帖子: 17
送出感谢: 0 次
接收感谢: 0 次
代码:
 
    typedef int (init_fnc_t) (void);

    init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config, 

    #if defined(CONFIG_VCMA9)
    checkboard,
    #endif

    NULL,

    };



代码:
 
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {
              hang ();
         }
    }


如何知道跳转到相应的主板和CPU的初始化函数?~ 是不是还有个连接文件之类的用来指明跳转路径? ~

我看不大明白~ 谢谢大家~


最后由 SUPERFIGHT 编辑于 2007-12-16 2:22,总共编辑了 2 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-12-16 2:08 
头像

注册: 2007-12-02 14:09
帖子: 705
送出感谢: 0 次
接收感谢: 0 次
应该是中断不是函数 。。是固定值 ~~ 我只是推测不做这个不清楚


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-12-16 2:18 

注册: 2007-11-10 15:51
帖子: 17
送出感谢: 0 次
接收感谢: 0 次
我的理解是 这是个指针数组 里面的每个指针都是 int (init_fnc_t) (void) 型的~

然后通过不断读取来跳转到初始化函数~

不过怎么跳转的不大清楚~


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [讨论]关于UBOOT的初始化函数跳转
帖子发表于 : 2007-12-17 1:26 

注册: 2006-10-03 20:02
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
SUPERFIGHT 写道:
代码:
 
    typedef int (init_fnc_t) (void);

    init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config, 

    #if defined(CONFIG_VCMA9)
    checkboard,
    #endif

    NULL,

    };



代码:
 
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {
              hang ();
         }
    }


如何知道跳转到相应的主板和CPU的初始化函数?~ 是不是还有个连接文件之类的用来指明跳转路径? ~

我看不大明白~ 谢谢大家~


In my opinion,
代码:
/ *        定义个函数指针类型 init_fnc_t         */
typedef int (init_fnc_t) (void); 

代码:
/*以下定义一个函数指针数组init_sequence[],并用'硬件初始化函数名'来初始化此数组。*/
init_fnc_t *init_sequence[] = {
    cpu_init,       /* basic cpu dependent setup */
    board_init,     /* basic board dependent setup */
    interrupt_init,     /* set up exceptions */
    env_init,       /* initialize environment */
    init_baudrate,      /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,     /* stage 1 init of console */
    display_banner,     /* say that we are here */
    dram_init,      /* configure available RAM banks */
    display_dram_config, 

    #if defined(CONFIG_VCMA9)
    checkboard,
    #endif

    NULL,

    };

代码:
 
/*使用循环分别调用’硬件初始化函数‘,  直到  数组init_sequence[] 的最后一个元素NULL 结束 循环。*/
    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
        if ((*init_fnc_ptr)() != 0) {  /*当非成功返回(0),跳转至hang()*/
              hang ();
         }
    }



That's all.


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-12-17 1:48 
头像

注册: 2007-12-02 14:09
帖子: 705
送出感谢: 0 次
接收感谢: 0 次
SUPERFIGHT 写道:
我的理解是 这是个指针数组 里面的每个指针都是 int (init_fnc_t) (void) 型的~

然后通过不断读取来跳转到初始化函数~

不过怎么跳转的不大清楚~


爱一个意思就是中断 怎么跳转的可以看一下相关的cpu体系结构~~不半说来都差不多~~
现场保护 中断 恢复现场 返回 ~~


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-01-02 13:08 
头像

注册: 2007-08-01 13:30
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
make xxx_config时指定了体系结构和处理器类型,
编译时就去指定的目录下去编译。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [讨论]关于UBOOT的初始化函数跳转
帖子发表于 : 2008-01-02 22:51 

注册: 2006-11-01 23:59
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
就是一组函数指针,有的需要自己写具体的函数实现,跟中断没有什么关系


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [讨论]关于UBOOT的初始化函数跳转
帖子发表于 : 2008-10-21 11:33 

注册: 2008-10-08 11:12
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
wiseman 写道:
就是一组函数指针,有的需要自己写具体的函数实现,跟中断没有什么关系


同样观点


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [讨论]关于UBOOT的初始化函数跳转
帖子发表于 : 2009-03-06 22:47 

注册: 2008-08-21 2:24
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
同意四楼的


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译