打印

如何使用ADS编写并调试程序?

[复制链接]
2432|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
edisontang|  楼主 | 2007-9-11 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.用ADS编写一个工程后(代码中包含了一个main入口函数),并将RO设置为0x8000,这样子编译之后就可以下载到sdram中执行吗?

2.我认为要完成1的功能,至少要对sdram进行一些初始化,才能下载到sdram中执行,那这段初始化,是否可以通过AXD的脚本(比如setmem等命令)来实现,还是要把
init.S(这个文件主要是硬件的一些初始化,比如sdram,中断屏蔽等,以及设置各个模式的堆栈,并最后跳入__main入口)一起编译到这个工程中呢?
我是否可以通过AXD的脚本初始化硬件后,然后在ADS中编译自己的程序,然后下载到sdram中执行吗?

3.要执行c语言代码,之前必须要设置堆栈,拷贝RW代码,以及清0 ZI段后,才能跳入到main入口。这个工作在ADS中可以由ADS自己来完成(比如调用_main,_rt_entry,并且在init.S中跳入__main()函数),是否也可以自己写一段初始化,设置
堆栈的代码来实现呢?

4.在ADS中经常有一个分散装载(Scatlerloading)文件,如下:
ROM_LOAD 0x02000000
{
    ROM +0
    {
        init.o (Init, +First)
        anon$$obj.o
        __main.o(!!!)
        * (+RO)
    }
    RAM 0x0
    {
        vectors.o(Vect, +First)
        flash.o
        * (+RW, +ZI)
    }

}

这个文件的具体含义是什么呢?
我是这样理解的:开始所有的代码都存在于0x02000000地址开始的flash空间中,运行时,系统会把vectors.o和flash.o,以及RW,ZI段拷贝到sdram的0x0的空间中,
我这样的理解有什么问题吗?


5.当用户使用分散装载功能的时候,必须重调用_user_initial_stackheap(),这是什么意思呢,为什么需要这么做,如何去做呢?

相关帖子

沙发
te2410| | 2007-9-11 17:43 | 只看该作者

恩,学习啦

使用特权

评论回复
板凳
ayb_ice| | 2007-9-11 18:55 | 只看该作者

去ARM论坛部吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

104

帖子

0

粉丝