搜索
bottom↓
回复: 74

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

  [复制链接]

出0入0汤圆

发表于 2011-12-15 17:50:32 | 显示全部楼层 |阅读模式
开发板也差不多买了半年了, 以前照着教程用的是软件是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盘的)

(原文件名:1.png)
对JLINK不熟可以参考TQ2440的使用手册第四章, TQ2440烧写说明, 4.1.3 使用Jlink-Flasher烧写


2. 创建工程和编写代码

(原文件名:2.png)


(原文件名:3.png)
选择CPU, 然后点OK

(原文件名:4.png)
复制启动代码到我的工程文件里, 选是,

(原文件名:5.png)
然后工程就建好了

(原文件名:6.png)
启动代码就在S3C2440.s里面, 在Keil里面是可以可视化自由配置的, 打开S3C2440.s你会看到很多的汇编代码, 呵呵, 我也不喜欢汇编. 然后点下面的配置向导
(原文件名:7.jpg)
先都打个勾吧, 其实我也不知道这样配置好不好,

(原文件名:8.jpg)
对了, LED对应的IO口要设置为输出

(原文件名:9.png)
建个main.c文件, 写你的工程代码咯~这里就以闪烁灯为例啦
新建文件, 其实不太想说这个了, 考虑到可能还真有人没用过Keil的...
(原文件名:10.png)
点保存, 文件名为main.c

(原文件名:1.png)

(原文件名:1.png)
好了, 开始写代码了, 噢, 还要先把main.c文件添加到项目里来咧

(原文件名:1.png) 选择main.c, 鼠标单击Add
(原文件名:1.png)  工程目录里就有这个东东了
(原文件名:1.png)
下面是代码:
注意到我在第一句打了个断点, 呵呵, 无奈, 之前调试的时候上系统启动后自动在main函数入口停下来的指令不管用, 所以就手动加了个断点了,然后就可以保存文件啦

(原文件名:1.png)
设置工程:
(原文件名:1.png)
这一项玩过51的就再熟不过了
(原文件名:1.png)
这个设置不重要, 习惯而已
(原文件名:1.png)
准备完啦, 继续~



二. JLINK在SDRAM中调试TQ2440

用SDRAM调试是一个不错的方式, 可以有效的减少Flash的擦写, 方便又快捷, 呵呵, 不啰嗦了, 直接进入正题~
在SDRAM里面调试的时候是这样设置的, 主要是ROM1和RAM1的起始地址

(原文件名:1.png)

(原文件名:1.png)
对了, 还要复制一个初始化文件,  文件在Keil的安装目录里找, 我这里是D:\Program Files\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky\Ext_RAM.ini
直接复制到你的工程目录下, 然后还要做一点修改, 如果不修改, 就调试不了, 会出现这样的情况

(原文件名:1.png)
工程输出的.axf文件(我也不清楚是用来干啥的)在工程目录下的Output文件夹里, 所以可以用编辑工具(记事本就行了)打开来这样修改:

(原文件名:1.png)
然后添加这个文件,
(原文件名:1.png)
呃, 突然发现少做了一件事...这样就OK了, 设置utilities这里添加了烧写算法的, 其实在烧NOR Flash那里我才需要这个, 这个算法是不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash

(原文件名:1.png)
现在可以按F7编译了, 然后用你的JLINK连接好TQ2440开发板和你的电脑, TQ2440要先上电哦~最后在KEIL里面点调试就行了~

(原文件名:1.png)
然后你就可以单步调试什么的了, 主要是由这里控制的, 我就不多说了, 自己捣鼓捣鼓去吧~

(原文件名:1.png)



三. 烧写NOR Flash

烧写NOR Flash时要这样配置:

(原文件名:1.png)
然后是这个, 再啰嗦一下, 设置utilities, 这里添加了烧写算法的, 这个算法是只能用来编程不能擦除的, 但是这里我找不到合适的算法, 就用这个相近的了, 要擦除的话就用JFlash

(原文件名:1.png)
按F7编译, 然后打开JFlash, JFlash的设置参考TQ2440的用户手册哈,然后

(原文件名:1.png)
擦除...
(原文件名:1.png)
回到MDK, LOAD, 就可以看到下载成功了

(原文件名:1.png)



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

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

然后这个是设置
(原文件名:1.png)
接着, 让keil在生成后运行生成bin文件的用户程序,

(原文件名:1.png)
然后编译就可以生成需要的bin文件了, 就在你的工程目录下, 下载的方式和TQ2440裸奔教程那里一开始说的是一样的, 用secureCRT和DNW, 我就不多说啦 ^_^

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-12-15 18:36:41 | 显示全部楼层
咦, 重启电脑以后又能复制图片了~

