搜索
bottom↓
回复: 29

开源,一个用于调试LPC1788时快速下载Hex的bootloader

  [复制链接]

出0入0汤圆

发表于 2014-3-5 21:04:01 | 显示全部楼层 |阅读模式
本帖最后由 lihui_mc 于 2014-3-5 21:09 编辑

        最近做UCGUI,程序代码写到180K,每次用JLINK下载到电路板,最少20秒,看效果,不满意,改动一点,再下载,又是20秒,真心服了JLINK的龟速。于是自己编了一个快速下载的BOOTLOAD和上位机。
用串口6Mbps下载(烂大街的USB转串口PL2303HX其实是支持6Mbps的,10cm短线),每次下载2秒钟左右,调试起来爽多了。以下贡献源代码和BOOTLOADER。还有上位机软件。       

下载速度:180k的程序,
                                        6Mbps+全校验 1.72秒
                                        3mbps+全校验 2.3秒
                                        6mbps+快速校验 1.34秒
                                        6mbs+不校验 1.18秒

使用方法:用USB转串口线,和LPC1788的串口0连好,按以下设置好工程,在keil中点击DOWNLOAD(此处与JLINK不一样),弹出控制台应用程序,再按电路板的复位按钮,马上开始下载,大约2秒钟下载完毕,自动运行看电路板效果。
如果需要调试,直接按调试按钮,此时不必下载hex直接进入调试,调试过程照旧。
调试图片(可以看到复位向量在0x4000处):

另一个思路,上位机使用-r参数,可以不用复位按钮,上位机启动的时候,会向下位机发一个字节,下位机可以接收这个数据,然后软复位执行Bootloader更新,详情查看下面命令行参数-r;


目标工程的设置:
        (1),在工程选项-Utilities-Use External Tool For Flash Programming选上,意思是使用自定义的编程工具来烧写flash.
        (2),Command里面填写 lpc_bl.exe,Run Independent打钩,并把上位机软件拷贝到与hex文件相同的目录。
        (3),Arguments这里填上 -p 4 -h 123.hex -ua 0x00004000 -vv -s 6000000 -r,
                                这里,-p 4,表示使用串口4通信,也就是USB转232的串口号,
                                -h 123.hex 表示目标文件是hex文件,文件名123.hex,
                                -ua 0x00004000,表示目标文件的用户入口地址是0x00004000,因为0到16k范围地址位置是本bootloader占用了,所以用户代码放到16k开始的位置。
                                -vv 表示快速校验,每4K空间产生一个CRC16校验码进行校验。也可以用-v,这个是全校验,确保写入正确。
                                -s 6000000 表示串口下载速度是6Mbps。可根据实际需要选择,下位机BOOTLOADER有3Mbps和6Mbps两个版本。
                                -r 表示软件启动的时候,向串口发送一个字节0x11,目标程序可以接收这个字节,并软复位,自动更新,而不用按复位键。注意1788的串口0要达到6Mbps,则PCLK至少有96MHz。
        (4),设置分散加载文件,在工程选项-Linker,将Use Memory Layout form Target Dialog去掉,在Scatter File指定一个.sct文件,主要是设置将程序编译到16k的位置,也可以使用下面例子
                                ; *************************************************************
                                ; *** Scatter-Loading Description File generated by uVision ***
                                ; *************************************************************
                               
                                LR_IROM1 0x00004000 0x0007c000  {    ; load region size_region
                                  ER_IROM1 0x00004000 0x0007c000  {  ; load address = execution address
                                   *.o (RESET, +First)
                                   *(InRoot$$Sections)
                                   .ANY (+RO)
                                  }
                                  RW_IRAM1 0x10000000 0x00010000  {  ; RW data
                                   .ANY (+RW +ZI)
                                  }
                                  RW_IRAM2 0x20000000 0x00008000  {
                                   .ANY (+RW +ZI)
                                  }
                                }
        (5),设置创建hex文件,在工程选项-Output,勾上Create Hex File。
        (6),注意的是,虽然在跳转到用户应用程序之前,BootLoader内部已经将新的向量指向用户应用程序。但如果用户应用程序调用了官方默认
                        的system_LPC177x_8x.c的SystemInit函数,则向量指针会在该函数内部修改为0。这里需要将该函数做修改:
                        #endif
                        #ifdef  __RAM_MODE__
                          SCB->VTOR  = 0x10000000 & 0x3FFFFF80;
                        #else
                          SCB->VTOR  = 0x00004000 & 0x3FFFFF80;
                          //SCB->VTOR  = 0x00000000 & 0x3FFFFF80;
                        #endif
此处修改,当产品发布,不使用这个BOOTLOADER的时候,记得恢复原样。

       
附件下载:
        上位机软件:
        下位机bootloader源码:
        一个LED闪烁的范例(工程已设置好,支持串口复位自动下载,第一次下载时按复位键,以后可以不用按复位键):
       
        目前尚有缺陷,下载速度没达到最理想的效果,在试验双缓冲一边IAP写扇区的时候,一边串口DMA接数据,发现有冲突,有些数据收不到,目前查不到原因。这个如果做到的话,烧写速度能再提高1倍,有可能是LPC内部的IAP部分占用了串口资源或者改动了系统频率等原因。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入4汤圆

