1、写在前面
- 因为项目开发的缘故,所以使用到了赛普拉斯的CY8C4014LQI-421芯片,但是官方Psoc Creator编译出来的hex文件,使用第三方J-link是无法烧写。
2、PSoc Creator导出KEIL工程
- 官方文档讲得很清楚了,可以参考PSoc Creator里面的Help文档,查看里面的第三方IDE章节。
- 首先在PSoc Creator的工具栏中选择Rroject中的Export to IDE,选择导出为Keil。
- 如果碰到需要安装驱动的话,选择Install。
- 并安装进自己电脑上装keil的目录。
- ps:前提是你电脑上有装keil。
- 之后选择编译链为ARM MDK。
- 将用到的文件都选上,下一步后,选择Exprot.
- 待配置完成后,选择finish。
3、运行keil工程
- 上一步finish之后,有勾选Open in uVision的话,就会自动打开生成的文件,点击编译,看有没有问题。
- ps:如果碰到keil和 ads起冲突的话,可以参考以下两个帖子。 https://blog.youkuaiyun.com/mao0514/article/details/70312202
http://www.bubuko.com/infodetail-1313242.html - 正常零错误就代表编译完成了,生成了我们需要用到的axf文件。但接下来要使用keil和J-link烧写我们的设备,首先选择在工具栏上选择option,找到里面的Debug,选择使用J-Link作为我们的烧写器。最后选择setting.
- 按上一步的setting之后,会弹出以下界面,选择Debug中,确实使用的是SW烧写方式,速率这个按实际情况选择,我之前选太高还连不上了。
- 之后选择Flash Download。
- 选择flash类型,中间那个芯片信号不对的话,按ADD进行选择,如果你的keil中没有这个芯片型号的话,那请往下看。
- 找到官方烧写软件Programmer的目录,该目录下有个3rd_Party_Configuration_Files文件夹,里面就有我们需要的文件,找到对应的芯片系列型号CY8C40xx,在Prog_Algorithm文件夹下,可以看到一个CY8C40xx.FLM的文件,拷贝起来。
- ps:参考下我电脑上这个文件的路径吧,一目了然的感觉对吧。
D:\Program Files (x86)\Cypress\Programmer\3rd_Party_Configuration_Files\CY8C40xx\Prog_Algorithm
- 拷贝之后的文件放在keil的安装目录下的\ARM\Flash。
参考我电脑的路径:D:\Keil_v5\ARM\Flash 拷贝进去之后,就能在Add flash选项中找到对应的flash。
4、烧写
- 配置完成后,点击Load,正常情况下,就可以直接下载,但是万一出现右下角的SW device Found,那就有问题了,但问题也不大,逐步排查。
- 出现上述问题,主要是没办法使用j-link和芯片连接,在排除不是手残把线弄断的情况下,接着往下看。
- 因为CY8C4014LQI-421这款芯片没有Reset引脚,而且他的SWDIO SWCLK这两个引脚是有复用功能的,也就是当这两个引脚上电后被用了,在没有Reset的情况下,没办法使用SW模式和芯片建立通信,唯一能解决的方法,就是不要用到这个引脚的其他功能,再或者就是使用官方99刀的烧写器,选择power cycel模式下载。
- ps:我先前使用了烧写口的复用功能(使用了串口,因为之前开发板上的串口是接P3.0),导致芯片烧写口被使用了,所以这里需要在原来的工程中,将这Debug Select设置回原来的SWD模式,然后使用官方烧写器烧录芯片,关闭烧写口的复用功能。
- 烧写完成后,再用keil的Load功能,就可以正常的烧写了。
5、使用J-Flash烧写
- 能使用keil烧写的话,至少可以省去99刀昂贵的烧写器费用,但是如果涉及到产线生产的问题,那就麻烦了,那么多步骤,产线的员工才不会这么搞,他们想做的就是能够直接点下载,就能烧录了。按以往的方法,可以使用hex文件烧录,当然keil也支持生成hex文件。
- 不知道是我的J-Flash(V6.34f)版本问题还是其他问题,hex文件超过16k之后,就会报错,大致原因应该就是J-Flash烧写这款芯片的时候,不支持Hex格式的?(暂时不确定),毕竟hex文件不是纯粹的二进制文件,里面还带了很多其他信息在里面,因此要能够将编译出来的文件转换成bin文件就好了。
- 好在keil也支持间axf文件转换成bin文件的方式,想深入研究的可以参考官方文档,位置如下:在help中,打开文档帮助,然后在搜索中查找:fromelf,可以找到一堆相关的文章。
- fromelf这个工具就在keil文件夹下的ARM\ARMCC\bin中。
- 参考我的目录:D:\Keil_v5\ARM\ARMCC\bin
- 这里我简单说下有以下两种方法,第一种是是使用cmd命令去执行,打开命令行,进入到fromelf程序的文件夹里面,在命令窗口中输入"fromelf.exe --bin --output xxx.bin xxx.axf"并回车,这样就将axf文件生成xxx.bin文件。
- 第二种方法可以在keil的配置选项中,添加:fromelf.exe --bin -o “%L@L.bin” “#L”,具体操作参考下图。生成的bin文件会在工程的同级目录下。
- ps:生成出来的bin文件会变成一个文件夹,里面有四个文件,其中三个看起来没啥用的感觉。
- 可以在配置文件中,选择对.scat文件进行编辑,删除掉那几个链接文件,然后保存,在重新编译,就可以正常生成bin文件。但是这里我不确定另外三个没链接进去的文件是否会有影响,就目前来看,生成出来的bin文件,能用J-Flash烧录,也能正常使用。