这个是文档~

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

出0入0汤圆

发表于 2011-12-15 20:47:40 | 显示全部楼层
顶你,我有二块QQ2440开发板了,可是还是不知道怎么玩这个东西。。

出0入0汤圆

 楼主| 发表于 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)

出0入0汤圆

 楼主| 发表于 2011-12-15 21:05:01 | 显示全部楼层
回复【2楼】haohan007
-----------------------------------------------------------------------

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

出0入0汤圆

 楼主| 发表于 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的, 因为我菜, 所以看了他的说明也不会用...有时间再研究研究...

出0入0汤圆

发表于 2011-12-15 21:25:39 | 显示全部楼层
标记一下,谢谢共享

出0入0汤圆

 楼主| 发表于 2011-12-15 21:40:18 | 显示全部楼层
回复【7楼】ylyfxzsx ylyfxzsx
-----------------------------------------------------------------------

谢谢!

出0入0汤圆

发表于 2011-12-15 21:46:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-15 21:53:22 | 显示全部楼层
谢楼主!

出0入0汤圆

发表于 2011-12-15 22:18:46 | 显示全部楼层
回复【4楼】Pony279  霍斯
-----------------------------------------------------------------------

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

出0入0汤圆

 楼主| 发表于 2011-12-15 22:28:15 | 显示全部楼层
回复【11楼】haohan007
-----------------------------------------------------------------------

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

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

出0入0汤圆

发表于 2011-12-15 22:40:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-15 23:07:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-17 22:22:22 | 显示全部楼层
MARK,围观,学习!!!

出0入0汤圆

发表于 2011-12-19 16:11:25 | 显示全部楼层
好东西,学习了。。

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

发表于 2011-12-25 19:00:50 | 显示全部楼层
刚开始学ARM 受教了

出0入0汤圆

发表于 2011-12-27 08:45:32 | 显示全部楼层
mark,学习

出0入0汤圆

 楼主| 发表于 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

移植测试程序的内容已经写好了...

出0入0汤圆

发表于 2011-12-28 13:24:44 | 显示全部楼层
mark.

出0入0汤圆

发表于 2011-12-28 15:53:22 | 显示全部楼层
多谢了,现在正在研究244O。

出0入0汤圆

发表于 2011-12-28 21:35:42 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2011-12-29 10:49:13 | 显示全部楼层
正在学习这个,谢谢

出0入0汤圆

发表于 2011-12-29 11:14:21 | 显示全部楼层
mark了

出0入0汤圆

发表于 2011-12-29 16:59:35 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 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楼)

出0入0汤圆

发表于 2012-1-19 15:23:01 | 显示全部楼层
谢了

出0入0汤圆

发表于 2012-2-2 00:24:59 | 显示全部楼层

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

出0入0汤圆

发表于 2012-2-10 16:23:39 | 显示全部楼层
好贴勒,顶一下。。。

出0入0汤圆

发表于 2012-2-10 16:37:06 | 显示全部楼层
楼主辛苦了。

出0入0汤圆

发表于 2012-2-14 09:49:31 | 显示全部楼层
学习下,谢谢LZ!

出0入0汤圆

发表于 2012-2-22 15:15:22 | 显示全部楼层
Mark.
楼主辛苦了。

出0入0汤圆

发表于 2012-2-22 16:03:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-4-8 19:17:34 | 显示全部楼层
我用的TQ2440,谢谢楼主

出0入0汤圆

发表于 2012-4-20 11:57:27 | 显示全部楼层
不错,标记一下!

出0入0汤圆

