Pony279 发表于 2011-12-19 13:28:02

用Keil MDK开发TQ2440裸机程序入门教程

本帖最后由 Pony279 于 2011-12-19 13:35 编辑

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5281512&bbs_page_no=1&search_mode=3&search_text=Pony279&bbs_id=9999

前段时间自己写的小教程, 其实我也是新手~分享一下经验~:)

开发板也差不多买了半年了(一直没时间玩, 都快沾上尘了...), 以前照着教程用的是软件是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盘的)

http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705063VH70AF.png
对JLINK不熟可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写


2. 创建工程和编写代码
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705064XIZAPC.png
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705065IA1VFR.png
选择CPU, 然后点OK
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705066XN9Z6N.png
复制启动代码到我的工程文件里, 选是,
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705067OJFXMV.png
然后工程就建好了
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705068NX94VK.png
启动代码就在S3C2440.s里面, 在Keil里面是可以可视化自由配置的, 打开S3C2440.s你会看到很多的汇编代码, 呵呵, 我也不喜欢汇编. 然后点下面的配置向导 http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705069S23Z4T.jpg

先都打个勾吧, 其实我也不知道这样配置好不好,
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705070PC47JN.jpg
对了, LED对应的IO口要设置为输出
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705071NKT2P2.png
建个main.c文件, 写你的工程代码咯~这里就以闪烁灯为例啦
新建文件, 其实不太想说这个了, 考虑到可能还真有人没用过Keil的...
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705072ALLD15.png
点保存, 文件名为main.c
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705073X25ECN.png

http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705074EI75VP.png
好了, 开始写代码了, 噢, 还要先把main.c文件添加到项目里来咧
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705077VTC9Y2.png
选择main.c, 鼠标单击Add
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705078JNMYM8.png   
工程目录里就有这个东东了
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705079F0112A.png
下面是代码:
注意到我在第一句打了个断点, 呵呵, 无奈, 之前调试的时候上系统启动后自动在main函数入口停下来的指令不管用, 所以就手动加了个断点了,然后就可以保存文件啦
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705080L6C4BU.png
设置工程:
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705081P87TXQ.png
这一项玩过51的就再熟不过了
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705082J3SDRI.png
这个设置不重要, 习惯而已
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705083K2YDTK.png

准备完啦, 继续~



二. JLINK在SDRAM中调试TQ2440

用SDRAM调试是一个不错的方式, 可以有效的减少Flash的擦写, 方便又快捷, 呵呵, 不啰嗦了, 直接进入正题~
在SDRAM里面调试的时候是这样设置的, 主要是ROM1和RAM1的起始地址
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705084TDTQTB.png
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705111XBJKEH.png对了, 还要复制一个初始化文件,文件在Keil的安装目录里找, 我这里是D:\Program Files\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky\Ext_RAM.ini
直接复制到你的工程目录下, 然后还要做一点修改, 如果不修改, 就调试不了, 会出现这样的情况
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705087VKASGN.png
工程输出的.axf文件(我也不清楚是用来干啥的)在工程目录下的Output文件夹里, 所以可以用编辑工具(记事本就行了)打开来这样修改:
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705088HF9YC5.png
然后添加这个文件,
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705089L5QKYC.png
呃, 突然发现少做了一件事...这样就OK了, 设置utilities这里添加了烧写算法的, 其实在烧NOR Flash那里我才需要这个, 这个算法是不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705090TPY205.png
现在可以按F7编译了, 然后用你的JLINK连接好TQ2440开发板和你的电脑, TQ2440要先上电哦~最后在KEIL里面点调试就行了~
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705091JXXW8S.png
然后你就可以单步调试什么的了, 主要是由这里控制的, 我就不多说了, 自己捣鼓捣鼓去吧~
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705092C1R27K.png





三. 烧写NOR Flash

烧写NOR Flash时要这样配置:

http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705093HZ6T9B.png
然后是这个, 再啰嗦一下, 设置utilities, 这里添加了烧写算法的, 这个算法是只能用来编程不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705094PGS17E.png
按F7编译, 然后打开JFlash, JFlash的设置参考TQ2440的用户手册哈,然后
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705095UL6E0L.png
擦除... http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705096DP99XR.png


