Pony279 发表于 2011-12-15 17:50:32

用Keil MDK开发TQ2440裸机程序入门教程(有图有程序)(word文档在1楼)

开发板也差不多买了半年了, 以前照着教程用的是软件是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.amobbs.com/bbs_upload782111/files_49/ourdev_705063VH70AF.png
(原文件名:1.png)
对JLINK不熟可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写


2. 创建工程和编写代码
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705064XIZAPC.png
(原文件名:2.png)

http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705065IA1VFR.png
(原文件名:3.png)
选择CPU, 然后点OK
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705066XN9Z6N.png
(原文件名:4.png)
复制启动代码到我的工程文件里, 选是,
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705067OJFXMV.png
(原文件名:5.png)
然后工程就建好了
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705068NX94VK.png
(原文件名:6.png)
启动代码就在S3C2440.s里面, 在Keil里面是可以可视化自由配置的, 打开S3C2440.s你会看到很多的汇编代码, 呵呵, 我也不喜欢汇编. 然后点下面的配置向导http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705069S23Z4T.jpg
(原文件名:7.jpg)
先都打个勾吧, 其实我也不知道这样配置好不好,
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705070PC47JN.jpg
(原文件名:8.jpg)
对了, LED对应的IO口要设置为输出
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705071NKT2P2.png
(原文件名:9.png)
建个main.c文件, 写你的工程代码咯~这里就以闪烁灯为例啦
新建文件, 其实不太想说这个了, 考虑到可能还真有人没用过Keil的...http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705072ALLD15.png
(原文件名:10.png)
点保存, 文件名为main.c
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705073X25ECN.png
(原文件名:1.png)
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705074EI75VP.png
(原文件名:1.png)
好了, 开始写代码了, 噢, 还要先把main.c文件添加到项目里来咧
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705077VTC9Y2.png
(原文件名:1.png) 选择main.c, 鼠标单击Addhttp://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705078JNMYM8.png
(原文件名:1.png)工程目录里就有这个东东了http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705079F0112A.png
(原文件名:1.png)
下面是代码:
注意到我在第一句打了个断点, 呵呵, 无奈, 之前调试的时候上系统启动后自动在main函数入口停下来的指令不管用, 所以就手动加了个断点了,然后就可以保存文件啦
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705080L6C4BU.png
(原文件名:1.png)
设置工程:http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705081P87TXQ.png
(原文件名:1.png)
这一项玩过51的就再熟不过了http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705082J3SDRI.png
(原文件名:1.png)
这个设置不重要, 习惯而已http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705083K2YDTK.png
(原文件名:1.png)
准备完啦, 继续~



二. JLINK在SDRAM中调试TQ2440

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



三. 烧写NOR Flash

烧写NOR Flash时要这样配置:
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705093HZ6T9B.png
(原文件名:1.png)
然后是这个, 再啰嗦一下, 设置utilities, 这里添加了烧写算法的, 这个算法是只能用来编程不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705094PGS17E.png
(原文件名:1.png)
按F7编译, 然后打开JFlash, JFlash的设置参考TQ2440的用户手册哈,然后
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705095UL6E0L.png
(原文件名:1.png)
擦除...http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705096DP99XR.png
(原文件名:1.png)
回到MDK, LOAD, 就可以看到下载成功了
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_705097PTOK5Z.png
(原文件名:1.png)



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

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

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

Pony279 发表于 2011-12-15 18:36:41

咦, 重启电脑以后又能复制图片了~

./emotion/em012.gif 这个是文档~

点击此处下载 ourdev_705047CFY5NE.doc(文件大小:1020K) (原文件名:MDK与TQ2440之-JLINK在SDRAM中调试TQ2440-JLINK下载程序到NOR-生成下载到NAND的bin文件.doc)

haohan007 发表于 2011-12-15 20:47:40

顶你,我有二块QQ2440开发板了,可是还是不知道怎么玩这个东西。。

Pony279 发表于 2011-12-15 21:01:21

顺便上传参考的几个资料, 其实都大同小异
注意第一个不是txt格式的, 是docx格式的, 所以下载下来要自己改格式
点击此处下载 ourdev_705103A7I6EB.txt(文件大小:151K) (原文件名:Keil_MDK_生成BIN_过程.docx)

