一 原版vivi的移植 到2410

来源:互联网 发布:网络打印机状态错误 编辑:程序博客网 时间:2024/05/03 21:17

1 先修改vivi的makefile

       LINUX_INCLUDE_DIR -- 更改为交叉编译器的include文件夹

LINUX_INCLUDE_DIR = /usr/local/arm/2.95.3/include
CROSS_COMPILE     -- 交叉编译器的可执行文件的路径
CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-
ARM_GCC_LIBS      -- 交叉编译器的lib库文件的路径
ARM_GCC_LIBS = /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3
2 修改arch/s3c2410/smdk.c  配置mtd分区
  目前暂时用开发板上的分区方法,目的是为了在 移植vivi的过程中能烧录开发板带的linux2.4内核. 今后如果要移植2.6内核就要更改这个分区表.
  

#ifdef CONFIG_S3C2410_NAND_BOOT
mtd_partition_t default_mtd_partitions[] = {
        {
                name:           "vivi",         /* 128K, 1-8 sector             */
                offset:         0,
                size:           0x00020000,
                flag:           0
        }, {
                name:           "param",        /* 64K, 9-12 sector             */
                offset:         0x00020000,
                size:           0x00010000,
                flag:           0
        }, {
                name:           "kernel",       /* 1M,       */
                offset:         0x00030000,
                size:           0x00100000,
                flag:           0
        }, {
                name:           "root",         /* 到64M,          */
                offset:         0x00130000,
                size:           0x03d00000,
                flag:           MF_BONFS
        }
};

3  编译 烧录

 问题:  1 all led on 这部分,  我的开发板用到的是portB的 7,8,9,10, 所以需要更改程序.重新设置 protb的7,8,9,10为输出口.(之前是 protF)

 @ All LED on
 mov r1, #GPIO_CTL_BASE
 add r1, r1, #oGPIO_B
 ldr r2, #0x00154000
 str r2, [r1, #oGPIO_CON]
 mov r2, #0xff
 str r2, [r1, #oGPIO_UP]
 mov r2, #0x0000
 str r2, [r1, #oGPIO_DAT]

   用超级终端有指令出现, 并且可以用bon分区.
   改好了发现重新开机后, 全亮,然后马上改成只有其中两个常量.  并不是我的初衷.

   检查了好半天,改来改去, 后来想想有没有可能是main()代码里面的调试代码.  所以关掉了head.S后面跳转到main()的两条语句, 然后重新编译, jtap上去,  reset, OK, led全亮.   说明 head.S这部分是没有问题的.

   然后查main()部分的8个步骤, 发现是 board_init()这个地方有问题,  再仔细查到set_gpios(void)( arch/s3c2410/smdk.c),  要修改 portb口的设置, 2个参数.(include/platform/smdk2410.h) 修改完了以后 jtag上去, 发现led不会乱来了.

 

然后: 测试一下vivi shell的指令是否正常.

发现一个问题: jtag烧完了以后,进入vivishell模式, bon分区, 然后load flash vivi x, 但是reset开发板以后不会引导vivi 必须重新jtag vivi.  有待解决中

    试验现象: 用jtag烧录开发板自带的vivi,然后bon分区 ,load flash vivi u, ,reset开发板, 正常!

                  用jtag烧录开发板自带的vivi ,bon分区, load flash vivi x  ,reset 开发板, 失败, 跟上面问题一样.

解决:  用超级终端来烧录, 选择xmodem.  正常.

开发板带的 dnw.exe好像没有看到设置xmodem的选项.

 所以目前仅仅移植原版vivi到我的开发板任务完成.  测试了2个指令, 分别是bon和load都是正常的.

原创粉丝点击