发表于 2014-3-5 22:26:46 | 显示全部楼层
这个好,有时间研究一下。

出0入4汤圆

发表于 2014-3-5 22:37:25 | 显示全部楼层
有价值,Mark

出0入0汤圆

发表于 2014-3-5 22:46:50 | 显示全部楼层
收了,非常感谢!
顺带问一下楼上,你跑的是多大分辨率的屏,效果如何啊?最近有个项目要用7寸的做界面,不知道1788+UCGUI用起来怎样?

出0入0汤圆

发表于 2014-3-5 23:21:27 | 显示全部楼层
好帖流明

出0入0汤圆

发表于 2014-3-6 01:17:57 | 显示全部楼层
奇怪,下载不了呀

出0入0汤圆

发表于 2014-3-6 04:19:55 来自手机 | 显示全部楼层
谢谢分享

出0入4汤圆

发表于 2014-3-6 06:57:18 来自手机 | 显示全部楼层
好东西呀,要谢下。

出0入0汤圆

 楼主| 发表于 2014-3-6 08:43:18 | 显示全部楼层
lghtjpu 发表于 2014-3-5 22:46
收了,非常感谢!
顺带问一下楼上,你跑的是多大分辨率的屏,效果如何啊?最近有个项目要用7寸的做界面,不 ...

用了800*480的7寸屏,效果满意,只是LPC1788布线很不方便,SDRAM和LCD的线分布很没规律的。

出0入0汤圆

发表于 2014-3-8 11:27:21 | 显示全部楼层
标注,有空看看。

出0入0汤圆

发表于 2014-3-8 13:16:23 | 显示全部楼层
赞一个
跳转之前最好关中断,清中断

出0入0汤圆

发表于 2014-3-20 15:23:11 | 显示全部楼层
先看看,准备学习。谢谢

出0入0汤圆

发表于 2014-3-20 17:59:56 | 显示全部楼层
lghtjpu 发表于 2014-3-5 22:46
收了,非常感谢!
顺带问一下楼上,你跑的是多大分辨率的屏,效果如何啊?最近有个项目要用7寸的做界面,不 ...

2年前测过,60HZ是能跑得到的;

出0入0汤圆

发表于 2014-3-20 18:09:44 | 显示全部楼层
牛人~~~~

出0入0汤圆

发表于 2014-3-20 21:10:36 | 显示全部楼层
很好,有空试试

出0入0汤圆

发表于 2014-3-26 14:16:32 | 显示全部楼层
下载来试试学习,多谢!

出0入8汤圆

发表于 2014-6-28 23:16:29 | 显示全部楼层
不错,顶,感觉1788就是调试下载比较麻烦,每次都要很长时间,这下好了,

不过楼主上位机软件是不是只支持串口0,如果机器没有串口的就麻烦了

出0入0汤圆

 楼主| 发表于 2014-6-30 09:26:31 | 显示全部楼层
huxiaoping 发表于 2014-6-28 23:16
不错,顶,感觉1788就是调试下载比较麻烦,每次都要很长时间,这下好了,

不过楼主上位机软件是不是只支持 ...

上位机的软件是通过命令行参数指定串口号的,根据需要修改就可以了。
详细见楼主位说明

出0入0汤圆

发表于 2015-3-10 09:12:16 | 显示全部楼层
感谢楼主分享。

出0入0汤圆

发表于 2015-5-6 14:32:02 | 显示全部楼层
楼主很有想法

出0入0汤圆

发表于 2015-5-15 12:49:52 | 显示全部楼层
学习了,      

出0入0汤圆

发表于 2015-5-21 21:44:48 | 显示全部楼层
先看看,准备学习。谢谢

出0入0汤圆

发表于 2015-6-28 16:35:24 | 显示全部楼层
谢谢,收藏备用。

出0入0汤圆

发表于 2015-6-28 16:49:33 | 显示全部楼层
标记,多谢分享

出0入0汤圆

发表于 2015-7-2 22:04:28 | 显示全部楼层
谢谢分享,先收下了

出60入0汤圆

发表于 2015-7-6 11:28:42 | 显示全部楼层
有空试试,感谢楼主!

出0入10汤圆

发表于 2015-8-27 00:17:01 | 显示全部楼层
好快的速度,标记下!有空来看看

出0入0汤圆

发表于 2016-5-29 22:29:48 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2016-6-1 12:34:22 来自手机 | 显示全部楼层
楼主,我用了下你的例子串口没有响应,一直停留在等待状态?

出0入0汤圆

发表于 2018-5-6 23:20:27 | 显示全部楼层
您好,感谢你的分享,能否把你上位机源码发我,可以的话请发我邮箱573878341@qq.com 万分感谢!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 11:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表