none
在i.MX21板子上移植WinCE的几个问题 RRS feed

  • 问题

  •       以前只是接触过CE应用程序的开发,现在需要在板子上做OS的定制和移植. 虽然看了一些资料还是挺迷茫, 向各位在论坛上的老手讨教点经验,请大家给点意见,谢谢!

     

          我的硬件资源如下: 

          CPU: MC9328MX21 CVK

          存储设备: 2片32MB的SDRAM, 一片16MB的Intel Strata flash

          接口:  USB, 一个串口(调试用), 一个SD卡接口, JTAG, 以太网口( DM9000)

     

        我已经从Freescale下了个标准板的BSP, 现问题如下:

        1. 我理解的移植部分工作需要完成 eboot的修改+ 网卡驱动的编写. 因为标准板上用的是CS8900的网卡芯片, 而我的板子上用的是DM9000. 那么具体修改eboot里的哪些部分呢?  原来的汇编代码里CPU时钟设置之类的是否需要改动?

     

        2. Freescale以及市面上的各种开发板都用一些烧写工具通过网络或者串口烧eboot, 具体到我的板子上,是否可用这些工具还是需要我写个烧写工具?

    2008年7月13日 3:44

答案

  • 详细的内容可以参考MSDN:

    CE5.0: ms-help://MS.WindowsCE.500/wcehardware5/html/wce50oriDevelopingBoardSupportPackage.htm

    CE6.0: ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.WindowsCE.v60.en/CE_BringingUpDevice/html/bf05de44-abe9-40ce-837e-cdc2e9b7b833.htm

     

    以5.0为例

    . 你的硬件与开发板的差异决定了工作量的大小。MSDN建议的步骤是EBOOT-->OAL-->Driver。

    a. CSP(Public\Common\OAK\CSP\ARM\xxxx和Platform\Common\SRC\ARM\xxxx)下的代码大多SOC相关的代码,与板子无关的,如果板子差异不大,应该是不需要修改的。

    b. Eboot.

    Startup.s, 硬件初始化。需要检查一下是否需要修改。

    修改网卡相关程序。主要是以下几个函数

  • OEMReadData
  • OEMEthGetFrame
  • OEMEthSendFrame
  • OEMEthGetSecs
  • c. OAL. 基本不用修改的,不过最好每个模块都检查一下。

    d. Driver. 这个要逐个模块检查下是否需要修改了。

     

    一个建议,多看看Freescale提供的BSP的代码。

    说的不对的地方,请各位指正。

     

    2008年7月14日 3:25
  • 呵呵,几年前我也在i.MX21上做过移植。

     

    如果已经有了标准BSP,那么移植的工作量可以减少90%……剩下的工作其实就是对照标准板子跟你的板子的不同之处,把不一样的硬件相关代码改掉。

     

    CS8900改DM9000驱动是经常遇到的问题。如果板子是你们自己做的,你们跟davicom熟的话,可以跟他们要到dm9000 eboot的驱动。稍作修改即可,如果要不到这个驱动,那就只能自己慢慢写了。主要就是收包,发包,初始化三个函数。可以参考linux下的dm9000驱动,慢慢调试。dm9000的几个文档是必备的。

     

    startup.s其实基本上不怎么用改,因为里面大多数都是针对CPU而不是针对外设的代码,但也不一定,如果有初始化外设的代码,而你的外设不一样,则也有可能挂掉(当年我就曾经记得我的板子上的flash跟标准版不一样,所以在汇编里挂了)。

     

    先把eboot调好,到可以成功download OS为止,如果启动不成功,再慢慢看哪里有错。

    2008年7月18日 5:48
    版主

