Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384409
  • 博文数量: 57
  • 博客积分: 2299
  • 博客等级: 大尉
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-27 23:12
文章分类
文章存档

2011年(4)

2010年(53)

分类: 嵌入式

2010-01-18 21:24:38

说好了写u-boot移植流程的,现在补上,参考http://hbhuanggang.cublog.cn这位无私奉献的大侠。
 
   关于移植过程在http://hbhuanggang.cublog.cn上这位大哥已经写得很清楚了,可以随时查看,在调试时我有几点总结出来的经验:
    1、在没有移植nand驱动之前,也就是在start.S中,汇编代码需要把整个u-boot代码拷贝到ram中运行,这个拷贝需要nand的驱动,要么用汇编写驱动,要么用C写,我用的是TQ2440,在光盘中的源码包中可以看到

    bl clock_init 和
    bl CopyCode2Ram    

这样的两个函数,前面一个是用来初始化时钟的,为运行拷贝代码的C程序做准备,后面一个是搬运代码的,天嵌公司最近的源码包没有给出这两个函数的C代码,而是编译成模块放在u-boot的源码包里。

    没有这两个函数来设置时钟和搬运代码,设置时钟是可以用汇编写的,也就是说在u-boot未支持nand之前,我们可以把修改好的下载到nor flash中跑,在nor flash里面就不需要代码搬移,这样可以就验证自己修改的代码是否正确。

    2、也可以直接下载到ram中跑,用usb或串口下载都可以,比如Tq2440的就可以用nor flash里面的u-boot下载用户的程序到ram里面直接运行,利用这种方式调试需要屏蔽掉start.S里面这句初始化CPU的函数

    bl    cpu_init_crit


因为在下载程序之前cpu就已经初始化好了,不然怎么下载呢?

我觉得u-boot的移植不在于代码如何修改,网上有很多好心人都给出了详细的步骤,但是缺少的是调试的方法,我就因为调试的方法不对而浪费了好多时间。

阅读(1621) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~