发表于 2012-4-20 12:29:05 | 显示全部楼层
Pony279 发表于 2011-12-29 19:09
再来啰嗦一下:
    注意: 不建议用这个教程的方法去生成下载到NAND flash的bin文件(因为这里程序最大只可以 ...

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

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

出0入0汤圆

发表于 2012-4-21 06:59:00 | 显示全部楼层
09的还早啊,我这里还有更早的呢?

出0入0汤圆

发表于 2012-5-9 23:10:44 | 显示全部楼层
好东西,Mark一下,以后有空再来看

出0入0汤圆

发表于 2012-5-11 14:29:20 | 显示全部楼层
老论坛的资料还是下不了啊,阿莫还不解决啊,以后和楼主混了

出0入0汤圆

发表于 2012-9-13 08:48:10 | 显示全部楼层
收藏了。

出0入0汤圆

发表于 2012-9-17 15:23:56 | 显示全部楼层
留作学习用,顺便请教各位前辈,有没有在Linux gcc下裸跑的教程?

出0入0汤圆

发表于 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又是怎么一回事?
希望楼主可以帮我解答

出0入0汤圆

发表于 2012-10-7 22:20:30 | 显示全部楼层
好帖子 ,学习了。

出0入0汤圆

发表于 2012-11-14 09:19:40 | 显示全部楼层
辛苦了,感谢分享

出0入0汤圆

发表于 2012-11-14 18:41:32 | 显示全部楼层
mark              
头像被屏蔽

出0入0汤圆

发表于 2013-1-3 00:56:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-1-3 01:18:39 | 显示全部楼层
正在学习stm32,偶然看到实验室有很多友善的ARM9,心动啊,先记下来,希望以后用的着。楼主辛苦~~~

出0入0汤圆

发表于 2013-1-3 10:04:19 | 显示全部楼层
好東東,標記一下!

出0入0汤圆

发表于 2013-1-6 16:06:15 | 显示全部楼层
看贴回贴 是美徳.ADS虽然不更新了,但是以前很多人都是用的ADS,网上许多 程序都是ADS编写的.所以纠结是用MDK还是用ADS

出0入0汤圆

发表于 2013-1-6 21:37:21 | 显示全部楼层
非常好,非常好,楼主辛苦了

出0入0汤圆

发表于 2013-2-4 23:00:38 | 显示全部楼层
真不错,写 的详细

出0入0汤圆

发表于 2013-2-28 17:16:01 | 显示全部楼层
Pony279 发表于 2011-12-15 21:13
另外这个帖子也有提供资料,
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3361280&bbs_page_no=1&bbs_ ...

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

出0入0汤圆

发表于 2013-3-2 21:47:54 | 显示全部楼层
不错。

出0入0汤圆

发表于 2013-4-1 14:26:45 | 显示全部楼层
好东西,mark

出0入0汤圆

发表于 2013-4-13 15:08:50 | 显示全部楼层
初学者,学习了  顶起

出0入0汤圆

发表于 2013-4-17 17:20:16 | 显示全部楼层
mark 以后看会有用的

出0入8汤圆

发表于 2013-7-29 17:22:29 | 显示全部楼层
sunhaojie 发表于 2012-10-7 16:55
楼主你好,你写的很详细。不过我用的时候发现几个问题:
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

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

出0入0汤圆

发表于 2013-8-1 15:02:13 | 显示全部楼层
研究这东西好几天了,先顶下,再慢慢研究

出0入0汤圆

发表于 2013-8-1 16:33:23 来自手机 | 显示全部楼层
下载来试试

出0入0汤圆

发表于 2013-9-13 17:48:13 | 显示全部楼层
顶下        

出0入0汤圆

发表于 2013-9-15 16:06:59 | 显示全部楼层
顶,这个给力

出0入0汤圆

发表于 2013-10-10 17:47:29 | 显示全部楼层
我的 nor flash里有bootloader 在nandflash里有linux系统,
如果我在sdram里调试2440裸机程序,是不是就不会影响到两块flash里的程序啊?

出0入0汤圆

发表于 2013-10-20 09:13:50 | 显示全部楼层
请问楼主,我用MDK生成的bin文件能在SDRAM中运行,但下载到NANDFLASH就运行不了,应该怎么解决,求帮忙啊!

出0入0汤圆

发表于 2013-10-20 09:25:29 | 显示全部楼层
  mark !

出0入0汤圆

发表于 2013-10-29 21:15:37 | 显示全部楼层
照着做,jlink调试不行

出0入0汤圆

发表于 2013-10-29 21:22:45 | 显示全部楼层
这么老的帖子怎么被顶上来的……

出0入0汤圆

发表于 2013-10-30 13:12:45 | 显示全部楼层
mark ,,谢谢楼主分享,,,

出0入0汤圆

发表于 2013-10-30 21:14:16 | 显示全部楼层
留名学习

出0入0汤圆

发表于 2013-10-31 15:05:47 | 显示全部楼层
好贴必须顶啊,以后能用上。谢谢啊,大公无私的楼主。

出0入0汤圆

发表于 2013-12-24 17:58:13 | 显示全部楼层
谢谢!!!!!!!!!!!!!!!
我也是新手,新新。。。手!

出0入0汤圆

发表于 2014-1-4 15:32:07 | 显示全部楼层
谢谢LZ无私奉献。。。

出0入0汤圆

发表于 2014-1-16 17:39:13 | 显示全部楼层
mark.,.......

出0入0汤圆

发表于 2014-1-16 19:33:58 | 显示全部楼层
mark                              

出0入0汤圆

发表于 2014-1-18 21:52:43 | 显示全部楼层
这个必须得标记一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 23:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表