免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1066 | 回复: 0
打印 上一主题 下一主题

ADS中对于C库的初始化设置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览
今天在用ADS调试bootloader的时候发现一个问题,使用atoi()函数的时候,如果输入的参数为3开头的字符串,那么返回的值就是0,输入的参数为1开头的字符串就是正确的,比如输入“303”,那么返回的值为“0”,而输入”123“,返回值就是“123”,很是奇怪,最后调试发现ADS需要对C库进行初始化,不初始化就会出现这些莫名其妙的问题,stdlib.h包含的C库函数都是会出现问题,如果对C库进行初始化就会OK,经过修改和测试,有以下几种方法进行修改:
1、在汇编跳到C得时候,使用如下方法:
         IMPORT    __main
         bl        __main  
        此方法会自动初始化C库
2、在汇编跳到C的时候,在C函数里面进行C库的初始化,方法如下:
#ifdef __cplusplus
extern "C" {
#endif

    int __rt_lib_init(void); //for ADS 1.0
    void xmain(void);

#ifdef __cplusplus
}
#endif
在调用xmain函数之前进行,先调用__rt_lib_init(),这样也可以初始化C库。
3、在C函数里面进行初始化C库
#include <locale.h>
setlocale(LC_ALL,"C");
以上三种方法都是可以对C库进行初始化,初始化之后就可以使用stdlib.h中的函数了。
 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP