首页
登录 | 注册

U-Boot 的移植入门(3)——支持串口xmodem协议

第四步、支持串口xmodem协议

U-Boot默认支持的loadb命令需要配合Linux下的kermit工具来使用,loady命令通过串口ymodem协议来传输文件。Windows下的超级终端虽然支持ymodem,但是它的使用界面实在不友好。而SecureCRT只支持xmodemzmodem。而上位机和开发板之间的文件传输又实在是一件非常重要的事,所以现在修改代码以增加对xmodem的支持,即增加一个命令loadx(在配置文件中,会自动包含一个默认的命令配置文件include/config_cmd_default.h,同时U-Boot已经实现的命令的列表在include/config_cmd_all.h中。)依照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'"

);

其次,在do_load_serial_bin函数中增加对loadx命令的处理分支。也依照loady来实现:

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);

 

    }
addr
行调用了load_serial_xmodem函数,它也是依照load_serial_ymodem实现的一个函数:

#if defined(CONFIG_CMD_LOADB)

static ulong load_serial_ymodem (ulong offset);

static ulong load_serial_xmodem (ulong offset);

#endif

……

static ulong load_serial_ymodem (ulong offset)

{

……

    char ymodemBuf[1024];

……

    info.mode = xyzModem_xmodem;

……

}

首先在文件开头增加loadx_serial_xmodem函数的声明,然后复制load_serial_ymodem函数为load_serial_xmodem,稍作修改。

1)、将局部数组ymodemBuf改名为xmodemBuf,并在后面使用到的地方统一修改,这只是为了与函数名称一致,可改可不改。

2)、info.mode的值从xyzModem_ymodem改为xyzModem_xmodem

重新编译,就可以使用loadx命令下载文件了。


相关文章

  • --prefix= 指向安装目录 --sbin-path 指向(执行)程序文件(nginx) --conf-path= 指向配置文件(nginx.conf) --error-log-path= 指向错误日志目录 --pid-path= 指向 ...
  • 行业首推!计讯物联为5G物联网打造专用5G工业级路由器——TR342
    5G时代,万物互联,未来将改变我们的生活,主流的通信技术,它将极大提升物联网的应用,计讯物联为5G量身打造一款可以边缘计算的高端5G工业级路由器--TR342于4月19日隆重发布! TR342支持5G多模.并同时支持5G NR mmWave ...
  • 【实战】Docker 入门实战一:安装Dockeer
    Docker是什么Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实 ...
  • Centos 7安装和配置ElasticSearch入门小白 实验环境: 操作系统:Centos 7.5 服务器ip:192.168.1.198 运行用户:root 网络环境:Internet 在企业生产环境有很多服务器的时候.很多业务模块 ...
  • 简单的入门Android开发和Java语言基础[图]
    简单的入门Android开发和Java语言基础[图] 前言: 去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居.于是就将最简单的通信发布出来:智能家居简单实现-使用ESP8266简单实现和APP通讯 由于这方 ...
  • 软件入门的知识之程序设计语言Java和C#的简单介绍和对比[图]
    软件入门的知识之程序设计语言Java和C#的简单介绍和对比[图]: 前言: 要做软件就必然会涉及到程序设计语言,它是什么?有哪些特点?又有哪几部分组成的呢?在这里我们为大家做了一个总结,希望可以通过这些内容让大家对于程序设计语言有一个大概的 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号