ARM笔记:移植串口xmodem协议

发布者:幸福微风最新更新时间:2017-11-17 来源: eefocus关键字:ARM  移植串口  xmodem协议 手机看文章 扫描二维码
随时随地手机看文章

串口xmodem的移植比较简单,参考ymodem协议就行。

实验环境:Linux ubuntu 9.10(来自韦东山老师光盘自带虚拟机)

开发板:
Jz2440(ARM9   S3C2440 
        NAND   K9F2G08

        SDRAM  K4S561632 * 2)

U-Boot: u-boot-1.1.6

烧写工具: OpenJtag

串口软件:SecureCRT

一、增加loadx命令

    在cmd_load.c (路径:u-boot-1.1.6/common/cmd_load.c)中增加一条U_BOOT_CMD命令以支持xmodem。

找到loady命令的U_BOOT_CMD结构体,紧跟其后增加loadx的U_BOOT_CMD。

U_BOOT_CMD(

       loady, 3, 0, do_load_serial_bin,
       "loady- load binary file over serial line (ymodem mode)\n",
       "[ off ] [ baud ]\n"" - load binary file over serial line"" with offset 'off' and baudrate 'baud'\n"

);

U_BOOT_CMD(
          loadx, 3, 0,do_load_serial_bin,
         "loadx- load binary file over serial line (xmodem mode)\n",
         "[ off ] [ baud ]\n""- load binary file over serial line"" with offset 'off' and baudrate 'baud'\n"

);

红色为新增部分。



二、增加loadx命令处理分支

   在文件cmd_load.c(路径:u-boot-1.1.6/common/cmd_load.c)中找到函数do_load_serial_bin(),新增加loadx的分支,修改后如下:

if (strcmp(argv[0],"loadx")==0) {
   printf ("## Ready for binary (xmodem) download ""to 0xlX at %d bps...\n", offset,load_baudrate);
   addr = load_serial_xmodem (offset);

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

   printf ("## Ready for binary (ymodem) download""to 0xlX at %d bps...\n",offset, load_baudrate);
   addr = load_serial_ymodem (offset);

} else ……

红色部分为新加入loadx处理分支。


三、新增load_serial_xmodem()函数

   在文件cmd_load.c(路径:u-boot-1.1.6/common/cmd_load.c)中仿照load_serial_ymodem()实现load_serial_xmodem()函数,没有什么技巧,主要修改以下两点:

1.局部数组ymodemBuf改为xmodemBuf;

2.info.mode的值由xyzModem_ymodem改为xyzModem_xmodem。代码太多,完成后的函数见附件cmd_load.c。

   特别注意,需要在文件cmd_load.c(路径:u-boot-1.1.6/common/cmd_load.c)的开头增加函数load_serial_xmodem()的声明。

#if (CONFIG_COMMANDS & CFG_CMD_LOADB)

static ulong load_serial_ymodem (ulong offset);

static ulong load_serial_xmodem (ulong offset);

#endif

  红色为新增。

   xmodem协议移植完毕后,重新编译u-boot,然后烧写到开发板。


关键字:ARM  移植串口  xmodem协议 引用地址:ARM笔记:移植串口xmodem协议

上一篇:ARM笔记:kermit的使用
下一篇:ARM笔记:U-Boot之移植 nand-flash 驱动

推荐阅读最新更新时间:2024-03-16 15:45

