可能很多初手在用51单片机或者AVR单片机的时候都用到过单独的Flash ISP烧写软件,把单独的bin文件或者hex文件烧写到单片机的flash里面去,在开发ARM9、ARM11的时候我们也会想到用H-JTAG,不过针对Kinetis、STM32这一类,该用什么Flash烧写软件估计好多人都没有想过,因为大家第一印象就是直接点一下Codewarrior或者Keil或者IAR的debug按钮不就行了吗,实在不行不还是有download、Erase选项吗,嘿嘿。的确这些都是一种下载程序的方法,不过大家不知想过没有,对于已经批量生产的产品,在下生产线之后,需要我们对其控制器烧写程序的时候,厂家一般都只会提供一个bin文件,这时该肿么办,我们还可以用CW、MDK或者IAR打开调试吗,嘿嘿,这个时候本篇的主角——J-Flash ARM就要出场了...
J-Flash ARM是J-Link自带的一款Flash ISP软件(这个你在安装J-Link驱动之后就会看到,其实还自带几个其他的小软件,别看小,真的都很强大的,这里先留个悬念,呵呵),支持bin格式、hex格式、srec格式(Motorola的)下载,下面我就以烧写bin文件(当然生成bin文件可以用CW、MDK、IAR生成,我还是习惯用IAR了就以它为例)到K60的flash为例介绍J-Flash ARM的使用方法,下面进入正题:
1.首先用IAR打开一个K60的工程,需要做一下设置,如下图:
2.设置如上图之后,编译链接整个工程,然后我们到$PROJ_DIR$\FLASH_512KB_PFLASH\Exe文件下找到.bin文件,如下图(.out文件为我们点击debug时用到的文件):
3.要烧写的文件准备好了,下面就需要打开J-Flash ARM软件了,上图:
打开界面如下图所示:
4.首次使用的时候,我们需要点击File->Open Project,然后选择目标芯片,这里由于我以K60为例,我们找到MK60N512.jflash
打开之后,接着连接J-Link和目标板并给J-Link和目标板供电,然后开始连接,点击Target->connect
连接之后,可以在下面的log窗口看到连接已经成功了,哈哈,到这一步就已经走了一大半路了,喝口水,咳咳。
5.加载第二步生成的.bin文件,点击File->Open data file找到要下载的bin文件,然后点击打开,这时弹出烧写flash的首地址,我们默认为0即从K60的0x00000000地址开始烧写,然后点击确认:
6.最后一步,把打开的bin文件下载到目标板之中,点击target->Program,下载程序到目标板中,中间弹出窗口一律默认即可,然后下载成功之后,程序没有立即执行,这时就需要最后一个操作了,点击target->start application启动程序运行,然后就到了见证奇迹的时刻了,哈哈。
呵呵,J-Flash的完整操作流程就OK了,嘿嘿,是不是有种意犹未尽的赶脚,其实该软件还有好多灰常实用的功能,这里限于篇幅和时间(咳咳,晚上10:30了,该回宿舍了,不然阿姨该关门了)就不多介绍了,需要自己去琢磨了,还是那句话修行在个人,哈哈...不早了,得赶紧撤了,未完待续~
网友提问:
1、拜託我有兩個tower 一個是TWR-K60N512與TWR-K40X256,之前我用你的程式跑K60是沒啥問題,但放到k40跑就有問題不知道我是不是少了什麼步驟阿?
我們在test.c下一直送 uart_putchar(UART3,0XAA)
但在串口助手看都沒反應
發現是被while卡住 在mcg.c的SystemClockInit
裡面的
while (MCG_S & MCG_S_IREFST_MASK){}; /* wait for Reference clock Status bit to clear */
作者回复:两个Tower板子硬件连接上一样吗,你用示波器看下K40的时钟输端50MHz时钟波形对吗,可能这里有问题。
2、
写到flash中的文件可以使.out文件不?download file... 是输入.out、.d文件 这个操作貌似也是烧程序. out
和.bin 执行的结果一样吗
作者回复:不可以,.out是IAR自己的带调试信息的文件,J-Flash只可以烧写hex,bin,s19,mot等文件。