点击此处下载 ourdev_705104UW6SOB.pdf(文件大小:1.19M) (原文件名:RealView MDK Jlink Mini2440测试程序移植(成功).pdf)

点击此处下载 ourdev_705105KS02BN.pdf(文件大小:821K) (原文件名:RealView_MDK_2440_快速开发快速入门.pdf)

点击此处下载 ourdev_705106RXA7Q7.pdf(文件大小:287K) (原文件名:用RealView_MDK调试TQ2440.pdf)

Pony279 发表于 2011-12-15 21:05:01

回复【2楼】haohan007
-----------------------------------------------------------------------

呵呵, 一起加油~
其实我也还算是新手, 最近一直在忙着弄51呢,
在搞51上的代码库, 做好了就转到ARM上来, 现在也完成的差不多了, 呵呵, 有些通用的代码还可以直接移植到ARM上来~简化了不少工作

Pony279 发表于 2011-12-15 21:13:31

另外这个帖子也有提供资料,
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3361280&bbs_page_no=1&bbs_id=1032
那位楼主说还可以直接下载到NAND的, 因为我菜, 所以看了他的说明也不会用...有时间再研究研究...

mowin 发表于 2011-12-15 21:25:39

标记一下,谢谢共享

Pony279 发表于 2011-12-15 21:40:18

回复【7楼】ylyfxzsx ylyfxzsx
-----------------------------------------------------------------------

谢谢!

Nuist_Gwgj 发表于 2011-12-15 21:46:33

mark

vipcff 发表于 2011-12-15 21:53:22

谢楼主!

haohan007 发表于 2011-12-15 22:18:46

回复【4楼】Pony279霍斯
-----------------------------------------------------------------------

呵呵,我也是在弄51的扩展系统,51(BOOT和硬件驱动代码)+32KRAM(即是内存空间也是外扩代码空间)+12864LCD,好象和ARM2440有点相似哦。可是遇到了很多困难,好象是12864LCD在使能E为低的情况下(LCD关闭?),还再工作,还会对数据总线造成干扰。

Pony279 发表于 2011-12-15 22:28:15

回复【11楼】haohan007
-----------------------------------------------------------------------

呵呵, 我不是在做外设驱动, 我做的代码库主要是针对芯片内部功能的,
目标是封装大部分的寄存器操作, 这样用起来会觉得很自然, 而且很多寄存器操作会简化成复制粘贴的工作
还有在做的是协同式的操作系统, 已经写好了, 只是在完善
另外还有个FAT文件系统, 是前段时间做51单片机的MP3的时候不知道有的抄才自己写的代码, 也还在完善

12864在网上有很多源码, 所以搞不定可以对着源码看看差别在哪里, 说不定就找出问题了
我没玩过12864, 帮不了你了

sytu_xww 发表于 2011-12-15 22:40:20

mark

CHENXIAOTIAN 发表于 2011-12-15 23:07:30

mark

LK9286 发表于 2011-12-17 22:22:22

MARK,围观,学习!!!

hxlawf 发表于 2011-12-19 16:11:25

好东西,学习了。。

Pony279 发表于 2011-12-25 16:08:23

说明一下, 因为我不会移植TQ2440的测试程序
所以建议不要把程序烧到NAND flash下, 因为NAND FLASH是没有运行程序的能力的, 如果你不会写NAND下的启动代码, 程序最大只能有4K(如果从NAND启动, 上电后CPU自动把NAND里的前4K内容复制到内部的存储器里执行)
但是TQ2440的测试程序可以移植到MDK并烧到NOR里面(需要用JLINK或JTAG烧程序的),
如果纯粹是自己写的裸机程序的话, NOR的容量(2M)已经完全够你用的了, 写个上十K的程序都可以把你累死...

怎样移植到MDK并烧到NOR我就不写了(期末复习, 实在是不好意思...), 这个帖子里有示例程序, 也有参考资料
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5302644&bbs_id=9999

nczcc 发表于 2011-12-25 19:00:50

刚开始学ARM 受教了