ARM体系结构--第九章--异常中断处理
注:本文资料全部来源于网络或书籍,同时加上个人理解。若有侵权,告知即删。若有错误,留言商讨。 1、中断向量表 中断向量表中指定了异常中断及其处理程序的对应关系,通常存储在存储地址的低端。ARM异常中断向量表的大小为32个字节,每个异常占用4个字节的空间。通常在这个4个字节的地址空间存放一个跳转指令,跳转到相应的异常服务程序。 2、ARM体系的异常中断 异常中断的响应过程: 保存当前处理器状态、即将cpsr保存到相应的异常模式下spsr_xxx中 设置当前cpsr的相应位,包括:mode修改、T、禁止IRQ中断(I)、FQR模式下,禁止FIQ(F位) 将寄存器r14_xxx设置为返回地址,保存pc的值 将PC设置为
[单片机]
<font color='red'>ARM</font>体系结构--第九章--异常中断处理
全新Arm IP拉升智能沉浸式体验主流市场
“我们的设计理念是为主流的设备带来最极致的体验。我们在设计这些IP时研究了不同市场的用户体验,我们的想法是如何使硬件、软件相结合,并且发挥生态系统的力量来提升使用体验。我们的IP组合一直沿袭我们所倡导的大小核理念,既有比较高端的配置,如Mali-G57和Ethos-N57,也有入门级低端的产品,如Mali-D37。”在近日举办的arm Tech Symposia 2019上,Arm市场营销副总裁Ian Smythe向EEWorld记者介绍道。 全新命名问世 延展主流市场 Arm ML事业群商业与营销副总裁Dennis Laudick传达了两点信息:“第一,我们今天正式向外界介绍Ethos这个全新的ArmML的处理器
[嵌入式]
全新<font color='red'>Arm</font> IP拉升智能沉浸式体验主流市场
Arm造芯速度有多快:每秒钟产出842个
作为上一季度报告的一部分,Arm公司透露,他们的处理器设计的受欢迎程度继续成倍增长。制造业合作伙伴已经记录了基于Arm设计的67亿颗芯片的出货量,这大约相当于每秒钟生产842颗芯片,这是一个前所未有的速度。 Arm也毫无疑问是世界上最高效的处理器设计者:比如的Mali GPU系列发展至今只包含9个型号,但自2015年以来一直是出货量第一的GPU。如果Arm只卖他们最受欢迎的产品--Cortex-M CPU系列,那么他们仍然是世界上最大的处理器设计者,因为仅上个季度,基于Cortex-M架构设计的出货量就有44亿颗。 Cortex-M设计的流行并不神秘,Arm的广泛成功也不神秘。在物联网领域,最实惠、最高效的选择就是Cor
[嵌入式]
<font color='red'>Arm</font>造芯速度有多快:每秒钟产出842个
2019 Arm人工智能开发者全球峰会圆满举办
2019 第二届Arm人工智能开发者全球峰会今天在上海圆满举办。今年的峰会以“共塑AI精彩未来” (Together, making AI different) 为主题,由上海市徐汇区政府指导,Arm中国及Arm人工智能生态联盟 (AIEC) 联合主办,并得到了多家全球及中国人工智能产业领导企业的大力支持。今年的峰会共吸引了超过一千名国内人工智能软硬件开发者的踊跃报名,再次刷新了第一届峰会创下的Arm中国历年活动报名人数之最的记录。 在今天上午举行的峰会主论坛上,来自Arm中国、Google、百度、微软-仪电人工智能创新院的技术专家和与会开发者分享了各自团队在AI开发领域的最新成就,为开发者展示了Arm人工智能生态系统的多样性
[物联网]
ARM嵌入式平台的VGA接口设计
大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口。三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用。笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器。 1 VGA接口介绍 近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface)。由于数字接口的标
[嵌入式]
ARM伪指令地址读取:ADR ADRL LDR
1、ADR伪指令--- 小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 ADR伪指令格式 :ADR{cond} register, exp 地址表达式expr的取值范围: 当地址值是字节对齐时,其取指范围为: +255 ~ 255B; 当地址值是字对齐时,其取指范围为: -1020 ~ 1020B; 2、ADRL伪指令----中等范围的地址读取 ADRL伪指令将基于PC
[单片机]
一种基于ARM的集中器的硬件实现
1.下载所需文件 以下是我在Cygwin环境下制作arm-gcc(uclibc)交叉编译器中所需要的文件: binutils-2.14.90.0.8 uClibc-0.9.27 gcc-3.4.2 linux-libc-headers-2.4.29 PS:一般来说这里还需要下一些patch,因为我对编译器的理解还不够,加上这个事情是工作内容,还有些其他的特殊需求,为了省麻烦,我用了一个很龌龊的方法。我将在linux环境下被buildroot打过补丁的源代码复制出来。 注:通常制作交叉编译器的时候,源代码的版本是非常重要的。 2.准备工作 ${PREFIX}为安装目录; ${TARGET}为目
[单片机]
arm表示人工智能在推动汽车技术进步方面起到至关重要的作用
随着arm准备更新其汽车产品,EENews与arm负责汽车市场推广的副总裁Dennis Laudick进行了一次访谈。在访谈中,Laudick深入探讨了arm在汽车领域的战略重点,以及人工智能在推动汽车技术进步方面的重要作用。 Laudick首先指出,arm在汽车领域的最大推动力是围绕自动驾驶和ADAS(高级驾驶辅助系统)展开的,而人工智能是其中的关键部分。他强调,人工智能不仅令人兴奋,还有巨大的潜力拯救生命。他认为,汽车行业已经到了必须强制使用人工智能的阶段,因为它是由安全驱动的。借助人工智能,汽车行业可以将零死亡作为一个现实的目标,并且所需的计算量也是低功耗的。 Laudick还谈到了汽车技术的演变过程,从机械汽车到电
[汽车电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved