前几天找同学借了TQ2440的开发板来玩,由于是第一次弄ARM9,理所当然从裸奔开始了。 MDK比较熟悉,但是ADS没用过,可是TQ2440光盘里的测试程序就是ADS下建立的工程。实在不想去折腾ADS,于是百度将这个工程移植到MDK下的方法。 经亲自测试,按以下步骤做可以成功在MDK下编译出bin文件。本人使用的MDK版本是4.72a。 第一步就是打开MDK,新建一个project,device选择Samsung -> S3C2440A。MDK提示是否自动添加启动代码,选择否,因为测试程序自带了启动代码2440init.s,并且更好。 第二步配置参数(Options for Target ...),首先在User栏里,“Run User Programs After Build/Rebuild”,勾上Run #1,然后右边添加这么一句: 'fromelf.exe --bin -o @p.bin @p.axf',这是为了让MDK编译后生成DNW下载所用到的Bin文件。如下图所示: 接下来在asm栏里勾掉'Enable ARM/Thumb Interworking',我看有说法是这样做为了避免一大堆warnning。然后在Include paths里添加.\inc 之后是在Linker栏里勾掉Use Memory Layout from Target Diaglog,然后在工程文件夹下新建一个XXX.sct文件,内容如下。并在Linker栏里面添加。 ; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *************************************************************LR_ROM1 0x30000000 0x02000000 { ; load region size_region ER_ROM1 0x30000000 0x02000000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_RAM1 0x32000000 0x02000000 { ; RW data .ANY (+RW +ZI) } RW_IRAM1 0x40000000 0x00001000 { .ANY (+RW +ZI) }} SDRAM的大小是64MB,即0x4000000,初始地址为0x30000000。由于之后是用DNW把代码下载到SDRAM里运行,所以ROM的地址设为0x30000000,并分配32MB。 之后是32MB的RAM。 例如我这里,我的scatter文件名为ADCTest.sct。 然后将原测试程序TQ2440_Test文件夹下的inc和src拷贝到MDK工程的文件夹下。注意,还要把inc文件夹下面的3个XXX.inc文件移动到src文件夹下,保证这三个文件与启动文件2440init.s在同一文件夹里,否则后面编译时会提示文件无法打开或不存在。 把src下所有文件添加到工程里。将2440init.s里面的 AREA Init,CODE,READONLY 改为 AREA RESET,CODE,READONLY。这是为了与scatter文件里面段的名字对应。 还要在每个.s文件里添加PRESERVE8这一句。 [FILE - 2440init.s]: [FILE - 2440slibs.s]:......26 MEND2728 AREA |C$$code|, CODE, READONLY29 PRESERVE830 EXPORT EnterCriticalEnterCritical ...... 在编译前的最后一件事就是把所有的 Image$$RO$$Limit 改为 Image$$ER_ROM1$$RO$$Base Image$$RO$$Limit 改为 Image$$ER_ROM1$$RO$$Limit Image$$RW$$Base 改为 Image$$RW_RAM1$$RW$$Base Image$$ZI$$Base 改为 Image$$RW_RAM1$$ZI$$Base Image$$ZI$$Limit 改为 Image$$RW_RAM1$$ZI$$Limit 这是为了与scatter文件里面的执行域名对应。 做完以上的准备工作后就可以编译了。 编译后在工程所在的文件夹下面会有一个.bin文件。 把TQ2400开发板连上串口和方头的USB(标有host)。 打开SecureCRT,配置好串口的参数并打开串口,把开发板拨到NOR FLASH启动模式并上电,可以看到UBOOT打印出的选项列表。 WINDOWS也会提示有新的USB设备,这时需要手动给开发板USB设备安装驱动,驱动程序在TQ2440的资料里。 之后打开DNW,可以看到软件顶端的显示USB:OK,表示已经DNW已经看到开发板了。 接下来要把刚才编译的程序放到2440的SDRAM里面运行。设置DNW的Address,这个是.bin被传送的目的位置,与scatter文件里的参数一样,把这个地址设为0x30000000。然后在SecureCRT里按7,即告诉UBOOT我们选择了“Download to sdram and run it”,可以看到UBOOT提示正在等待host的传输。之后在DNW中点Transimit,选择刚才的.bin文件。至此程序就在2440的SDRAM里运行了。 如果想在Ubuntu下开发,首先需要安装MINICOM 和 DNW。 具体安装,配置过程参考以下几篇帖子,非常详细。 http://www./Linux/2011-03/32869p2.htm http://blog.csdn.net/mybelief321/article/details/8987658 http://blog.csdn.net/mybelief321/article/details/8987502 注意的是,第一篇帖子里用的DNW工具是用libsub开发的,所以与WINDOWS下不同,这里不需要给开发板装USB驱动了。直接用DNW就可以打开设备。一个不足之处是,用这个DNW下载bin文件时,偶尔会无法传输。 接下来就是安装交叉编译工具arm-linux-gcc。参考下面这一篇帖子 http://blog.sina.com.cn/s/blog_771bd2c901010n22.html 至于如何在UBUNTU下用GCC编译,目前还不会,等这段时间忙完就开始研究。 |
|
来自: goodwangLib > 《TQ2440》