jordonwu 发表于 2011-12-27 08:45:32

mark,学习

Pony279 发表于 2011-12-28 13:09:39

回复【18楼】Pony279 霍斯
-----------------------------------------------------------------------

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

移植测试程序的内容已经写好了..../emotion/em012.gif

oatdisk 发表于 2011-12-28 13:24:44

mark.

lechoate 发表于 2011-12-28 15:53:22

多谢了,现在正在研究244O。

chenenzhi 发表于 2011-12-28 21:35:42

MARK!

1032358837 发表于 2011-12-29 10:49:13

正在学习这个,谢谢

huangqi412 发表于 2011-12-29 11:14:21

mark了

LK9286 发表于 2011-12-29 16:59:35

MARK

Pony279 发表于 2011-12-29 19:09:37

再来啰嗦一下:
    注意: 不建议用这个教程的方法去生成下载到NAND flash的bin文件(因为这里程序最大只可以有4K, 原因请参考教程2), 照着教程操作一次熟悉一下就好,
如果要生成下载到nand flash的bin 文件并移植TQ2440配套的测试程序, 请参考教程2
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5306535&bbs_id=9999 (详细内容已贴到3楼)

rabbitju 发表于 2012-1-19 15:23:01

谢了

painberg 发表于 2012-2-2 00:24:59


调试过了
就是.bin没运行
谢谢楼主哈!

zyp568 发表于 2012-2-10 16:23:39

好贴勒,顶一下。。。

dzmcs 发表于 2012-2-10 16:37:06

楼主辛苦了。

avrwoo 发表于 2012-2-14 09:49:31

学习下,谢谢LZ!

it1988 发表于 2012-2-22 15:15:22

Mark.
楼主辛苦了。

ccmj4708 发表于 2012-2-22 16:03:10

mark

itfan 发表于 2012-4-8 19:17:34

我用的TQ2440,谢谢楼主

tmfwt 发表于 2012-4-20 11:57:27

不错,标记一下!

AilesArgentees 发表于 2012-4-20 12:29:05