全部回复

  • 详细的内容可以参考MSDN:

    CE5.0: ms-help://MS.WindowsCE.500/wcehardware5/html/wce50oriDevelopingBoardSupportPackage.htm

    CE6.0: ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MS.WindowsCE.v60.en/CE_BringingUpDevice/html/bf05de44-abe9-40ce-837e-cdc2e9b7b833.htm

     

    以5.0为例

    . 你的硬件与开发板的差异决定了工作量的大小。MSDN建议的步骤是EBOOT-->OAL-->Driver。

    a. CSP(Public\Common\OAK\CSP\ARM\xxxx和Platform\Common\SRC\ARM\xxxx)下的代码大多SOC相关的代码,与板子无关的,如果板子差异不大,应该是不需要修改的。

    b. Eboot.

    Startup.s, 硬件初始化。需要检查一下是否需要修改。

    修改网卡相关程序。主要是以下几个函数

  • OEMReadData
  • OEMEthGetFrame
  • OEMEthSendFrame
  • OEMEthGetSecs
  • c. OAL. 基本不用修改的,不过最好每个模块都检查一下。

    d. Driver. 这个要逐个模块检查下是否需要修改了。

     

    一个建议,多看看Freescale提供的BSP的代码。

    说的不对的地方,请各位指正。

     

    2008年7月14日 3:25
  •  

    谢谢楼上兄弟的回复.

    我又看了几天资料, 准备先改eboot.

    看来主要需要改的应该是startup.s和main.c两个文件了.

    2008年7月15日 6:04
  • 呵呵,几年前我也在i.MX21上做过移植。

     

    如果已经有了标准BSP,那么移植的工作量可以减少90%……剩下的工作其实就是对照标准板子跟你的板子的不同之处,把不一样的硬件相关代码改掉。

     

    CS8900改DM9000驱动是经常遇到的问题。如果板子是你们自己做的,你们跟davicom熟的话,可以跟他们要到dm9000 eboot的驱动。稍作修改即可,如果要不到这个驱动,那就只能自己慢慢写了。主要就是收包,发包,初始化三个函数。可以参考linux下的dm9000驱动,慢慢调试。dm9000的几个文档是必备的。

     

    startup.s其实基本上不怎么用改,因为里面大多数都是针对CPU而不是针对外设的代码,但也不一定,如果有初始化外设的代码,而你的外设不一样,则也有可能挂掉(当年我就曾经记得我的板子上的flash跟标准版不一样,所以在汇编里挂了)。

     

    先把eboot调好,到可以成功download OS为止,如果启动不成功,再慢慢看哪里有错。

    2008年7月18日 5:48
    版主
  •  

    我从Freescale下了个文件(FSL-WCE500-9-MX21ADS-DEMO),这个就是iMX21的标准板BSP了吧?

    何版主那还有没有dm9000 eboot的驱动备份啊?有的话麻烦给我发一个,先谢了。

     

    新手请教几个问题:

     

    1. 关于dm9000的驱动,是不是分成两种(eboot里的和OAL里的)?我看了原来BSP里与网卡初始化相关的部分,感觉有挺多地方需要改。我所想到的如下:

    (1)main.c里

    (2)ether.c里的InitEthDevice( )

    (3)%platform\src\inc\bsp_base_reg_cfg.h

     

    2. 我现在用的板子用的是一片16MB的Intel Strata flash,Freescale标准板用的是两片16MB的Burst Flash。这种情况下需要怎么改startup.s?我在startup.s里没有瞅见有关flash大小定义的函数啊。是不是改虚实映射相关的文件就可以了呢?

     

    3. main.c ---OEMDebugInit()调用了串口初始化函数,好像应该根据串口的地址作修改。可是串口的地址一直找不到。还望高手们不吝指教。

    2008年7月18日 11:03
  • 我自己做了一块板子,为什么用网口一下载NK.BIN,整个板子就重启,我的板子是照着复旭科技公司的图纸画的。eboot.nbo,nk.bin都是公司提供的,应该没有问题,因为在他们的开发板上下载都是对的。急需帮助,请高手帮忙。

     

    2008年11月21日 3:12