at971sam9g45 uboot移植

出处:http://blog.sina.com.cn/s/blog_686ced250102vyml.html


(***************好一个彻头彻尾的光棍节,希望这是我的最后一次光棍节吧***************)

时至现在才有空继续写笔记,不得不好好回忆一番。

u-boot的稍微复杂了一些,不过跟内核比起来还是“有章可循”的多了。主要参考资料:《U-bootAT91RM9200上的全线移植分析原始版》的二、三章,《u-boot代码详细分析》,《Readme》,《Ubootstart.S源码的指令级的详尽解析 v1.6》。

参考《U-bootAT91RM9200上的全线移植分析原始版》3.5节来看,移植的工作并不多。主要是对include/configs/at91sam9m10g45ek.h进行修改,这个文件主要是针对板子资源做一些配置,所以需要对板子比较熟悉,配置过程需要建立在了解每一个参数的意义的基础上。

(1)       熟悉源码。这里先写一下源码的执行流程,有空做一个较详细的分析。cpu/arm926ejs/star.s(这段汇编又是很经典的一段代码)àlib_arm/board.c(start_arm)--àcommon/main.c(main_loop)

(2)       U-boot添加norflash驱动(擦除,读和写)。因为使用的这款norflash支持CFI接口,所以有标准的驱动可参考。拷贝board/atmel/at91rm9200dk下的flash.cboard/atmel/at91sam9m10g45ek/下,当然需要根据自己的flash需要做一些修改(内容并不多),修改本目录下makefile,最后在at91sam9m10g45ek.h中打开相关宏定义即可。

(3)       U-boot添加网络模块。因为开发板上使用的是MCP2515RMII模式,我们的项目中使用MII模式。这个只需要在at91sam9m10g45ek.h定义相关宏就OK了。board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c中网络的初始化函数board_eth_init()中调用了macb_eth_initialize(0, (void *)AT91SAM9G45_BASE_EMAC, 0x00);该函数的第三个寄存器是MCP2515的物理地址physics addr(由ADDR0-45个引脚的上电电平决定,0-31)。物理地址是什么?我的理解,就是sam9g45的一个网络控制器可以同事挂接多个(最多31个)像MCP2515一样的PHY,具体操作哪一个是有这5根地址线来确定的。

(4)       总结一下。现在看来,好像移植的工作量并不大,但是实际操作起来却花了3周左右的时间。各种问题,各种浪费时间。包括SAM-BA下载的程序部分正确导致烧写到flash里的uboot出错,网络芯片坏,网络芯片有一引脚接错……

不过很高兴,这个过程中有了收获。因为之前做的工作基本都是参考别人的移植文档,然后去做去改去移植,心里没有一点底,我不知道如果没有别人的参考文档或者我没找到合适的,那要我去移植一个东西我该怎么办,所以之前的这些工作我并不觉得有多少收获。现在在这个过程中,我发现了做移植的方法,而且我孤芳自赏的认为这是很正确的方法。这个方法才是我的收获:首先,检查硬件。包括硬件连接的错误,与参考版的差别,最好能对每个引脚链接的方式问个为什么,做到可以解释得通,这个不是最难的,确实极其重要的,因为它是先决条件;然后,跟代码。这就是考验你追代码的能力了,也是最难的一个部分,有的移植源码本身就很复杂庞大,比如linux内核源码,我想以我现在的水平是没有能力追下去的,但是话又说回来,只是追代码,有个深浅的问题。我们不需要对每一句代码刨根问底,有时候一大段代码只要看他的一句注释就行了,我们只关心与我们移植移植相关的实现细节。你会发现,源代码是最好的参考资料,而你对源代码了解的越多越深,移植工作会越清晰越简单,你的各种问题疑惑也会迎刃而解。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值