zoukankan      html  css  js  c++  java
  • UBoot200903移植笔记(第二阶段移植准备)

    U-Boot-2009-03移植笔记(从Nandflash启动二)中,我们移植好了Nandflash的读驱动,并且将U-boot从nandflash中搬运到了sdram,接下来的工作,就是沿着u-boot的执行主线,继续往下修改代码。

    测试代码是否正确执行到第二阶段

    U-BOOT的启动,分为两个阶段,第一个阶段是在cpu/arm920t/start.S中的汇编代码,主要工作是设置CPU工作模式、关看门狗、禁中断、初始化内存、代码搬运,初始化堆栈,清BSS段,然后跳转到start_armboot函数执行,这个start_armboot在lib_arm/board.c中,我们在这个start_armboot函数的一开始,点亮led1,led2,led3三盏灯。

    1、在board/xinna2440下面增加一个led_op.c文件,内容如下:

     1 #define GPBCON  (*(volatile unsigned long *)0x56000010)
     2 #define GPBDAT  (*(volatile unsigned long *)0x56000014)
     3 
     4 int led_on(int index)
     5 {
     6     if(index == 1)
     7     {
     8         GPBCON = (1 << 10);
     9         GPBDAT = ~((1 << 5));
    10     }
    11     else if(index == 2)
    12     {
    13         GPBCON = (1 << 10) | (1 << 12);
    14         GPBDAT = ~((1 << 5) | (1 << 6));
    15     }
    16     else if(index == 3)
    17     {
    18         GPBCON = (1 << 10) | (1 << 12) | (1 << 14);
    19         GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7));
    20     }
    21     else 
    22     {
    23         GPBCON = (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);
    24         GPBDAT = ~((1 << 5) | (1 << 6) | (1 << 7) | (1 << 8));
    25     }
    26     return 0;
    27 }
    led_op.c

     2、修改board/xinna2440/Makefile增加对led_op.c的编译。

     3、修改lib_arm/board.c,在start_armboot函数一开始死循环调用led_on(3)。

     4、烧写,运行,发现三盏灯全亮。

    找出移植点

     我们基于smdk2410的bsp进行移植,那么只要找出s3c2410和s3c2440的不同点以及主板的不同点,然后针对这些不同点进行代码修改,即可完成移植。

     S3C2410 vs S3C2440:

     1、时钟不同

     2、Nandflash控制器不同

     3、中断控制器不同

     4、主板GPIO链接不同

     5、网卡芯片不同。

    找出这些不同点,我们一步一步修改代码,直到U-boot正常运行即可。

    80岁也要写程序
  • 相关阅读:
    数据库系统学习(九)-嵌入式SQL语言之基本技巧
    操作系统学习(九)-- 操作系统之文件系统(目录)
    操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)
    从windows server 2003中学到的事儿
    一名游戏开发者的告白
    所谓“学术境界”
    java解惑
    程序员的职业素养
    行业大会_平台
    寻找优秀的程序员
  • 原文地址:https://www.cnblogs.com/smartcoder/p/3105536.html
Copyright © 2011-2022 走看看