Pony279 发表于 2011-12-29 19:09 static/image/common/back.gif
再来啰嗦一下:
    注意: 不建议用这个教程的方法去生成下载到NAND flash的bin文件(因为这里程序最大只可以 ...

麻烦问一下LZ 这个移植对TQ2440的版本有要求吗?

我买的版本比较早 大概是09年的

gracialee 发表于 2012-4-21 06:59:00

09的还早啊,我这里还有更早的呢?

Sean.com 发表于 2012-5-9 23:10:44

好东西,Mark一下,以后有空再来看

keen9327 发表于 2012-5-11 14:29:20

老论坛的资料还是下不了啊,阿莫还不解决啊,以后和楼主混了

kaniel 发表于 2012-9-13 08:48:10

收藏了。

jiangnanxiaozi 发表于 2012-9-17 15:23:56

留作学习用,顺便请教各位前辈,有没有在Linux gcc下裸跑的教程?

sunhaojie 发表于 2012-10-7 16:55:30

楼主你好,你写的很详细。不过我用的时候发现几个问题:
1、还要复制一个初始化文件,文件在Keil的安装目录里找, 我这里是D:\Program Files\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky\Ext_RAM.ini
    我没找到这个文件。我的MDK文件夹下D:\Program Files\Keil\ARM\Boards\Samsung\没有后面的东西了;
2、我下载了你的工程,仿真的时候提示“*** error 65: access violation at 0x53000008 : no 'write' permission”;
3、将程序下载进Nor flash或Nand flash中,在Target Option-->Target-->Read/Only Memory area 中,Start起始地址中,一个是0x00000000,一个是0x0
    这不是一样吗?也就是说着两种下载方式地址的设置都一样吗?

我是一个新手,用ADS觉得很不方便,就改为MDK,但是有很多不懂。比如:nor flash 和nand flash.为什么板子要用这两种flash?ARM9内部有RAM和ROM吗?SDRAM又是怎么一回事?
希望楼主可以帮我解答

cumtgao 发表于 2012-10-7 22:20:30

好帖子 ,学习了。

BigSea001 发表于 2012-11-14 09:19:40

辛苦了,感谢分享

panda1985 发表于 2012-11-14 18:41:32

mark            

进取者 发表于 2013-1-3 00:56:32

tianming 发表于 2013-1-3 01:18:39

正在学习stm32,偶然看到实验室有很多友善的ARM9,心动啊,先记下来,希望以后用的着。楼主辛苦~~~

zhengyang 发表于 2013-1-3 10:04:19

好東東,標記一下!

济南电子爱好者 发表于 2013-1-6 16:06:15

看贴回贴 是美徳.ADS虽然不更新了,但是以前很多人都是用的ADS,网上许多 程序都是ADS编写的.所以纠结是用MDK还是用ADS

jaky80000 发表于 2013-1-6 21:37:21

非常好,非常好,楼主辛苦了

dgxll 发表于 2013-2-4 23:00:38

真不错,写 的详细

jun503380 发表于 2013-2-28 17:16:01

Pony279 发表于 2011-12-15 21:13 static/image/common/back.gif
另外这个帖子也有提供资料,
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3361280&bbs_page_no=1&bbs_ ...

这个帖子不存在了!你有下载到nad中资料吗如果有的话可以分享一下吗

329701341 发表于 2013-3-2 21:47:54

不错。{:smile:}{:smile:}

xiyangzuilehdu 发表于 2013-4-1 14:26:45

好东西,mark

liaoya00000 发表于 2013-4-13 15:08:50

初学者,学习了顶起

wo130876 发表于 2013-4-17 17:20:16

mark 以后看会有用的

Cortex_M3 发表于 2013-7-29 17:22:29

sunhaojie 发表于 2012-10-7 16:55 static/image/common/back.gif
楼主你好,你写的很详细。不过我用的时候发现几个问题:
1、还要复制一个初始化文件,文件在Keil的安装目 ...

同遇到这个问题

X:\XXXX\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky\Ext_RAM.ini
目前使用4.70A 版本中Samsuung 文件夹下没有S3C2440 这个文件夹了
只在S3FM02G_MBD 文件夹下找到了RTX_Blinky 文件夹 其中也只有个Dbg_RAM.ini 没见到有Ext_RAM.ini

哪位朋友 有的给传一个
先谢谢了

icoozy 发表于 2013-8-1 15:02:13

研究这东西好几天了,先顶下,再慢慢研究

jordonwu 发表于 2013-8-1 16:33:23

下载来试试

eliefly 发表于 2013-9-13 17:48:13

顶下      

qietingfy 发表于 2013-9-15 16:06:59

顶,这个给力

Sc0pin 发表于 2013-10-10 17:47:29

我的 nor flash里有bootloader 在nandflash里有linux系统,
如果我在sdram里调试2440裸机程序,是不是就不会影响到两块flash里的程序啊?

harryxp 发表于 2013-10-20 09:13:50

请问楼主,我用MDK生成的bin文件能在SDRAM中运行,但下载到NANDFLASH就运行不了,应该怎么解决,求帮忙啊!

Gallen.Zhang 发表于 2013-10-20 09:25:29

mark !

寒寒 发表于 2013-10-29 21:15:37

照着做,jlink调试不行

NEWT 发表于 2013-10-29 21:22:45

这么老的帖子怎么被顶上来的……

hyf88 发表于 2013-10-30 13:12:45

mark ,,谢谢楼主分享,,,{:smile:}

lofky 发表于 2013-10-30 21:14:16

留名学习

stevenniu500 发表于 2013-10-31 15:05:47

好贴必须顶啊,以后能用上。谢谢啊,大公无私的楼主。

wxdl 发表于 2013-12-24 17:58:13

谢谢!!!!!!!!!!!!!!!
我也是新手,新新。。。手!

crazydtone 发表于 2014-1-4 15:32:07

谢谢LZ无私奉献。。。

最依然 发表于 2014-1-16 17:39:13

mark.,.......

rcdny123 发表于 2014-1-16 19:33:58

mark                              

vala 发表于 2014-1-18 21:52:43

这个必须得标记一下
页: [1]
查看完整版本: 用Keil MDK开发TQ2440裸机程序入门教程(有图有程序)(word文档在1楼)