分享

将TQ2440的ADS测试程序放到MDK下或Ubuntu下开发

 goodwangLib 2020-01-22

    前几天找同学借了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]:
......
80 IMPORT Main ; The main entry of mon program81 IMPORT RdNF2SDRAM ; Copy Image from Nand Flash to SDRAM8283 AREA RESET,CODE,READONLY84 PRESERVE885 ENTRY86 87 EXPORT __ENTRY__ENTRY......
复制代码
复制代码
[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编译,目前还不会,等这段时间忙完就开始研究。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多