主题 : 2440 启动代码详解 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 1154
精华: 1
发帖: 4
金钱: 60 两
威望: 6 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2008-07-27
最后登录: 2009-04-11
楼主  发表于: 2008-07-27 17:33

 2440 启动代码详解

管理提醒: 本帖被 qq2440 执行置顶操作(2009-12-07)
希望对2440的初学者有点帮助!
附件: myled0321.rar (126 K) 下载次数:3389
级别: 新手上路
UID: 1491
精华: 0
发帖: 16
金钱: 160 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-09-03
最后登录: 2009-07-29
1楼  发表于: 2008-11-01 01:15
我读了代码遇到了一个问题
main.c中有如下这段代码:
    #if ADS10 
    __rt_lib_init(); //for ADS 1.0
    #endif

我发现在option.h中ADS10 是定义为TRUE的,这么说调用了__rt_lib_init()这个函数
这是ads安装路径/lib/armlib文件夹下某个库中的函数吗
可是在include/rt_misc.h文件里,函数又是这样声明的
extern __value_in_regs struct __argc_argv
__rt_lib_init(unsigned /*heapbase*/, unsigned /*heaptop*/);
但是main.c中是这样调用的  __rt_lib_init();并没有传进参数
为什么链接的时候不warning一下呢

级别: 新手上路
UID: 1491
精华: 0
发帖: 16
金钱: 160 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-09-03
最后登录: 2009-07-29
2楼  发表于: 2008-11-01 01:25
我在看ads的联机文档之编译手册的时候,看到关于semihosted functions的概念,不是特别明白

书中提到移植代码到开发板上的时候,要避免使用semihosted functions
那么__rt_lib_init() 这样的函数属于semihosted function吗

我把楼主的代码编译链接生成的mylied.bin文件下载到0x30000000的ram中运行成功了
那说明如果main.c中如果真的调用了__rt_lib_init()的话,那这个函数就应该是nonsemihosted function 了吧
这是不是说明了ads安装路径/lib路径下提供的库中的函数并不是所有的都不能直接运用在开发板上的啊?