回到MDK, LOAD, 就可以看到下载成功了
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705097PTOK5Z.png

四. 生成下载到NAND的bin文件

首先, TQ2440开发板出厂的时候是有烧有BootLoader的, 我也不懂BootLoader的原理, 所以直接用那个就行了. 如果刚刚烧过NOR Flash, 那么BootLoader就没了, 要重新烧进去了, 这个可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写

然后这个是设置
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705098DTTR2Q.png
接着, 让keil在生成后运行生成bin文件的用户程序,
http://cache.ourdev.cn/bbs_upload546065/files_49/ourdev_705099ELGUW9.png
然后编译就可以生成需要的bin文件了, 就在你的工程目录下, 下载的方式和TQ2440裸奔教程那里一开始说的是一样的, 用secureCRT和DNW, 我就不多说啦 ^_^


Pony279 发表于 2011-12-19 13:37:16

本帖最后由 Pony279 于 2011-12-28 16:37 编辑

注意: 不建议用这个教程的方法去生成下载到NAND flash的bin文件(因为这里程序最大只可以有4K, 原因请参考教程2), 照着教程操作一次熟悉一下就好,
如果要生成下载到nand flash的bin 文件并移植TQ2440配套的测试程序, 请参考教程2:
http://www.armbbs.net/forum.php?mod=viewthread&tid=10500&page=1#pid59291

TQ-lkp 发表于 2011-12-19 14:03:22

我来帮你顶起来:D

Pony279 发表于 2011-12-19 14:22:56

谢谢版主~
从51单片机学过来的对Keil和裸机是有深厚感情滴~:lol

reder_mcu 发表于 2011-12-19 15:50:44

好贴,顶起来~

Pony279 发表于 2011-12-19 20:07:30

本帖最后由 Pony279 于 2011-12-19 20:10 编辑







参考过的资料...其实还有, 传不了了, 一天只能上2M

最近准备考试了,
寒假的时候我打算增加移植裸机测试程序的教程:)

Pony279 发表于 2011-12-20 00:11:58



547886405 发表于 2011-12-20 11:43:59

楼主辛苦了,谢谢楼主分享 ,很好的学习资料!

mojingxian 发表于 2011-12-20 15:50:56

为毛我生成的bin文件烧到nor flash中跑不起来?SDRAM中倒是可以仿真,生成bin的时候已经设置rom地址从0开始了

Pony279 发表于 2011-12-20 18:18:54

mojingxian 发表于 2011-12-20 15:50 static/image/common/back.gif
为毛我生成的bin文件烧到nor flash中跑不起来?SDRAM中倒是可以仿真,生成bin的时候已经设置rom地址从0开始 ...

生成的bin文件是烧到NAND flash用的呀...

Pony279 发表于 2011-12-20 19:42:08

mojingxian 发表于 2011-12-20 15:50 static/image/common/back.gif
为毛我生成的bin文件烧到nor flash中跑不起来?SDRAM中倒是可以仿真,生成bin的时候已经设置rom地址从0开始 ...

我已经按照我上面说的内容重新测试了一遍, 没发现问题呀
你再仔细检查一下, 看哪里没做到

song549 发表于 2011-12-21 13:05:03

必须说,楼主辛苦了,不错,现在还是喜欢在source insight里面写写程序。:lol

kingvenlee 发表于 2011-12-21 15:08:32

这是个好东西啊。。顶起

Pony279 发表于 2011-12-21 17:04:00

song549 发表于 2011-12-21 13:05 static/image/common/back.gif
必须说,楼主辛苦了,不错,现在还是喜欢在source insight里面写写程序。

嗯, KEIL的代码编辑器用起来真是蛋疼...
不过source insight的风格我不太习惯, 所以很少用

Anonymous 发表于 2011-12-21 20:36:18

还没拿到板子的新手,先把帖子收藏再说,楼主辛苦了
页: [1] 2 3
查看完整版本: 用Keil MDK开发TQ2440裸机程序入门教程