觉得此编文章很详实,故转载之,来自http://www.amobbs.com/thread-5281512-1-1.html
开发板也差不多买了半年了, 以前照着教程用的是软件是ADS,在win7下老是崩溃, 后来才知道ADS早就不提供支持了, ADS的公司怎样怎样了...(此处省略300..)
然后我就捣鼓着怎么转到KEIL上来, 具体的例程代码我不会移植, 不过裸机开发是没什么问题的了, 在网上也找了些教程, 因为我比较菜, 然后教程又不是针对TQ2440的, 也有针对TQ2440的, 内容不全, 前段时间一直看不懂, 无奈, 捣鼓了好长时间, 终于明白了, 然后就想写一份文档, 造福一下和我一样用TQ2440的后人~
先上传示例工程点击此处下载 ourdev_704996U2860Q.zip(文件大小:74K) (原文件名:JLINKDemo.zip)
主要内容有:
1 准备工作2.JLINK SDRAM调试
3.JLINK 烧写NOR Flash
4.生成下载到NAND的bin文件(这个不需要JLINK)
一. 准备工作:
1. JLINK驱动(如果只是打算生成下载到nand的bin文件的话就不用看这个了)
1). 首先安装驱动
2). 阅读此目录下的readme文档, 用Flash.csv 支持更多Nor Flash的配置文件替换C:\Program Files\SEGGER\JLinkARM_V408e\ETC\JFlash目录下的同名文件(假设您是把这个软件安装到C盘的)
![](https://i-blog.csdnimg.cn/blog_migrate/f60417951bd66057be5617336c1e53ed.png)
(原文件名:1.png)
对JLINK不熟可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写
2. 创建工程和编写代码
![](https://i-blog.csdnimg.cn/blog_migrate/94fd0db1c7b5ae099d3c3a75e7033f90.png)
(原文件名:2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b77d170606cbe176da50af2f629cdac.png)
(原文件名:3.png)
选择CPU, 然后点OK
![](https://i-blog.csdnimg.cn/blog_migrate/12fbde2ded164be5cbb143a41052b9cb.png)
(原文件名:4.png)
复制启动代码到我的工程文件里, 选是,
![](https://i-blog.csdnimg.cn/blog_migrate/a933188dc751f2c597ec219732ce39ac.png)
(原文件名:5.png)
然后工程就建好了
![](https://i-blog.csdnimg.cn/blog_migrate/51f5a934c2a3ab895921afa904d7f849.png)
(原文件名:6.png)
启动代码就在S3C2440.s里面, 在Keil里面是可以可视化自由配置的, 打开S3C2440.s你会看到很多的汇编代码, 呵呵, 我也不喜欢汇编. 然后点下面的配置向导
![](https://i-blog.csdnimg.cn/blog_migrate/a5fc518c1b8ef730b35b404c0897ca4f.jpeg)
(原文件名:7.jpg)
先都打个勾吧, 其实我也不知道这样配置好不好,
![](https://i-blog.csdnimg.cn/blog_migrate/4df9985413921bd0946acbeefc6343db.jpeg)
(原文件名:8.jpg)
对了, LED对应的IO口要设置为输出
![](https://i-blog.csdnimg.cn/blog_migrate/a0d12b1f3eb6caab9f5e2087173e9928.png)
(原文件名:9.png)
建个main.c文件, 写你的工程代码咯~这里就以闪烁灯为例啦
新建文件, 其实不太想说这个了, 考虑到可能还真有人没用过Keil的...
![](https://i-blog.csdnimg.cn/blog_migrate/772fabf4db32168156b08ca78385c363.png)
(原文件名:10.png)
点保存, 文件名为main.c
![](https://i-blog.csdnimg.cn/blog_migrate/3195af42dd8656727f1628b8a2f4f23b.png)
(原文件名:1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a0d2cfba1890c0b71b2857199f422c3d.png)
(原文件名:1.png)
好了, 开始写代码了, 噢, 还要先把main.c文件添加到项目里来咧
![](https://i-blog.csdnimg.cn/blog_migrate/42dbe9a7a48d57876a92d2a1eb557867.png)
(原文件名:1.png) 选择main.c, 鼠标单击Add
![](https://i-blog.csdnimg.cn/blog_migrate/06af6f9b75e52e587279a3c73898b3d2.png)
(原文件名:1.png) 工程目录里就有这个东东了
![](https://i-blog.csdnimg.cn/blog_migrate/eb50e2669237644d21626c42a5a48647.png)
(原文件名:1.png)
下面是代码:
注意到我在第一句打了个断点, 呵呵, 无奈, 之前调试的时候上系统启动后自动在main函数入口停下来的指令不管用, 所以就手动加了个断点了,然后就可以保存文件啦
![](https://i-blog.csdnimg.cn/blog_migrate/7c6c5fc7016fc60e688140e0ab4f6807.png)
(原文件名:1.png)
设置工程:
![](https://i-blog.csdnimg.cn/blog_migrate/6cb62fa023104d6b427cfcec9cb7b4b9.png)
(原文件名:1.png)
这一项玩过51的就再熟不过了
![](https://i-blog.csdnimg.cn/blog_migrate/1c9ba6f5203e73b1fa5e024f538bf7bb.png)
(原文件名:1.png)
这个设置不重要, 习惯而已
![](https://i-blog.csdnimg.cn/blog_migrate/287e2b765f87da1f111c33cc05f66564.png)
(原文件名:1.png)
准备完啦, 继续~
二. JLINK在SDRAM中调试TQ2440
用SDRAM调试是一个不错的方式, 可以有效的减少Flash的擦写, 方便又快捷, 呵呵, 不啰嗦了, 直接进入正题~
在SDRAM里面调试的时候是这样设置的, 主要是ROM1和RAM1的起始地址
![](https://i-blog.csdnimg.cn/blog_migrate/7443508c1d14221cde223f2b8b9a5eb3.png)
(原文件名:1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9a079d3959e542437d811b35b966dc7.png)
(原文件名:1.png)
对了, 还要复制一个初始化文件, 文件在Keil的安装目录里找, 我这里是D:\Program Files\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky\Ext_RAM.ini
直接复制到你的工程目录下, 然后还要做一点修改, 如果不修改, 就调试不了, 会出现这样的情况
![](https://i-blog.csdnimg.cn/blog_migrate/a25611527e4feef423e797621d3924ac.png)
(原文件名:1.png)
工程输出的.axf文件(我也不清楚是用来干啥的)在工程目录下的Output文件夹里, 所以可以用编辑工具(记事本就行了)打开来这样修改:
![](https://i-blog.csdnimg.cn/blog_migrate/ad7d39b13740c22092289fb22f9773c6.png)
(原文件名:1.png)
然后添加这个文件,
![](https://i-blog.csdnimg.cn/blog_migrate/1dcfeb505d066a466903d39948575dd3.png)
(原文件名:1.png)
呃, 突然发现少做了一件事...这样就OK了, 设置utilities这里添加了烧写算法的, 其实在烧NOR Flash那里我才需要这个, 这个算法是不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash
![](https://i-blog.csdnimg.cn/blog_migrate/c5fd54d359767b4a11d2bcee77ea72a9.png)
(原文件名:1.png)
现在可以按F7编译了, 然后用你的JLINK连接好TQ2440开发板和你的电脑, TQ2440要先上电哦~最后在KEIL里面点调试就行了~
![](https://i-blog.csdnimg.cn/blog_migrate/6aec25870af86ab6a25013c4ea30e043.png)
(原文件名:1.png)
然后你就可以单步调试什么的了, 主要是由这里控制的, 我就不多说了, 自己捣鼓捣鼓去吧~
![](https://i-blog.csdnimg.cn/blog_migrate/2179eb142fad7f8356a36935747d8feb.png)
(原文件名:1.png)
三. 烧写NOR Flash
烧写NOR Flash时要这样配置:
![](https://i-blog.csdnimg.cn/blog_migrate/a3bc667d05801d1658f1f9055d189519.png)
(原文件名:1.png)
然后是这个, 再啰嗦一下, 设置utilities, 这里添加了烧写算法的, 这个算法是只能用来编程不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash
![](https://i-blog.csdnimg.cn/blog_migrate/10a4c898717b5e35b1b33d81e1b60c57.png)
(原文件名:1.png)
按F7编译, 然后打开JFlash, JFlash的设置参考TQ2440的用户手册哈,然后
![](https://i-blog.csdnimg.cn/blog_migrate/4a15f0a3a921997186168bb5bf6f93d9.png)
(原文件名:1.png)
擦除...
![](https://i-blog.csdnimg.cn/blog_migrate/bcd8e0b086e885ef2cd4ebbeb44ce314.png)
(原文件名:1.png)
回到MDK, LOAD, 就可以看到下载成功了
![](https://i-blog.csdnimg.cn/blog_migrate/30c3dcc7b3f572e9f39267d8f3f97a5b.png)
(原文件名:1.png)
四. 生成下载到NAND的bin文件
首先, TQ2440开发板出厂的时候是有烧有BootLoader的, 我也不懂BootLoader的原理, 所以直接用那个就行了. 如果刚刚烧过NOR Flash, 那么BootLoader就没了, 要重新烧进去了, 这个可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写
然后这个是设置
![](https://i-blog.csdnimg.cn/blog_migrate/e5fa067532902cbf534b67087f5b7913.png)
(原文件名:1.png)
接着, 让keil在生成后运行生成bin文件的用户程序,
![](https://i-blog.csdnimg.cn/blog_migrate/915be5c218ccc1a2a4c61c06072a40fb.png)
(原文件名:1.png)
然后编译就可以生成需要的bin文件了, 就在你的工程目录下, 下载的方式和TQ2440裸奔教程那里一开始说的是一样的, 用secureCRT和DNW, 我就不多说啦 ^_^