原创 u-boot-2010.03在tq6410上的移植详解(八)

2010-9-26 17:58 1868 9 9 分类: MCU/ 嵌入式

原创文章版权所有!如需转载,请注明出处: http://hi.baidu.com/liushuiyue1/myhome谢谢合作!!!!!


重新编译uboot并下载到Nand Flash中,使用nand指令烧写yaffs2文件到nand中如下图所示,至此uboot已支持yaffs的烧写。



八.支持串口xmodem协议


U-Boot默认支持的loadb命令需要配合Linux下的kermit工具来使用,loady命令通过串口ymodem协议来传输文件。Windows下的超级终端虽然支持ymodem,但是它的使用界面实在不友好。而SecureCRT只支持xmodem和zmodem。而上位机和开发板之间的文件传输又实在是一件非常重要的事,所以现在修改代码以增加对xmodem的支持,即增加一个命令loadx。


1)依照loady的实现来编写代码,首先使用U_BOOT_CMD宏来增加loadx命令(在文件common/cmd_load.c文件中):




U_BOOT_CMD(


      loadx, 3, 0,    do_load_serial_bin,


      "load binary file over serial line (xmodem mode)",


      "[ off ] [ baud ]\n"


      "    - load binary file over serial line"


      " with offset 'off' and baudrate 'baud'"


);


2)依照loady在do_load_serial_bin函数中增加对loadx命令的处理分支。




else if(strcmp(argv[0],"loadx")==0) {


             printf ("## Ready for binary (xmodem) download "


                    "to 0x%08lX at %d bps...\n",


                    offset,


                    load_baudrate);


             addr = load_serial_xmodem (offset);


      }


3)由于addr行调用了load_serial_xmodem函数,依照load_serial_ymodem实现的一个函数。首先在文件开头增加loadx_serial_xmodem函数的声明,然后复制load_serial_ymodem函数为load_serial_xmodem,稍作修改:(1)、将局部数组ymodemBuf改名为xmodemBuf,并在后面使用到的地方统一修改,这只是为了与函数名称一致,可改可不改。(2)、info.mode的值从xyzModem_ymodem改为xyzModem_xmodem。




#if defined(CONFIG_CMD_LOADB)


static ulong load_serial_ymodem (ulong offset);


static ulong load_serial_xmodem (ulong offset);


#endif


重新编译,执行loadx,然后在secureCRT的Transfer菜单下点Send Xmodem(xxx已经放在了Upload目录里),完成对串口xmodem协议的支持。




文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条